set([_],[_,_,_,_]).
set([_,_],[_,_,_]).
perm([],Seed,Seed,Num,Num):-!.
perm([X|Xs],Seed,Seed2,Num,Result):-
!,
select(X,Seed,Seed1),
Num1 is Num*10+X,
perm(Xs,Seed1,Seed2,Num1,Result).
check(0,[]):-!.
check(0,_):-!,fail.
check(N,Xs):-
X is N mod 10,
N1 is N//10,
select(X,Xs,Xs1),!,
check(N1,Xs1).
sum([],Sum,Sum):-!.
sum([X|Xs],Sum,Result):-
Sum1 is Sum+X,
sum(Xs,Sum1,Result).
search(Num3):-
set(A,B),
Seed=[9,8,7,6,5,4,3,2,1],
perm(A,Seed,Seed1,0,Num1),
perm(B,Seed1,Seed2,0,Num2),
Num3 is Num1*Num2,
check(Num3,Seed2).
main:-
findall(E,search(E),Es),
sort(Es,Es1),
sum(Es1,0,Ans),
write(Ans).
最終更新:2014年12月01日 09:10