summaryrefslogtreecommitdiff
path: root/lang/prolog/1.8.7/src/puzzle
diff options
context:
space:
mode:
Diffstat (limited to 'lang/prolog/1.8.7/src/puzzle')
-rw-r--r--lang/prolog/1.8.7/src/puzzle24
1 files changed, 24 insertions, 0 deletions
diff --git a/lang/prolog/1.8.7/src/puzzle b/lang/prolog/1.8.7/src/puzzle
new file mode 100644
index 0000000..648beb6
--- /dev/null
+++ b/lang/prolog/1.8.7/src/puzzle
@@ -0,0 +1,24 @@
+ {Solution: 9,5,6,7,0,8,2}
+puzzle:- repeat, permute ((9,8,7,6,5,2,0), SENDMORY),
+ write (SENDMORY),
+ puzzle (SENDMORY, SEND, MORE, MONEY),
+ elan (line),
+ write (SEND), write (+),
+ write (MORE), write (=),
+ write (MONEY).
+
+puzzle([S,E,N,D,O,R,Y], SEND, MORE, MONEY):-
+ SEND IS ((S * 10 + E) * 10 + N) * 10 + D,
+ MORE IS ((10 + O) * 10 + R) * 10 + E,
+ MONEY IS (((10 + O) * 10 + N) * 10 + E) * 10 + Y,
+ MONEY IS SEND + MORE.
+
+permute ([], []).
+permute ([E|X], Z):- permute (X, Y), insert (E, Y, Z).
+
+insert (E, X, [E|X]).
+insert (E, [F|X], [F|Y]):- insert (E, X, Y).
+
+repeat.
+repeat:- repeat.
+