/*
全角文字と改行のみで書かれた日本語のテキストファイルが100個ある(data1.txt, data2.txt, ・・・,
data100.txt)。各ファイルから2文字の連続文字列を全て取り出し、それらの2文字列の頻度を調べ、
頻度順に出力したファイル( frq2moji.txt ) を作成する。
2文字の連続文字列について簡単に説明する。
> cat sample.txt
私は東京大学の学生です。
東京都に住んでいます。
>
上記sample.txt から2文字列を取り出すと、以下のようになる。「。東」に注意すること。つまり改行は無
視される。
私は
は東
東京
京大
大学
学の
の学
学生
生で
です
。東
東京
京都
都に
に住
住ん
んで
でい
いま
ます
す。
同じ文字列をまとめて、頻度順に並べると以下のようになる。これが求める頻度順に並べた2文字列。
東京2
大学1
生で1
京大1
京都1
住ん1
私は1
都に1
学生1
学の1
んで1
ます1
は東1
の学1
に住1
です1
でい1
す。1
いま1
。東1
作成するプログラムは以下の点に注意すること。
² 100 個のファイルのファイル名はdata1.txt ~ data100.txt で固定されている。
² このコードはUTF-8 である。
² 2文字列の種類数は膨大であり、種類数は見積もれないとする。
² できるだけ効率的に(高速に)処理する。
² UNIX 内のコマンドを呼び出す形も不可。
² プログラム内でファイルを作成し、そのファイルを読み出すという手法は使っても良い。
² 複数個のプログラムを作り、パイプやリダイレクションを用いて、処理する形でもよい。ただしその際
にUNIX のコマンドは利用不可。
² リダイレクションでfrq2moji.txt を作成するのは不可。プログラム内でファイルfrq2moji.txt を作成
すること。
[実行結果]
> ./a.out
>
> cat frq2moji.txt
た。410
した346
。 321
する309
てい256
る。253
・・・
8 1
ー4 1
ー1 1
< 1
―。1
>
(この実行結果はイメージです。全く同じになるとは限りません。)
*/
LyoKIArlhajop5LmloflrZfjgajmlLnooYzjga7jgb/jgafmm7jjgYvjgozjgZ/ml6XmnKzoqp7jga7jg4bjgq3jgrnjg4jjg5XjgqHjgqTjg6vjgYwxMDDlgIvjgYLjgovvvIhkYXRhMS50eHQsIGRhdGEyLnR4dCwg44O744O744O7LApkYXRhMTAwLnR4dO+8ieOAguWQhOODleOCoeOCpOODq+OBi+OCiTLmloflrZfjga7pgKPntprmloflrZfliJfjgpLlhajjgablj5bjgorlh7rjgZfjgIHjgZ3jgozjgonjga7vvJLmloflrZfliJfjga7poLvluqbjgpLoqr/jgbnjgIEK6aC75bqm6aCG44Gr5Ye65Yqb44GX44Gf44OV44Kh44Kk44OrKCBmcnEybW9qaS50eHQgKSDjgpLkvZzmiJDjgZnjgovjgIIKIArvvJLmloflrZfjga7pgKPntprmloflrZfliJfjgavjgaTjgYTjgabnsKHljZjjgavoqqzmmI7jgZnjgovjgIIKPiBjYXQgc2FtcGxlLnR4dArnp4Hjga/mnbHkuqzlpKflrabjga7lrabnlJ/jgafjgZnjgIIK5p2x5Lqs6YO944Gr5L2P44KT44Gn44GE44G+44GZ44CCCj4K5LiK6KiYc2FtcGxlLnR4dCDjgYvjgonvvJLmloflrZfliJfjgpLlj5bjgorlh7rjgZnjgajjgIHku6XkuIvjga7jgojjgYbjgavjgarjgovjgILjgIzjgILmnbHjgI3jgavms6jmhI/jgZnjgovjgZPjgajjgILjgaTjgb7jgormlLnooYzjga/nhKEK6KaW44GV44KM44KL44CCCiAK56eB44GvCuOBr+adsQrmnbHkuqwK5Lqs5aSnCuWkp+Wtpgrlrabjga4K44Gu5a2mCuWtpueUnwrnlJ/jgacK44Gn44GZCuOAguadsQrmnbHkuqwK5Lqs6YO9CumDveOBqwrjgavkvY8K5L2P44KTCuOCk+OBpwrjgafjgYQK44GE44G+CuOBvuOBmQrjgZnjgIIKIArlkIzjgZjmloflrZfliJfjgpLjgb7jgajjgoHjgabjgIHpoLvluqbpoIbjgavkuKbjgbnjgovjgajku6XkuIvjga7jgojjgYbjgavjgarjgovjgILjgZPjgozjgYzmsYLjgoHjgovpoLvluqbpoIbjgavkuKbjgbnjgZ/vvJLmloflrZfliJfjgIIK5p2x5LqsMgrlpKflraYxCueUn+OBpzEK5Lqs5aSnMQrkuqzpg70xCuS9j+OCkzEK56eB44GvMQrpg73jgasxCuWtpueUnzEK5a2m44GuMQrjgpPjgacxCuOBvuOBmTEK44Gv5p2xMQrjga7lraYxCuOBq+S9jzEK44Gn44GZMQrjgafjgYQxCuOBmeOAgjEK44GE44G+MQrjgILmnbExCiAK5L2c5oiQ44GZ44KL44OX44Ot44Kw44Op44Og44Gv5Lul5LiL44Gu54K544Gr5rOo5oSP44GZ44KL44GT44Go44CCCsKyIDEwMCDlgIvjga7jg5XjgqHjgqTjg6vjga7jg5XjgqHjgqTjg6vlkI3jga9kYXRhMS50eHQg772eIGRhdGExMDAudHh0IOOBp+WbuuWumuOBleOCjOOBpuOBhOOCi+OAggrCsiDjgZPjga7jgrPjg7zjg4njga9VVEYtOCDjgafjgYLjgovjgIIKwrIg77yS5paH5a2X5YiX44Gu56iu6aGe5pWw44Gv6Iao5aSn44Gn44GC44KK44CB56iu6aGe5pWw44Gv6KaL56mN44KC44KM44Gq44GE44Go44GZ44KL44CCCsKyIOOBp+OBjeOCi+OBoOOBkeWKueeOh+eahOOBq++8iOmrmOmAn+OBq++8ieWHpueQhuOBmeOCi+OAggrCsiBVTklYIOWGheOBruOCs+ODnuODs+ODieOCkuWRvOOBs+WHuuOBmeW9ouOCguS4jeWPr+OAggrCsiDjg5fjg63jgrDjg6njg6DlhoXjgafjg5XjgqHjgqTjg6vjgpLkvZzmiJDjgZfjgIHjgZ3jga7jg5XjgqHjgqTjg6vjgpLoqq3jgb/lh7rjgZnjgajjgYTjgYbmiYvms5Xjga/kvb/jgaPjgabjgoLoia/jgYTjgIIKwrIg6KSH5pWw5YCL44Gu44OX44Ot44Kw44Op44Og44KS5L2c44KK44CB44OR44Kk44OX44KE44Oq44OA44Kk44Os44Kv44K344On44Oz44KS55So44GE44Gm44CB5Yem55CG44GZ44KL5b2i44Gn44KC44KI44GE44CC44Gf44Gg44GX44Gd44Gu6ZqbCuOBq1VOSVgg44Gu44Kz44Oe44Oz44OJ44Gv5Yip55So5LiN5Y+v44CCCsKyIOODquODgOOCpOODrOOCr+OCt+ODp+ODs+OBp2ZycTJtb2ppLnR4dCDjgpLkvZzmiJDjgZnjgovjga7jga/kuI3lj6/jgILjg5fjg63jgrDjg6njg6DlhoXjgafjg5XjgqHjgqTjg6tmcnEybW9qaS50eHQg44KS5L2c5oiQCuOBmeOCi+OBk+OBqOOAggogClvlrp/ooYzntZDmnpxdCj4gLi9hLm91dAo+Cj4gY2F0IGZycTJtb2ppLnR4dArjgZ/jgII0MTAK44GX44GfMzQ2CuOAguOAgDMyMQrjgZnjgoszMDkK44Gm44GEMjU2CuOCi+OAgjI1Mwrjg7vjg7vjg7sK44CA77yYIDEK44O877yUIDEK44O877yRIDEK44CA77ycIDEK4oCV44CCMQo+CijjgZPjga7lrp/ooYzntZDmnpzjga/jgqTjg6Hjg7zjgrjjgafjgZnjgILlhajjgY/lkIzjgZjjgavjgarjgovjgajjga/pmZDjgorjgb7jgZvjgpPjgIIpCiAKKi8=