to_list(0,[]):-!.
to_list(N,[X|Xs]):-
X is N mod 10,
N1 is N//10,
to_list(N1,Xs).
dell([],Seed,Seed):-!.
dell([X|Xs],Seed,Result):-
select(X,Seed,Seed1),
!,
dell(Xs,Seed1,Result).
check(_,N,[],Con,Con):-N>1,!.
check(_,_,[],Con,Con):-!,fail.
check(Num,N,Seed,Con,Result):-
N1 is N+1,
Num1 is Num*N,
to_list(Num1,List),
dell(List,Seed,Seed1),
reverse(List,ListR),
append(Con,ListR,Con1),
check(Num,N1,Seed1,Con1,Result).
search(Con):-
between(1,9999,Num),
check(Num,1,[1,2,3,4,5,6,7,8,9],[],Con).
main:-
findall(E,search(E),Es),
sort(Es,Es1),
reverse(Es1,[Ans|_]),
write(Ans).
最終更新:2014年12月03日 10:39