09/12/24 00:30:41
>>35
% Prolog 汎用性の全くない定義。
覆面算_35(O,S,A,K,Y,T) :-
加算表(A,O,K1,O),
(K1=0,加算表(K,T,K2,Y);K1=1,加算表の一(K,T,K2,Y)),
(K2=0,加算表(A,O,K3,K);K2=1,加算表の一(A,O,K3,K)),
(K3=0,加算表(S,Y,K4,O);K3=1,加算表の一(S,Y,K4,O)),
(K4=0,加算表(O,K,0,T);K4=1,加算表の一(O,K,0,T)),
\+(O=S),\+(O=A),\+(O=K),\+(O=Y),\+(O=T),
\+(S=A),\+(S=K),\+(S=Y),\+(S=T),
\+(A=K),\+(A=Y),\+(A=T),
\+(K=Y),\+(K=T),
\+(Y=T).
加算表の一(A,B,C,D) :- 加算表(1,A,K,E),加算表(E,B,C,D).
加算表定義 :-
for(0,M,9),
for(0,N,9),
D is (M+N) // 10,
Mod is (M+N) mod 10,
P=加算表(M,N,D,Mod),
assertz(P),
N=9,
M=9.
:- 加算表定義.