清と濁
更新日記で任意の順序に文字をソートするということで TSNET で話題があったというので、ちょうど mixi でも同じような話題が出ていたなあと見ていた。mixi のは洋服などのサイズ(S, M, L)だった。
で、Ruby で書いてみたというのを試してみてなるほどとちょっと感動していたのだけれど、ふと Ruby1.9.0 で実行してみるとエラーになって止まる。で、そのあたりからいろいろ見ているうちにわかってきた。濁音の処理は一切無視されている。1.9.0 では sprintf("%02d", xx) で、濁音はハッシュに見つからないので nil が返ってきて、それを整数にはできないぞといっているらしい。1.8.7 ではとりあえず 0 にみなしているような。
とりあえず同様に nil だったら 0 にしてもいいのだけれど、そうすると似たような別の文字列を区別できないという問題が生じてしまう。たとえば、サンプルになっている「にんじん」という言葉と「にんげん」という言葉をみたときに、濁音の区別がつかないのでどちらも同じと判断されてしまう。
ということで、濁音を清音に変換するようなハッシュを追加しておくほうがいいのかもしれない。
dakus = "が,14,ぎ,38,ぐ,28,げ,31,ご,33,ざ,37,じ,42,ず,47,ぜ,46,ぞ,18,だ,16,ぢ,8,づ,19,で,35,ど,7,ば,3,び,44,ぶ,32,べ,6,ぼ,5".split(/,/)0.step(dakus.length - 1, 2) { |x|
char[dakus[x]] = dakus[x + 1].to_i
}
もっとも厳密な議論をしていたわけではないようなので、つっこむことでもないかな? と、思わないでもないけれど。
| 固定リンク
コメント