yooskeh #2142(2007/08/14 05:21 GMT) [ Prolog ] Rating0/0=0.00
?- solve([and, or, not, and]). [true, true, true, true] [true, true, fail, true] [true, fail, fail, true] [fail, true, fail, true] [fail, fail, fail, true] と言う感じです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
solve(Ps) :- forall((tf(Ps, Pt, T, X), solve(Pt, T, Xs)), writeln([X|Xs])). solve([], T, []) :- T, !. solve([P|Ps], T, [X|Xs]) :- tf(Ps, Pt, U, X), ( P = and -> solve(Pt, (T,U), Xs) ; P = or -> solve(Pt, (T;U), Xs) ). tf([not|Ps], Pt, \+T, X) :- !, tf(Ps, Pt, T, X). tf(Ps, Ps, X, X) :- member(X, [true, fail]).
Rating0/0=0.00-0+
[ reply ]
yooskeh #2142() [ Prolog ] Rating0/0=0.00
Rating0/0=0.00-0+
[ reply ]