|
|
— |
pl:prolog:pllib:riddle [2019/06/27 15:50] (aktualna) |
| ====== Riddle ====== |
| {{tag>puzzle numbers}} |
| ===== Description ===== |
| Program solves riddle showed in riddle1.png. |
| |
| {{:prolog:pllib:riddle1.png|}} |
| |
| Pod każdą z liter należy przypisać cyfre, tak aby równanie było prawdziwe. |
| |
| **Source**: Wiedza i Życie nr 8/200 |
| |
| |
| |
| ===== Download ===== |
| Program source code: {{riddle.pl}} |
| ===== Listing ===== |
| <code prolog> |
| |
| |
| perm([],[]). |
| |
| |
| perm([H|T],X) :- |
| |
| perm(T,Y), |
| |
| append(X1,X2,Y), |
| |
| append(X1,[H|X2],X). |
| |
| |
| wartosc([],0). |
| |
| wartosc([N],N). |
| |
| wartosc([H1,H2|T],N) :- |
| |
| H3 is 10*H1+H2, |
| |
| wartosc([H3|T],N). |
| |
| |
| sumuj([],X,X). |
| |
| sumuj([H|T],X,Y) :- |
| |
| wartosc(H,N), |
| |
| X1 is X+N, |
| |
| sumuj(T,X1,Y). |
| |
| sumuj(X,Y) :- |
| |
| sumuj(X,0,Y). |
| |
| |
| main([A,C,E,I,L,N,S,T,W,Z]) :- |
| |
| perm([C,E,I,S,W],[1,3,5,7,9]), |
| |
| perm([A,L,N,T,Z],[0,2,4,6,8]), |
| |
| sumuj([ [C,Z,A,S], |
| |
| [N,I,E], |
| |
| [L,A,T,A], |
| |
| [W,C,A,L,E], |
| |
| [A,L,E], |
| |
| [L,E,C,I]],X), |
| |
| |
| wartosc([S,T,A,L,E], X). |
| |
| </code> |
| |
| ===== Comments ===== |
| |