Problem 4
左右どちらから読んでも同じ値になる数を回文数という。 2桁の数の積で表される回文数のうち、最大のものは 9009 = 91 × 99 である。
では、3桁の数の積で表される回文数のうち最大のものはいくらになるか。
Strategy
Brute Force
文字列反転について
はじめ思いついたのはこれ。
String::reverse = -> r = "" for c in this r = c + r r
あまり上手な方法ではないので検索をかけたら次のコードが複数のサイトで見つかった。定石っぽい。
String::reverse = -> @.split("").reverse().join("")
Solution
palindrome ?= (list) -> list == list.reverse() Array::max = -> Math.max.apply Math, this String::reverse = -> @.split("").reverse().join("") list = [] for x in [100..999] for y in [100..999] if palindrome? (x*y).toString() list.push(x*y) console.log list.max()
わからないこと
二重ループを配列内包で書きたいのだけどどうしたらいいのだろ…
順路:CoffeeScriptでProject Euler #5
逆路:CoffeeScriptでProject Euler #3