# -*- coding: utf-8 -*- # http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%209 # N = 1000 # a < b < c # b + c > a # より a は 1 ... N / 2 puts (1 ... N / 2).reduce(nil) {|res1, a| # a + c > b # a < b < c より # b は a + 1 ... (N - a) / 2 res1 || (a + 1 ... (N - a) / 2).reduce(nil) {|res2, b| res2 || ( # a + b + c == N # より c = N - (a + b) ; # a^2 == b^2 == c^2 # となる組み合わせが答え (a ** 2 + b ** 2 == c ** 2) ? a * b * c : nil ) } }