源于一道文字游戏的题目
独立博客地址:http://cxh.me/2015/01/05/a-word-puzzle/
起源是这样一道题目:
于是想到通过word dict来算一下:
先去下载了中文词库:
git clone git@github.com:ling0322/webdict.git
然后去掉词频信息:
awk '{ if (length($1)==2) print $1}' webdict_with_freq.txt >webdict.txt
先按照出现位置来正则过滤候选集,并且去掉大/日/风/思四个字:
grep '^大.*' webdict.txt| sed 's/大//g' >da.txt
grep '^日.*' webdict.txt| sed 's/日//g' >ri.txt
grep '.*风$' webdict.txt| sed 's/风//g' >feng.txt
grep '.*思$' webdict.txt| sed 's/思//g' >si.txt
之后的事情就很有意思了,每次join两个文件,因为大/日/风/思四个字是没有交集的,所以结果就是要求的字:
comm -12 <(sort da.txt|uniq ) <(sort ri.txt|uniq ) >da_ri.txt
comm -12 <(sort feng.txt|uniq ) <(sort da_ri.txt|uniq ) >da_ri_feng.txt
comm -12 <(sort si.txt|uniq ) <(sort da_ri_feng.txt|uniq ) >da_ri_feng_si.txt
最后的凶手答案只有一个:
谢谢观看~。
参考文献:
[ 1 ] LINUX Shell 下求两个文件交集和差集的办法, http://blog.csdn.net/autofei/article/details/6579320