Como alguien que no puede molestarse en mirar sus pentominos para ver si tiene una forma rectangular, he decidido hacerte escribir un programa que lo haga.
Tu tarea
Dada alguna entrada dividida por nuevas líneas que contienen 12 caracteres únicos, decida si es una solución válida.
Una solución válida DEBE
- Tener 5 de cada personaje (excepto las nuevas líneas)
- Cada conjunto de caracteres debe estar completamente conectado
- Cada conjunto de personajes debe tener una forma única
- Estar en una forma rectangular regular
Si es una solución válida, generar un valor verdadero, de lo contrario generar un valor falso.
Su programa puede ser una función o un programa completo, pero debe tomar la entrada de stdin y la salida a stdout.
Casos de prueba
Soluciones 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=-
Configuraciones 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)
Respuestas:
JavaScript (ES6),
237235222 bytes¡2 bytes guardados gracias a @DankMemes !
Uso
Explicación
Un par de notas sobre esta solución:
STDIN
ySTDOUT
para la entrada y salida, peroprompt()
solo están diseñadas para la entrada de una sola línea y mi computadora (Windows) coloca automáticamente\r\n
caracteres en cada nueva línea al pegar, por lo que lo convertí en una función que acepta una cadena.fuente
l=p.indexOf`<newline here>`
para guardar 2 bytes