著作一覧 |
向井さんが順序を調べてくださった。defualt > deafult > defautl > defalut
もしかして、元のOKの人は、defualtは見るけどdefalutは見ないという意味で(というこたありえないだろうけど)
ためしてみると、ちょうどaとuの間が左右の切り替えだから、このタイミングで弱い左手小指より強い右手人差し指が先に出てdefualtと逆転するというのが一番多いというのは理にかなっていますね。その一方で、defalutは、左手の人差し指→小指という動きに右手がつられて薬指→人差し指となるわけで、どうも2番手のdeafultよりもありそうな気もするけど。
編集距離というのがわからなかったので調べるとちょっと違うことが書いてあって混乱したけど、向井さんの距離1は1回の交換という意味のようだ。
それはそれとして、なぜこれで距離が求まるんだろう?
def levenstein_distance(s1, s2) d = Array.new(s1.length + 1) {|i| Array.new(s2.length + 1)} d.each_index do |i| d[i][0] = i end d[0].each_index do |j| d[0][j] = j end 1.upto(s1.length) do |i| 1.upto(s2.length) do |j| cost = (s1[i - 1] == s2[j - 1]) ? 0 : 1 d[i][j] = [d[i - 1][j] + 1, d[i][j - 1] + 1, d[i - 1][j - 1] + cost].min end end d[s1.length][s2.length] end if $0 == __FILE__ puts(levenstein_distance('default', 'defualt')) puts(levenstein_distance('default', 'defalut')) puts(levenstein_distance('default', 'defuult')) end#ちゃんと読んだらわかった。なるほどなぁ。
ジェズイットを見習え |
わたしの「編集距離」は定義からすると微妙に間違っています。気分だけ汲んでやってください
いえいえ、編集距離という考え方を知ることが出来たので感謝してます。