プロジェクトオイラー問24

http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2024
Problem 24 「辞書式順列」 †
0,1,2,3,4,5,6,7,8,9を一つずつ全部使って辞書順に並べたとき100万番目に来る数を答えよ。

fact(1,1):-!.
fact(N,Result):-
 	N1 is N-1,
	fact(N1,Re),
	Result is Re*N.

search([X],_,_):-!,
	write(X).
search(Xs,No,Turn):-
	fact(Turn,R),
 	Turn1 is Turn-1,
	Pos is No // R,
 	No1 is No mod R,
 	nth0(Pos,Xs,E),
	select(E,Xs,Xs1),
	write(E),
	search(Xs1,No1,Turn1).
main:-
	No is 1000*1000-1,
	search([0,1,2,3,4,5,6,7,8,9],No,9).
最終更新:2014年11月30日 03:31