大阪電気通信大学

解けない数独のRPA ~数独問題作成プログラム~

皆さん、ゲームは好きでしょうか。

今回の研究で行ったのは、ゲームを人間ではなく機械に解かせようというものです。

今回数独(ナンプレ)ゲームを自動化してみました。どうぞ動画でご覧ください。

研究内容

まず数独(ナンプレ)とは、パズルゲームの一種で、雑誌などに載っているのを見かけたことがあると思います。9×9のマスに事前に入力されている1~9の数字をもとに、縦・横・3×3のマスに同じ数字が入ることのないように空いているマスを埋めるゲームです。基本的に数独は解が一つ存在しています。その解が一つある数独問題に対して間違った数字を入力し、解答ができない状態にします。それをRPAさせてみたという内容になっています。

RPAとは

「Robotic Process Automation」の略称でキーボード入力やマウス操作などをプログラム上で再現し、業務などを自動化することを指しています。規則性のある定型業務をプログラムによって自動化することにより、業務時間の短縮、業務の効率化、人件費削減など様々なメリットがあります。

解けない数独

研究内容で説明した通り解けない数独のRPAに取り組みました。この解の無いRPAを行うのにはちゃんと理由があります。このRPAを行うことによって問題に解がないということが分かります。解がないことが分かると、逆に解のある問題を作成できることになります。これは問題製作側の視点から考えたプログラムなのです。

数独RPA説明

まず初めに普通の数独をRPAで自動化してみました。数独問題は「Sudoku.com」というランダムに数独問題を出題してくれるサイトを利用しました。(https://sudoku.com)

数独問題部分
解のない数独問題部分

上の二つの画像は数独問題と解けない数独問題になっています。サイトの仕様上間違えている部分は赤色の数字で表示されています。右の画像の状態では解答ができない状態になっています。次に解のある状態の数独のRPAの方法を説明します。

  • ゲーム画面から問題部分の切り抜きを行う
  • 画像認識を使って数独問題をプログラム上に再現する
  • 問題を解き解答を入力する

大まかにこの三つの処理で数独のRPAを動かしています。

次に解のない状態の数独問題ですが、この問題を解く部分のコードで解を見つけれない場合に「解なし」と分岐することで解がないかどうかの判定を行います。

まとめ

動作に問題はなく無事に解の無い問題の判定を行えました。このプログラムを使うことで、ふと「数独問題作ろ」となった時に作れるようになりました。手書きの問題を使うときは画像処理の方で時間がかかるかもしれません。結果としては成功ということで終わらせていただきます。

「プログラムで問題作ればいい」というのは分かりますが今回はそれを置いていてください。

作者プロフィール

月精 駿斗

総合情報学部 デジタルゲーム学科

計測ハードウェア研究室所属

コメント