carlos
Un ejemplo popular de un rompecabezas cripto-aritmético es
DONALD
+ GERALD
ROBERT
El problema aquí es asignarle dígitos decimales a cada unade las letras D, O, N, etc. de manera que la suma sea válida. Todas las letras deben tener asignado un dígito diferente, de otra forma la solución trivial del problema es que todas las letras seaniguales a cero.
Aquí se definió la siguiente relación
sum(N1, N2, N)
donde N1, N2 y N representan los tres valores para el rompecabezas cripto-aritmético. La meta de sum(N1, N2, N) esverdadera cuando los dígitos asignados a las letras demuestran que N1 + N2 = N.
El primer paso para encontrar la solución es decidir como representar los números N1, N2 y N en el programa. Una forma dehacerlo es representar cada número como una lista de dígitos decimales. Por ejemplo el número 225 podría representarse como la lista [2,2,5]. Como estos dígitos no son conocidos desde un principio,una variable no instanciada puede almacenar cada dígito. Usando esta representación, el problema puede representarse como sigue:
[D,O,N,A,L,D]
+ [G,E,R,A,L,D]
[R,O,B,E,R,T]
Latarea es encontrar una instancia de las variables D,O,N, etc. para la cuál la suma es válida. Cuando la relación sum está programada el rompecabezas puede ser representado en Prolog por medio delpredicado:
sum([D,O,N,A,L,D],[G,E,R,A,L,D],[R,O,B,E,R,T])
Para definir la relación de suma en una lista de dígitos, tenemos que definir las reglas actuales para la relación de suma en el sistemadecimal. La suma es hecha dígito por dígito empezando por los dígitos de más a la derecha, continuando hacia la izquierda y tomando en cuenta el acarreo de dígitos a la derecha, es necesarios tambiénmantener un conjunto de los dígitos disponibles, esto es, los dígitos que no han sido usados para instanciar a las variables encontradas. Por lo general a un lado de los tres números N1, N2 y N ,...
Regístrate para leer el documento completo.