# -*- coding: utf-8 -*- # http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2055 # # そのまま.. # palindromic_number?は004.rbより. def palindromic_number?(a) k = (Math.log(a) / Math.log(10)).to_i + 1 if (k == 1) true else a = (0 ... k).map{|i| (a / 10 ** i).to_i % 10 } (0 ... (k / 2).to_i).reduce(true) do |t, i| t && (a[k - i - 1] == a[i]) end end end puts (1 ... 10000).reduce(0) {|count, i| x = i + i.to_s.reverse.to_i count + (50.times.reduce(false){|ret| if (ret) ret else if (palindromic_number?(x)) true else x = x + x.to_s.reverse.to_i false end end } ? 0 : 1) }