Mae向きなブログ

Mae向きな日記のブログ版。ようやくこちらに移行してきました。

Problem 61

Project EulerProblem 61(日本語)です。
create_hash メソッドでは2つのことをやっています。
まずは、以下のようなhashを作ることです。2桁で始まる4桁の整数とその整数が何角数なのかという情報をもたせています。

{10=>
  [[1035, 3],
   [1081, 3],
   [1024, 4],
   [1089, 4],
   [1080, 5],
   [1035, 6],
   [1071, 7],
   [1045, 8]],
 11=>
  [[1128, 3],
   [1176, 3],
   [1156, 4],
   [1162, 5],
   [1128, 6],
   [1177, 7],
   [1160, 8]],
   …

次に、$octagonal_numbers 配列に八角数を格納しています。これは4桁の整数では八角数の個数が一番少ないので、巡回を探すスタートには適していると判断したからです。

[[1045, 8],
 [1160, 8],
 [1281, 8],
 [1408, 8],
 [1541, 8],
 [1680, 8],
 …

あとは、resovleメソッドを使って再帰的に解を探っていきます。引数のcheckで、使用したn角数をtrueにしていきます。

061.rb