漢字パズルを解く word-finder というのを作った

例えば、以下のような問題があったとします。

    全  全
    ↓  ↓
中→□→□→結
    ↓  ↓
    曲  金

□に入る漢字を答えろ

この手の問題を解く場合、自前の知識の中から、時には勘も交えて総検索することになります。
ヒラメキと言えば聞こえはいいですが、別に考え方を変えたりして解ける問題ではないので、やることはただひたすら検索です。
なら機械にやらせてもいいのでは、ってことで、こういう問題を解くやつを作りました。
とりあえず動くレベルで、仕様とか見た目がかなり雑ですが、動くので公開します。

http://thinca.github.io/word-finder/

使い方

上記の URL を開いても、(少なくとも記事公開時点では)謎のフォームと[検索]ボタンがあるのみで、意味不明です。
というわけで使い方。
まず、わからない部分をアルファベットに置き換えます。

    全  全
    ↓  ↓
中→A →B →結
    ↓  ↓
    曲  金

今のところ置き換えられる文字は半角英数字と一部の記号のみです。
そして、ここから拾える単語を列挙します。

全A
中A
A曲
全B
B結
B金
AB

この単語のリストをフォームに貼り付けます。
そして検索ボタンを押すと…答えが出ます!
ちなみに単語の文字数としては 2-5 文字まで対応していますが、合成単語とかは出ないかもしれないです。詳細は下記の「辞書について」を参照。

なぜブラウザなのか

スマホから使いたかった。

辞書について

できればフリーの国語辞典でもないかなーと思って探したんですが、単語の一覧を簡単に扱えるようなものは見付けられなかったので、最終的に SKK の辞書ファイルに落ち着きました。
SKK の辞書から必要な部分を切り出して使っています。なので、SKK の辞書に載っていない単語は検索できません。
ところで SKK の辞書データって GPL っぽいのだけど、データが GPL の場合にその扱いについて調べたけれど、GPL はソフトウェアに適用されるものらしく、データの場合はよくわからなかった…。
word-finder を GPL にしないといけないならどうせコードは公開しているので問題はないのだけど、なんか気持ち悪いので詳しい方いたら教えていただけると助かります。

そう言えば完全に余談だけど、SKK の辞書って未だに EUC-JP なんですね。そろそろ UTF-8 とかにしてもいいのでは…。辞書に登録できない文字とかも出てきちゃうだろうし。

今後の課題

Web ページを作るということを普段しないので、習作も兼ねているので、作りがだいぶ雑です。CSS すらないし…。

  • 使い方が意味不明なのでせめて説明をページ内に入れたい。
    • スペース取るのは邪魔なのでポップアップするリンクがあると良さそう。
  • 見た目もう少しマシにしたい(案はない)。
  • 辞書を加工するツールをなんとなく Ruby で書いたけど、ブラウザ側のコードが JavaScript(正確には CoffeeScript)なので、統一する意味で nodejs 辺りで書き直したい。
  • jQuery を使っているけど、最近だとあまりよろしくないらしいとの噂なのでなんか置き換えるなどしたいかも。
    • この程度の規模なら別によいって話もあるかもしれないけどよくわかっていない。
  • 読み(カタカナ)の辞書を足せばクロスワードパズルにも使えそうな予感。