Como alguém que não pode se incomodar em olhar para seus pentominos para ver se ele tem uma forma retangular, decidi fazer você escrever um programa que faça isso.
Sua tarefa
Dada a entrada dividida por novas linhas contendo 12 caracteres únicos, decida se é uma solução válida.
Uma solução válida DEVE
- Tenha 5 de cada personagem (exceto novas linhas)
- Cada conjunto de caracteres deve estar totalmente conectado
- Cada conjunto de caracteres deve ter uma forma única
- Ter uma forma retangular regular
Se for uma solução válida, emita um valor verdadeiro, caso contrário, emita um valor falso.
Seu programa pode ser uma função ou um programa completo, mas deve levar a entrada de stdin e a saída para stdout.
Casos de teste
Soluções válidas
000111
203331
203431
22 444
2 46
57 666
57769!
58779!
58899!
5889!!
00.@@@ccccF111//=---
0...@@c))FFF1//8===-
00.ttttt)))F1/8888=-
Configurações inválidas
invalid (doesn't contain 12 unique characters)
111112222233333444445555566666
77777888889999900000qqqqqwwwww (Each set has the same shape)
1234567890qw
w1234567890q
qw1234567890
0qw123456789
90qw12345678 (None of the characters are connected)
1234567890qw (Not 5 characters in every set)
1111122222333334444455555666666
77777888889999900000qqqqqwwwwww (More than 5 characters in some sets)
00
0
00.@@@ccccF111//=---
...@@c))FFF1//8===-
.ttttt)))F1/8888=- (Doesn't form a rectangular shape)
Respostas:
JavaScript (ES6),
237235222 bytes2 bytes salvos graças a @DankMemes !
Uso
Explicação
Algumas notas sobre esta solução:
STDIN
eSTDOUT
para entrada e saída, masprompt()
são projetadas apenas para entrada em linha única e o meu computador (Windows) coloca automaticamente\r\n
caracteres em cada nova linha ao colar, então eu fiz uma função que aceita uma string.fonte
l=p.indexOf`<newline here>`
para salvar 2 bytes #