継子立て

塵劫記に「継子立て」というお話がある。この話は古く徒然草137段にも見られるという。また,異国でも「ジョセファスの問題」として類似の話があるらしい。検索してみてもデータ構造の演習問題しかヒットしないのだけれど。。。さて,継子立てとは次のような話である。

30人の子どもの中から1人跡継ぎを決めることになった。30人のうち15人は先腹の子,15人は当腹の子である。母親がこの30人を円形に並べる。そしてある1人から順に数えて10人目ごとにはずしていき,最後に残った1人が跡継ぎに当選という趣向である。
ところが実際に始めてみると,はずされていくのは何故か先腹の子どもばかり。一見でたらめに並ばされたかのように見えて,実は母親の悪巧みが巧妙に隠されていたのである。気がついたのが遅かった。次々と先腹の子がオミットされ,もう14人がはずされた。そして,このまま10人数えたら,最後の1人もはずされてしまうという状況が訪れた。
ここで,最後の1人が訴える。
「これではあまりにも一方的。せめて,ここからは私から数え始めなおして欲しい」
この要望に対し,継母は15対1の圧倒的有利な状況に惑わされたのか,うっかり了承してしまう。そして最後に残った先腹の子から数え始めてみると。。。。。。

岩波文庫の注釈を見ると,10人と10人の場合も紹介されている。この配置はちょっと考えればすぐ分かる。ところが,10人と10人の場合は逆転しないのだ。この話,最後に逆転がなければなんにも面白くないではないか?一体何のために10人の場合が紹介されているのか理解できない。
調べてみると逆転する最小値は15人でした。
さて,他に逆転する人数はどんなものになるのか?また10人目ごとでなく違う数であったらどうなるのか,考えてみたいところです。でも,awkで循環リスト構造ってどうやって実現するんだ?明日考えよう。