2014年06月26日

二ホソゴハホソ卜二ムズ力ツイ

「コンピューターは得意」と自称するなら”「二ホソゴハホソ卜二ムズ力ツイ」の中に間違いは何文字あるでしょう?”程度の問題には即座に3通りぐらいの解法を思いつかないとダメでしょう。
でも、diffで比較しようと思っても普通のdiffは多バイト対応してない、とか結構厄介だったりするんですよね。
漢字コードとか多バイト対応とか日本語は本当に難しい。

KさんはExcelのMID関数を使ってサクッと解いてくれました。
--
セル A1 に、「ニホンゴハホントニムズカシイ」
セル B1 に、「二ホソゴハホソ卜二ムズ力ツイ」
として
セル A2 〜 セル A15 に、1 〜 14 を入れておく。
(追記:Excelの小技 1,2を入れたセルを選択してセルの右下の小さな四角をドラッグすると連続した数字が簡単に入力できます)
セル B2 に、
=IF( MID(A$1,A2,1)=MID(B$1,A2,1) , 0 , 1 )
を入れて、あとは下へコピー。
=SUM(B2:B15)
が間違っている数。
--

私は、xcodeがいつも立ち上がってるのでobjectiveCでサクッと
--
NSString *str1 = @"ニホンゴハホントニムズカシイ";
NSString *str2 = @"二ホソゴハホソ卜二ムズ力ツイ";
int i,unmatch;
unmatch = 1;
for(i=0; i < [str1 length];i++) {
if (!([[str1 substringWithRange:NSMakeRange(i, 1)] isEqualToString:[str2 substringWithRange:NSMakeRange(i, 1)]])) {
NSLog(@"%@,%d",[str1 substringWithRange:NSMakeRange(i, 1)],unmatch);
++unmatch;
}
}
--
実行結果
2014-06-26 11:01:37.996 nihongo[13290:90b] ニ,1
2014-06-26 11:01:37.997 nihongo[13290:90b] ン,2
2014-06-26 11:01:37.998 nihongo[13290:90b] ン,3
2014-06-26 11:01:37.998 nihongo[13290:90b] ト,4
2014-06-26 11:01:37.998 nihongo[13290:90b] ニ,5
2014-06-26 11:01:37.999 nihongo[13290:90b] カ,6
2014-06-26 11:01:37.999 nihongo[13290:90b] シ,7
--
もっと簡単な方法を募集中。
こういうのに燃える人を一人知ってるけど、どうかな??

追記:もう一つアナログな方法を思いついた
トレーシングペーパーに印刷して重ねる

追記2:もう一つの原始的な方法
お絵かきソフトで文字を透過率を半分ぐらいにして重ねる
ニホンゴハホントニムズカシイ.png
ラベル:IT
posted by one-hand-engineer at 11:25| Comment(2) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
追記3:
それぞれの文字の画像データを作成して、画像データ同士を比較するプログラムを作る。(^^;)
Posted by K at 2014年06月26日 22:23
ソースをください

PythonistaとかJavaScriptorとかLisperは出てこないのか?
Posted by ka-ta at 2014年06月26日 22:57
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:


この記事へのトラックバック