2012年5月13日日曜日

Project Euler-Problem9をgroovyで解いてみる

問題

ピタゴラスの三つ組(ピタゴラスの定理を満たす自然数)とはa<b<cで
a² + b² = c²
を満たす数の組である.

例えば, 3² + 4² = 9 + 16 = 25 = 5²である.

a + b + c = 1000となるピタゴラスの三つ組が一つだけ存在する. このa,b,cの積を計算しなさい.

問題を解いたプログラム

aとbをループでまわして、cは計算で求めてと単純な感じで。無駄にループしてない文そこまで遅くない。
def ret = (1..999).findResult { a->
  ((a + 1) .. 1000).findResult() {b ->
    def c = 1000 - a - b
    if (a * a + b * b == c * c) {
      a * b * c
    }
  }
}
println "ret = ${ret}"