Su tarea es, dada una cuadrícula cuadrada de dígitos ( 0-9
), generar una de las formas en que los dígitos se pueden agrupar de manera que:
- Cada dígito es parte de exactamente un grupo
- Todos los grupos tienen el mismo número de dígitos.
- Todos los grupos están delimitados por una forma similar a un polígono (esto significa que cada dígito en el grupo está al lado de [izquierda, derecha, arriba, abajo] al menos otro dígito del mismo grupo, a menos que cada grupo tenga 1 elemento).
- Todos los grupos tienen la misma suma.
La cuadrícula de entrada siempre será un cuadrado: puede elegir cualquier método de entrada que desee (incluido el suministro de argumentos a una función o método). Además, la entrada proporcionará la cantidad de grupos en los que su programa debería agrupar los dígitos.
Entrada de ejemplo:
Supongamos que su formato de entrada es stringOfDigits numberOfGroups
.
Un ejemplo de entrada sería:
156790809 3
que se traduciría a (una cuadrícula de sqrt(9) * sqrt(9)
)
1 5 6
7 9 0
8 0 9
que tendrías que dividir en 3 grupos, cada uno de los cuales debería tener 9 / 3 = 3
elementos con la misma suma.
Salida: La salida debe ser la cadena de dígitos, con espacios opcionales y nuevas líneas para formatear, con cada dígito seguido de una letra que a-z
indique su grupo. Debe haber exactamente numberOfTotalDigits / numberOfGroups
elementos en cada grupo. Nunca tendrá que dividir algo en más de 26 grupos.
Salida de ejemplo:
1a 5a 6b
7c 9a 0b
8c 0c 9b
Tenga en cuenta que reemplazar todas las a
s con b
sy b
s con a
s es igualmente válido. Mientras cada grupo se denota con una letra distinta, la salida es válida.
Además, espero que la mayoría de los programas muestren algo similar a esto, porque las nuevas líneas / espacios son opcionales:
1a5a6b7c9a0b8c0c9b
En este caso, agregar todos los dígitos del grupo a
, b
o c
hace 15. Además, todos los grupos están unidos por algún polígono.
Salidas inválidas:
1a 5a 6b
7c 9a 0c
8c 0b 9b
porque los grupos no forman polígonos (específicamente, el 6b
está aislado y 0c
también está solo).
1a 5a 6b
7c 9a 0b
8c 0b 9b
porque el grupo b
tiene 4 elementos mientras que c
solo tiene 2.
Etc.
Si no hay una solución válida, su programa puede hacer cualquier cosa (es decir, detenerse, bloquearse, ejecutarse para siempre), pero si su programa imprime None
cuando no hay una solución válida, -15
a su puntaje.
Si hay más de una solución, solo tiene que imprimir una, pero -20
si su programa las imprime todas separadas por algún delimitador.
Este es el código de golf, por lo que gana el código más corto (con bonificaciones).
156790889 3
parece que debería ser156790809 3
6b
está aislado, no el0b
.