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

http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%204
Problem 4 「最大の回文積」 †
左右どちらから読んでも同じ値になる数を回文数という. 2桁の数の積で表される回文数のうち, 最大のものは 9009 = 91 × 99 である.

では, 3桁の数の積で表される回文数の最大値を求めよ.

Haskell解法
maximum $ filter (\ z-> show z==((reverse . show) z)) $ [x*y|x <- [100..999],y <- [100..999]]

Prolog解法
set([],_):-!.
set([X|Rest],Nums):-
	member(X,Nums),
	set(Rest,Nums).

to_num([],Sum,Sum):-!.
to_num([X|Xs],Sum,Result):-
	Sum1 is Sum*10+X,
	to_num(Xs,Sum1,Result).

main:-
	A=[X,Y,Z,Z,Y,X],
	Nums=[9,8,7,6,5,4,3,2,1,0],
	set(A,Nums),
	[Top|_]=A,
	Top>0,
 	to_num(A,0,Num),
	between(100,999,D),
	Num mod D=:=0,
	T1 is Num // D,
	100=<T1,
	T1=<999,
	!,
	write(Num).
最終更新:2018年04月18日 06:56