見出し画像

クロスワードパズルの”自動作成”環境を構築した話

タカヒロ

「クロスワードパズルを自動で作って、らくらく副収入生活〜!」

かつてそんな夢物語を耳にしたし、もし実現できたら、いろんな場面で需要があるのではないかと思います。

とあるソフトウェアとの出会いをきっかけに試行錯誤したところ、クロスワードパズルを瞬時に作成できるようになりました。ソフトウェアの仕様理解と設定、言葉のデータベース構築に丸3ヶ月かかってしまいましたが。

この記事では、クロスワードパズルの自動作成環境を構築した手法と、そのデモンストレーション動画を公開します。

「ズルだ!」「仕事を奪うな!」とおっしゃる気持ちもわかります。ただ、自動運転や無人コンビニなどの AI が加速するように、クロスワードパズルを全自動で作るのも必然の流れと言えるのかもしれません。

パズル作りの興をそがれたくないかたは、ここから先を絶対に見ないでください!

クロスワード自動作成の数式

クロスワード自動作成の要素はこのツイートに集約されると思っていて、❶ アルゴリズム」「❷ 言葉のデータベース」「❸ 黒マス配置パターン」の3つに何を当てはめるかで変わってきます。

ではそれぞれ、何を当てはめたのか?

―― それは、唯一にして無二の組み合わせでした。

❶ アルゴリズム -> Crossword Compiler

言葉を組むアルゴリズムは、Windows のソフトウェア「Crossword Compiler (クロスワード・コンパイラー)11」を使用しました。

  • 名称:Crossword Compiler for Windows(公式サイト

  • 開発元:WordWeb Software

  • 開発者:Antony Lewis

はい。英国産ソフトウェアです。クロスワードパズル本場の歴史あるソフトウェアだけあってアルゴリズムは折り紙付きなんですが、いかんせん敷居は高いです。

  • ライセンス料金がかかる(年額 $24~/買い切り型もあり)

  • マニュアルの翻訳と理解が必須

  • 日本語向けに設定のカスタマイズも必須

私の場合は、ソフトウェアのオプションをごりごりするのが趣味で、こういうことには時間を惜しまないタイプの人間なのでできました。

マシンパワーはそれほど必要としません。2017年発売のノートPC(CORE i5 / 8GB memory / 256GB SSD)でも軽快に動作します。

余談ですが。6bit(=63種)以上の文字は取扱えない仕様だったので、その旨をフォーラムに投稿したらローカライズ対応していただけました。これだけ文字種が多いのは日本語と中国語くらいでしょうか(現在フォーラムは閉じられている模様)。

❷ 言葉のデータベース -> 辞書を自作

Crossword Compiler に追加で購入できるワードリストはデンマーク語、オランダ語、フランス語、フィンランド語、ドイツ語、ハンガリー語、イタリア語… など多岐にわたりますが、日本語はありませんでした。

世に出回る辞典はすべて、ネガティブな言葉が(当然ながら)含まれています。スタンダードクロスワードの自動作成に対応するには、専用に最適化された「実用クロスワード辞書」が必要です。

ないなら作りましょう、ということで。もともとナンクロを趣味で作ったり投稿したりしていた経緯もあって、肌感覚でよく使う言葉・使いやすい言葉を中心に採択していきました。

あい
あいあい
あいあいがさ
あいあん
あいいろ
あいうち

・・・中略・・・

わーく
わーすと
わーど
わーぷ
わーぷろ
わーるど
[EOF]

この記事執筆時点の収録語数は 19,000強。対象は2~6文字の一般名詞です。「こつせつ」「にゆういん」「〇さつ」といった語は含まれません。収録すべき言葉がまだあるとのちに判明しましたが、ひとまずカタチにはなっています(辞書の話はまた後日… )。

❸ 黒マス配置パターン

ソフトウェアにはあらかじめ、黒マス配置パターンのテンプレートを登録しておきます。そうしたほうが、コンピュータの処理速度面で有利だからです。

配置パターンは日本語の黒マスルールに準じるほか、「❶ アルゴリズム」と「❷ 言葉のデータベース」の組み合わせによっては変わってくるかもしれません。

冒頭のツイートでお見せした配置パターンは、単なるパフォーマンスに過ぎません。実用上はそこまでする必要はまったくなくて、黒マスをもっと多く、バランスよく配置します。

自動作成のデモンストレーション

長々と書いてしまいました。最後に、クロスワードパズルの作成風景を収めた1分間の動画(等倍速)をお見せします。

速すぎて伝わらないかもですが、[Non-stop filling] -> [100 from beginning] のコマンドで 6×6マスと 11×11マス のクロスワードを 100個生成し、キーボード左右でクロスワードを選択しています。


最後までお読みいただき、ありがとうございました。

「自動じゃない」クロスワードパズル作成ソフトを公開しています。なにかの折にダウンロードしていただけるとうれしいです。


この記事が気に入ったら、サポートをしてみませんか?
気軽にクリエイターの支援と、記事のオススメができます!