和文のtomo

今日はなかなか進んだカモ〜。
採点アルゴリズムは昨日の晩からずっと考えていたけれども、結局大したものは思い浮かばず・・・。複雑なミスの仕方(後述)になるとなかなか上手く採点できない。アルゴリズム自体を複雑にしていけばこちらが想定する複雑なミスには対応できるかもしれないが、逆に言えばそれ以外のミスには対応できなくなり、それに対応するために・・・と無限ループ。


再帰とか使って楽に作れないかな〜と考えてみてもなかなか思い浮かばず。結局は誰でも思いつく、下のような感じに。


課題:『 平成16年8月31日付』
入力:『 平成年8月31日付』


採点の仕方は基本的には順々に比較位置をずらしていくだけで、
1.はじめは0文字目と0文字目。
2.次は1文字目と1文字目・・・とすべて正しければなんの問題もない。
3.そして、上の場合『1』と『年』では違うので、課題のほうから最も近い『年』を探すと同時に入力のほうから最も近い『1』を探す。
4.先に課題の方から『年』を見つけることが出来るので2文字脱字してることがわかる。


少し複雑になると
課題:『 平成16年8月31日付 毎日新聞社説より引用』
入力:『 平成あああ年8月31日付 毎日新聞社説より引用』


1.『1』と『あ』までは一緒。ここで上と同様に『1』を下から探し、『あ』を上から探す。
2.先ほどまでの方法だと31日付の『1』が下から見つかるのでそこまでの文字を誤字+余字と認識(『年8月3』も誤字にされる)
3.さらに、このあとは16の『6』と日付の『日』を比較していくが、ずれているのでもちろんそのあとは大混乱である。
4.これを回避するために簡単な重み付け。今回のような場合は本来16の『1』を探すはずがそれを抜かしているので『31』の1を『16』の1と認識してしまった。それが正しいかどうかはそのあとの文字列をあらかじめ比較してみれば大体分かる。
5.つまり、『6』と『日』から両方の比較位置をいくつかずらして行ってどれくらい合ってるかを確かめれば、認識した位置が間違っていたことがわかる。
6.そのあとはまたいろいろと・・・(汗


こんな感じで『とりあえず』使えるレベル。僕自身腑に落ちないので、もうちょい頑張りたいところ。


とりあえず、ここはこれくらいにしといて、あとは
・終了時のミス入力の色変更。
・入力文字数のグラフ表示。
・練習実績をファイルに記録。
・練習実績の参照。
くらいか。多いorz
でも、色変更の方法もさっき見つけたのでそろそろつまらずにいけそうかな♪