图片
Baru-baru ini saya memainkan teka-teki silang digital yang disebut "Lukisan Logika". Di permukaan, ini hanya melukiskan kisi-kisi berdasarkan baris demi baris angka, namun sebenarnya menyembunyikan sistem batasan numerik yang efisien. Sebagai pemain strategi inti, saya langsung membongkar logika yang mendasarinya dan menemukan bahwa selama saya menguasai beberapa aturan numerik, kecepatan memecahkan teka-teki bisa berlipat ganda.
Mari kita bicara tentang struktur numerik inti terlebih dahulu: angka-angka di setiap baris dan kolom mewakili panjang kotak hitam kontinu, dan urutannya dari kiri ke kanan atau atas ke bawah. Asumsikan lebar grid adalah N dan angka-angka dalam satu baris adalah [a1, a2, ..., ak], maka jumlah sel yang ditempati oleh angka-angka tersebut adalah a1+a2+...+ak, dan paling sedikit diperlukan 1 spasi kosong di antara angka-angka tersebut (total k-1), sehingga total panjang yang dibutuhkan = jumlah + (k-1). Jika nilainya lebih besar dari N, berarti kombinasi angka saat ini tidak dapat ditentukan dan langsung dihilangkan. Sebaliknya, jika jumlah + (k-1) = N, maka hanya ada tepat 1 angka kosong di antara angka-angka tersebut, dan semua grid terpaksa ditentukan, yaitu keadaan "pengisian penuh".
Langkah pertama dari strategi optimal: pindai dulu baris atau kolom yang jumlahnya + (k-1) = N, Anda dapat langsung mengisi semua kisi yang sesuai dan mengatur interval kosong. Hal ini dapat dengan cepat membuat beberapa sel yang teridentifikasi dan memberikan titik acuan untuk penalaran silang.
Langkah kedua adalah menggunakan "metode tumpang tindih". Bila nilai suatu bilangan tertentu besar, misalnya panjang garis 10 dan bilangan [7], maka kemungkinan posisi awal dari 7 kisi yang berurutan adalah 1 sampai 4 (karena ujungnya tidak boleh melebihi 10). Di antara 7 grid ini, posisi 4 hingga 7 (yaitu, akhir dari posisi awal 1 dan awal dari posisi awal 4 tumpang tindih) akan dicat apa pun yang terjadi - metode penghitungannya adalah: rentang posisi awal = [1, N - a + 1], interval tumpang tindih = [maks(1, minimum awal + a - 1), min(N, maksimum awal + a - 1)]. Intinya adalah menggambar suatu jarak dan menemukan titik potongnya. Menggambar kisi-kisi jenis ini yang harus dicat terlebih dahulu sama dengan mengunci petunjuk kunci.
Langkah ketiga adalah pengurangan numerik. Setelah baris atau kolom ditentukan sebagian, jumlah sel tersisa yang belum terselesaikan dapat diperbarui dan ruang kombinasi dari angka yang tersisa dapat dihitung ulang. Misalnya, jika suatu garis sudah mempunyai 1 garis yang dihitamkan dan jumlahnya [2,1], maka ruang yang tersisa perlu dialokasikan kembali dan posisi yang tersisa yang dihitamkan dapat langsung disimpulkan.
Setelah pengujian sebenarnya, menurut proses penghitungan numerik ini, kecepatan penyelesaian rata-rata teka-teki 20x20 dapat dipersingkat lebih dari 40%, yang sangat cocok untuk level dengan "tumpukan angka" yang padat. Ngomong-ngomong, seni piksel yang dihasilkan oleh gambar-gambar tersembunyi di dalam game ini sangat indah. Saya bahkan memotong gambar yang diambil dan menggunakannya sebagai avatar, yang merupakan bonus tak terduga 😂