Project Euler 44
Project Euler 44はpentagonal numbersの問題。思い切り力技、かつ抽象度が高い感じ。コードは短く、ほぼ問題文をそのまま書いただけと分かりやすいけど、とにかく遅い。7、8分かかってやっと答えが出た。
直感的に最初に出てくるペアが最小だと思って、実際それで正解だったけど、厳密にそうが言えるのかどうかは、よく分からない。
def penta(n) n * (3 * n - 1) / 2 end p = (1..3000).map{|i| penta(i)} p.combination(2) do |pair| if (p.include?(pair[0] + pair[1]) && p.include?(pair[1] - pair[0]) ) then p pair end end