Comparing two numbers written in index form like 211 and 37 is not difficult, as any calculator would confirm that 211 = 2048
37 = 2187.
However, confirming that 632382518061
519432525806 would be much more difficult, as both numbers contain over three million digits.
Using base_exp.txt (right click and 'Save Link/Target As...'), a 22K text file containing one thousand lines with a base/exponent pair on each line, determine which line number has the greatest numerical value.
NOTE: The first two lines in the file represent the numbers in the example given above.
p99()->
File=binary_to_list(element(2,file:read_file("base_exp.txt"))),
Data=lists:map(fun(L)->
Line=string:strip(L),
[A,B]=string:tokens(Line,","),
{list_to_integer(A),list_to_integer(B)}
end,string:tokens(File,"\r\n")),
p99(1,Data,0,0).
p99(_,[],BestLine,_)->io:format("~w~n",[BestLine]);
p99(LineNum,[{Base,Exp}|Rest],BestLine,BestValue)->
MyVal=Exp*math:log(Base),
case MyVal > BestValue of
true->
p99(LineNum+1,Rest,LineNum,MyVal);
false->
p99(LineNum+1,Rest,BestLine,BestValue)
end.
def p99
vals=File.read("base_exp.txt").split("\n").map{|l|l.split(",").map{|i|i.to_i}}.map{|p|p[1]*Math.log(p[0])}
puts 1+vals.index(vals.max)
end