タクシー数の4乗数をRubyで

タクシー数の4乗数バージョン - りつ缶

まあこんな感じで。

gistbe48edab1b249f27a6d7

考え方

ぱっと思いついたのは、しらみつぶしにパターン列挙してx^4+y^4の結果が同じになるものを調べればいいなぁということで非常に安易な方法だったのだけど、

  1. (1,1)から(300,300)の組をはじめに列挙
  2. (1,2)と(2,1)は組としては同じものなのでペアをつくるときにソートしてuniq!
  3. group_byメソッドx^4+y^4を計算して、同じ値になるものをグループ化
  4. 1組しかないものは捨てて、残ったものが求めるもの

とした。一応リンク先のコードの結果も同じものなので大丈夫なはず。

パーフェクトRuby (PERFECT SERIES 6)

パーフェクトRuby (PERFECT SERIES 6)

初めはGoで書こうかとも思ったけど、範囲オブジェクト使えないのがめんどくさくなって逃げてしまったわ……