何かを書き留める何か

数学や読んだ本について書く何かです。最近は社会人として生き残りの術を学ぶ日々です。

Project Euler Problem 4

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.

 
 
回文になっている数を回文数という。3桁の整数2つをかけて得られる回文数の中で最大のものを見つける問題。2桁の場合は9009=91*99が最大であることが例として挙げられている。
3桁の整数をfor文で回すのはいいとして回文を判定する函数を用意する必要がある。Pythonなら比較的簡単に書ける。
----
def is_palindrome(moji):
    return True if moji == moji[::-1] else False

print max([ x * y for x in xrange(100,1000) for y in xrange(100,1000) \
      if is_palindrome(str(x * y))])
----
今回のポイントはリストのスライスである。
スライスについては各自調べてもらうことにして、意味としてはリストの最初から最後まで-1ステップ、つまり逆向きに出力するという具合である。
 
さて、回文は英語でpalindromeという。Palindromeというとモンティパイソンの「死んだオウム」スケッチが思い浮かぶ。
第1シーズン第8話の、モンティパイソンを代表するスケッチである。
 
----
Praline     I understand that this is Bolton.
Shopkeeper     Yes.
Praline     Well, you told me it was Ipswich.
Shopkeeper     It was a pun.
Praline     A pun?
Shopkeeper     No, no, not a pun, no. What's the other thing which reads the same backwards as forwards?
Praline     A palindrome?
Shopkeeper     Yes, yes.
Praline     It's not a palindrome. The palindrome of Bolton would be Notlob. It don't work.
----