euler/e004.erl

31 lines
1 KiB
Erlang
Raw Normal View History

2011-09-25 00:48:50 +00:00
% Find the largest palindrome made from the product of two 3-digit numbers.
% A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 99.
% Find the largest palindrome made from the product of two 3-digit numbers.
-module(e004).
-export([
main/1
]).
product(Min, Max) ->
product(Min, Max, Max, Max, 0).
product(Min, _, N1, _, Product) when N1 < Min ->
Product;
product(Min, Max, N1, N2, Product) when N2 < Min ->
product(Min, Max, N1 - 1, Max, Product);
product(Min, Max, N1, N2, Product) ->
P = trunc(N1 * N2),
S = integer_to_list(trunc(N1 * N2)),
R = lists:reverse(S),
if
S == R, P > Product ->
product(Min, Max, N1, N2 - 1, P);
true ->
product(Min, Max, N1, N2 - 1, Product)
end.
main(_) ->
io:format("Largest palindrome product of 2-digit numbers: ~w~n", [product(10, 99)]),
io:format("Largest palindrome product of 3-digit numbers: ~w~n", [product(100, 999)]).