Takuzu adalah gim logika tempat Anda harus menyelesaikan kisi dengan sel yang berisi 0
s dan 1
s. Kisi harus mengikuti 3 aturan:
- Tidak ada tiga sel berturut-turut horisontal atau vertikal yang bisa sama.
- Harus ada jumlah
0
s dan1
s yang sama di setiap baris dan kolom. - Tidak ada dua baris yang bisa sama, dan tidak ada dua kolom yang bisa sama.
Mari kita lihat kisi-kisi yang sudah jadi:
0011
1100
0101
1010
Seperti yang Anda lihat, forum ini mengikuti aturan 1
, 2
dan 3
. Tidak ada tiga sel horizontal atau vertikal yang sama, semua baris dan kolom berisi jumlah 0
s dan 1
s yang sama, dan tidak ada dua baris dan tidak ada dua kolom yang sama.
Mari kita lihat kisi yang tidak valid:
110100
010011
011010
101100
100011
001101
Ada banyak masalah dengan kisi ini. Misalnya, baris 5
memiliki tiga 0
s berturut-turut, dan kolom 2
memiliki tiga 1
s berturut-turut, diikuti oleh tiga 0
s. Karenanya, ini bukan kisi yang valid.
Tugas:
Tugas Anda adalah untuk membuat program yang, mengingat array 2D n
* n
0
s dan 1
s, memverifikasi papan untuk melihat apakah itu, selesai papan Takuzu valid.
Contoh:
0011
1100
0101
1010
Papan ini mengikuti semua aturan, dan karenanya merupakan papan Takuzu yang valid. Anda harus mengembalikan nilai kebenaran untuk ini.
11
00
Ini bukan baris board yang valid 1
tidak mengikuti aturan 2
. Anda harus mengembalikan nilai falsey untuk ini.
100110
101001
010101
100110
011010
011001
Ini bukan papan yang valid, ini gagal (hanya) karena aturan 3 - baris pertama dan keempat adalah sama.
110100
001011
010011
101100
100110
011001
Ini bukan papan yang valid, ini gagal (hanya) karena aturan 3 - kolom pertama dan keempat adalah sama.
011010
010101
101100
010011
100110
101001
Ini adalah papan yang valid.
Aturan dan Spesifikasi:
- Anda dapat mengasumsikan bahwa semua papan adalah kuadrat dimensi
n * n
, di manan
bilangan bulat genap positif. - Anda dapat mengasumsikan bahwa semua papan sudah selesai.
- Anda dapat mengambil input sebagai array 2D yang berisi nilai yang menandakan
0
dan1
, atau sebagai string. - Anda harus menampilkan nilai-nilai kebenaran dan falsey yang konsisten untuk papan kebenaran dan falsey, dan nilai-nilai yang mewakili "kebenaran" dan "falsey" tidak boleh sama.
Ini adalah kode-golf , jadi kode terpendek dalam byte menang!