Такузу - логическая игра, в которой вы должны заполнить сетку ячейками, содержащими 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
строки подряд, а столбец 2
содержит три 1
строки подряд, а затем три0
секунды. Следовательно, это недействительная сетка.
Задача:
Ваша задача - создать программу, которая, учитывая двумерный массив n
* n
0
s и 1
s, проверяет доску, чтобы увидеть, является ли она действительной, готовой доской Takuzu.
Примеры:
0011
1100
0101
1010
Эта доска соответствует всем правилам и поэтому является действительной доской Такузу. Вы должны вернуть истинное значение для этого.
11
00
Это недействительная доска - строка 1
не соответствует правилу 2
. Вы должны вернуть значение Falsey для этого.
100110
101001
010101
100110
011010
011001
Это недопустимая доска, она терпит неудачу (только) из-за правила 3 - первая и четвертая строки одинаковы.
110100
001011
010011
101100
100110
011001
Это недействительная доска, она терпит неудачу (только) из-за правила 3 - первый и четвертый столбцы одинаковы.
011010
010101
101100
010011
100110
101001
Это действительная доска.
Правила и характеристики:
- Можно предположить, что все доски имеют квадратные размеры
n * n
, гдеn
положительное и четное число. - Вы можете предположить, что все доски закончены.
- Вы можете принимать входные данные как двумерный массив, содержащий значения, обозначающие
0
и1
, или как строку. - Вы должны вывести согласованные значения truey и falsey для досок truey и falsey, и значения, представляющие «truey» и «falsey», не могут быть одинаковыми.
Это код-гольф , поэтому выигрывает самый короткий код в байтах!