しりとりプログラム考察 考え方 「るすばん」のように最後に「ん」が付く場合と次の言葉が捜せない場合の 2種類あることがわかった。つまり最後が「ん」で終わるためには「あいーん」 「いけめん」「うどん」「えーもん」「おじいさん」のように「あーを」で始まり 「ん」で終わる言葉が絶対にないといけない。 まずそれを探すところからはじめないといけないかな? まあ9万語あるし、50音なのでたぶんあると思う。あるだろう、 あるという前提で作ろう。 ●つぎに頭文字とお尻文字の分類である。 頭文字の50音に対しお尻文字の50音の分類をしなきゃいけないきがする。 頭文字=お尻文字、、たとば「しんぶんし」「りりあんかざり」「こだいこ」のような文字は 「はだし」ー>「しまうま」と続くとき 「はだし」−>「しんぶんし」ー>「しまうま」となっても次の言葉には影響がなく文字数が伸びる。 つまりTVでやっていたように「しりとり」の次は「り」で始まって「り」で終わる言葉が来るのはアルゴリズム的に 正しいのであろう。 これはこれで50音分の50セット作ることになる。 問題はその先である。 思ったのだが、、さらに頭文字=お尻文字を作るといいのでは?である。 「しんぶんし」と(「しまうま」ー>「まくらのそうし」)は同じである。 しかしやりすぎると、そのセットを作るのに語をたくさん作ってしまい。 それらをくっつける役目の語がなくなる。この調整が難しいのかもしれない。 「しんぶんし」と「しまうま」−>「まくらのそうし」は同じだ。これは2語のセット。さらに3語のセット4語のセット といくことになる つまりアルゴリズム的に 「しりとり」−>「りんご」 があると 「しりとり」−>「りんじだいり」ー>「りんご」 と頭文字=お尻文字語が挿入され 「しりとり」−>「りんじだいり」ー>(「りぼんのきし」−>「しぼり」)ー>「りんご」 と、2語頭文字=お尻文字が挿入されていく。そして3語頭文字=お尻文字。4語、、、と増えていくのでは? というアルゴリズムを思いついたのである。 おお、これはすでに「しりとり」ではないぞ。挿入遊びだ。 さらにさらに、最後は「ん」の言葉しか選べなくなったとして。「るすばん」で終わったとしよう。 使用していない語を挿入できるかもルーチンがあるじゃないか。 「しりとり」ー>「りんご」ー>「ごるふ」−>「ふりる」−>「るすばん」 で終わったとしよう。 あまった語を2語づつセットする。 たとえば「ふうすい」「いびる」があったとする。 すると、、、「ふりる」と同じ価値であり、「ふりる」と交換でき 「しりとり」ー>「りんご」ー>「ごるふ」−>「ふうすい」ー>「いびる」−>「るすばん」 と増やせるじゃないか。 で、「ふりる」はあまった語入れに入れておく。 これを繰り返すと、かなりいけるのでは?と思う。
プログラム編 これをじっさいのプログラムに直してみる。 処理を簡単にするためにファイルにわけることにする。 大元のファイルが有るとすると。 1語頭文字=お尻文字のファイル 2語頭文字=お尻文字のファイル 最後が「ん」の語のファイル 残りの語のファイル の4つにわけることができる。 只今処理中だが75時間かかる計算だ(笑) なにが時間食うって2語頭文字=お尻文字である。 9万語全部X9万語ループでマッチングをとっているので。 頭のいいみなさんは 頭文字+お尻文字 という簡単化して さらに「あーを」でわけるともっと処理がはやいぞ。 2004/3/5