Implemente un solucionador aritmético verbal de varias secuencias iguales de números sumados:
TWO
+ TWO
-----
FOUR
REPEAT
REPEAT
REPEAT
+ REPEAT
--------
ANDSTOP
SPEED
+ SPEED
-------
KILLS
Existen algunas restricciones: cada letra debe representar diferentes dígitos y ninguna letra puede ser cero.
Implemente el solucionador como una función de los operandos, la suma y el número de repeticiones devuelve una lista de soluciones (solución: la tupla del operando resultante y la suma). Por ejemplo:
f(['T','W','O'], ['F','O','U','R'], 2) == [(734, 1468)]
No necesita representar las variables como letras, y no necesita usar un hash en la solución. Búsqueda de fuerza bruta permitida.
El código más corto gana.
Respuestas:
Mathematica
Espacios añadidos para mayor claridad. No mucho golf.
Necesita usar letras griegas porque las letras de entrada se tratan como símbolos.
Uso:
No encontró ninguna solución para SPEED + SPEED + SPEED = KILLS ... ¿eso es un error?
Editar
Permitiendo cero, encuentra las siguientes soluciones para la ecuación SPEED + SPEED + SPEED = KILLS:
Editar
De acuerdo al comentario:
fuente
Pitón
http://ideone.com/4wIQe
fuente
scala:
333289Uso:
fuente
PHP (200)
Esta función tarda mucho tiempo en ejecutarse y utiliza mucha memoria, pero cumple los criterios.
Uso de la muestra:
Explicación sin golf:
Si se nos permite ingresar el operando y la suma como cadenas en lugar de matrices, entonces puedo omitir las operaciones de unión y guardar 20 caracteres para poner el total en 180.
fuente