ScalaでProject Euler(63)

Problem 35

1 3 1 7 1 3 1 3 1 9

これを、1とそれ以外を合体して一つのブロックと考えましょう。そうすると、

13 17 13 13 19

これに順番をつけましょう。コードの都合上0からつけます。

0 1 0 0 2

これでわかりやすくなりましたが、さらに同じことを繰り返して、

01 002

1 0

というように再帰的に「回転最小」かどうかを判定することができます。この逆をたどれば「回転最小」を生成することができるはずです。