Takuzu - це логічна гра, в якій вам доведеться заповнити сітку з клітинками, що містять 0
s і 1
s. Сітка повинна відповідати 3 правилам:
- Немає трьох горизонтальних або вертикальних послідовних комірок не може бути однаковим.
- У кожному рядку та стовпці повинно бути однакове число
0
s і1
s. - Жоден два рядки не можуть бути однаковими, і жоден два стовпці не можуть бути однаковими.
Давайте розглянемо готову сітку:
0011
1100
0101
1010
Як бачите, ця рада дотримується правила 1
, 2
і 3
. Немає трьох горизонтальних чи вертикальних комірок, які однакові, усі рядки та стовпці містять однакову кількість 0
s і 1
s, і жодних двох рядків та двох стовпців немає однакових.
Давайте розглянемо сітку, яка не є дійсною:
110100
010011
011010
101100
100011
001101
З цією сіткою є маса проблем. Наприклад, рядок 5
має три 0
s підряд, а стовпець 2
- три 1
s підряд, а потім три 0
s. Тому це не дійсна сітка.
Завдання:
Ваше завдання - скласти програму, яка, даючи 2D масив n
* n
0
s і 1
s, перевіряє плату, щоб переконатися, що це дійсна, закінчена плата Takuzu.
Приклади:
0011
1100
0101
1010
Ця рада дотримується всіх правил, тому є дійсною дошкою Takuzu. Ви повинні повернути для цього значення "truthy".
11
00
Це не дійсна дошка - рядок 1
не відповідає правилу 2
. Ви повинні повернути для цього значення фальси.
100110
101001
010101
100110
011010
011001
Це не дійсна дошка, вона виходить з ладу (лише) через правило 3 - перший і четвертий рядки однакові.
110100
001011
010011
101100
100110
011001
Це не дійсна дошка, вона виходить з ладу (лише) через правило 3 - перший і четвертий стовпці однакові.
011010
010101
101100
010011
100110
101001
Це дійсна дошка.
Правила та характеристики:
- Можна припустити, що всі дошки мають квадратні розміри
n * n
, деn
додатне парне ціле число. - Можна припустити, що всі дошки закінчені.
- Ви можете взяти введення в масиві 2D , що містять значення означають
0
і1
, або у вигляді рядка. - Ви повинні виводити послідовні значення truthy та falsey для truthy та falsey дощок, а значення, що представляють "truthy" та "falsey", не можуть бути однаковими.
Це код-гольф , тому найкоротший код у байтах виграє!