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 = 3elementos 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-zindique su grupo. Debe haber exactamente numberOfTotalDigits / numberOfGroupselementos 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 as con bsy bs con as 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, bo chace 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 6bestá aislado y 0ctambién está solo).
1a 5a 6b
7c 9a 0b
8c 0b 9b
porque el grupo btiene 4 elementos mientras que csolo 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 Nonecuando no hay una solución válida, -15a su puntaje.
Si hay más de una solución, solo tiene que imprimir una, pero -20si 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).

6bestá aislado, no el0b.156790889 3parece que debería ser156790809 3Respuestas:
Pyth , 122-20-15 = 87
Cambios:
130 -> 120: Cambiado a entrada separada de nueva línea.
120 -> 134: Se corrigió un error que involucraba a grupos que no tenían un tamaño igual a la longitud lateral de la matriz.
134 -> 120: Imprime todas las soluciones, incluidas las equivalentes en el cambio de nombre de grupo.
120 -> 122: se corrigió un error en el que solo se generarían rutas, en lugar de todos los grupos legales.
Prueba de funcionamiento:
Explicación:
fuente
JavaScript (ES6) 361 (376-15)
372(Tal vez todavía se pueda jugar un poco más)
Como función, el primer parámetro es la cadena de dígitos y el segundo parámetro es el número de grupos.
Es una búsqueda recursiva ingenua, deteniéndose en la primera solución encontrada (sin bonificación de -20).
Necesita algunos casos de prueba más para verificar el rendimiento en una entrada más grande.
No golfista y explicado
Prueba en la consola FireFox / FireBug
F("156790809",3)salida1c5c6b7a9c0b8a0a9bF("156790819",3)salidaNonefuente