Takuzu é um jogo de lógica no qual você precisa completar uma grade com células contendo 0
s e 1
s. A grade deve seguir 3 regras:
- Não há três células consecutivas horizontais ou verticais que podem ser iguais.
- Tem de haver um número igual de
0
s e1
s em cada linha e coluna. - Não há duas linhas iguais, nem duas colunas iguais.
Vejamos uma grade finalizada:
0011
1100
0101
1010
Como você pode ver, este quadro segue a regra 1
, 2
e 3
. Não há três células horizontais ou verticais, que são os mesmos, todas as linhas e colunas contêm um número igual de 0
s e 1
s, e não há duas filas e duas colunas não são o mesmo.
Vejamos uma grade que não é válida:
110100
010011
011010
101100
100011
001101
Há muitos problemas com essa grade. Por exemplo, a linha 5
possui três 0
s em uma linha e a coluna 2
possui três 1
s em uma linha, seguidos por três 0
s. Portanto, essa não é uma grade válida.
Tarefa:
Sua tarefa é fazer um programa que, dada uma matriz 2D de n
* n
0
s e 1
s, verifica a placa para ver se é uma placa válida, acabado Takuzu.
Exemplos:
0011
1100
0101
1010
Este fórum segue todas as regras e, portanto, é um conselho válido da Takuzu. Você deve retornar um valor verdadeiro para isso.
11
00
Este não é um quadro válido - a linha 1
não segue a regra 2
. Você deve retornar um valor falsey para isso.
100110
101001
010101
100110
011010
011001
Este não é um quadro válido; ele falha (somente) devido à regra 3 - a primeira e a quarta linhas são as mesmas.
110100
001011
010011
101100
100110
011001
Este não é um quadro válido; ele falha (somente) devido à regra 3 - a primeira e a quarta colunas são as mesmas.
011010
010101
101100
010011
100110
101001
Este é um quadro válido.
Regras e especificações:
- Você pode assumir que todas as placas são quadradas de dimensões
n * n
, onden
é um número inteiro positivo. - Você pode assumir que todas as placas estão concluídas.
- Você pode receber a entrada como uma matriz 2D contendo valores significando
0
e1
, ou como uma sequência. - É necessário gerar valores consistentes de truthy e falsey para placas de truthy e falsey, e os valores que representam "truthy" e "falsey" não podem ser os mesmos.
Isso é código-golfe , então o código mais curto em bytes vence!