5年問題 に取り組む代わりに、こんな問題をくれました。
1 → 1 1 → 1 2 → 1 1 2 1 → 1 2 2 1 1 1 → 1 1 2 2 1 3 → 1 2 2 2 1 1 3 1 → 1 1 2 3 1 2 3 1 1 1 のとき、次はどんな数列になるしょう。
Squeak の Smalltalk で書くと、こんな感じ(ネタバレ注意)。
| prevArray |
prevArray _ #(1).
^ Array streamContents: [: s |
((RunArray newFrom: prevArray)
runsAndValuesDo: [: r : v | s nextPut: v; nextPut: r])]