seed([_]).
seed([A,A]).
seed([A,_,A]).
seed([A,B,B,A]).
seed([A,B,_,B,A]).
seed([A,B,C,C,B,A]).
set_num([],Num,Num):-!.
set_num([X|Xs],Num,Result):-
member(X,[0,1,2,3,4,5,6,7,8,9]),
Num1 is Num*10+X,
set_num(Xs,Num1,Result).
to_bit2(0,[]):-!.
to_bit2(N,[B|Bits]):-
N1 is N//2,
B is N mod 2,
to_bit2(N1,Bits).
search(Num):-
seed([Top|Rest]),
member(Top,[1,2,3,4,5,6,7,8,9]),
set_num([Top|Rest],0,Num),
to_bit2(Num,List),
reverse(List,List).
sum([],Sum,Sum):-!.
sum([X|Xs],Sum,Result):-
Sum1 is Sum+X,
sum(Xs,Sum1,Result).
main:-
findall(E,search(E),Es),
sum(Es,0,Ans),
write(Ans).
最終更新:2014年12月03日 09:47