とんちゃんといっしょ

Cloudに関する技術とか日常とかについて書いたり書かなかったり

Problem 4

問題

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.

http://projecteuler.net/index.php?section=problems&id=4
日本語

左右どちらから読んでも同じ値になる数を回文数という。 2桁の数の積で表される回文数のうち、最大のものは 9009 = 91 × 99 である。

では、3桁の数の積で表される回文数のうち最大のものはいくらになるか。

http://odz.sakura.ne.jp/projecteuler/index.php?Problem%204

解説

いい解法が思いつかなかったので単純に実装。
とりあえず大きい方から順にかけていき、かけた数をto_sでStringに変更。
変更したStringをString#reverseと比較して回文数かどうかを確認し最大のものを出力。

ソースコード(Ruby)

min = 1
palindromic = 0
999.downto(1){|i|
    i.downto(min){|j|
        pal = (i * j).to_s
        if pal == pal.reverse
            if palindromic < pal.to_i
                palindromic = pal.to_i
                min = j if min < j
            end
            break
        end
    }   
}   
p palindromic