見出し画像

【AIとつくったペンシルパズル】カズさん

ChatGPTと新しいペンシルパズルを作ることに挑戦してみました!

前回の挑戦はこちら。


今回も、私とChatGPTが協力してパズルのルールやコードを作成しました。今回は、「カズさん」と名付けたパズルをご紹介します。ChatGPT o1-previewと一緒にルール問題を生成したパズルです。(シンプルなルールなので、全く同じパズルをすでに考案している人がいるかもしれません。)

この記事は「カズさん」パズルについての紹介だけでなく、ChatGPT o1-previewの活用方法についても触れています。また、サムネイル画像はChatGPT 4oが生成したものです。

パズルの概要

ルール

  1. 9×9のグリッドを使います。このグリッドは、3×3のブロック(太線で区切られた枠)に分けられています。

  2. 各マスには、1、2、3のいずれかの数字を入れます。

  3. 各行・列には、1、2、3がそれぞれ3回ずつ現れます。

  4. 3×3のブロック内でも、1、2、3がそれぞれ3回ずつ現れるようにします。

  5. すべてのマスを埋め、上記のルールを満たすことが目的です。

例題

左が問題、右が答え

まずは、真ん中のブロックの「2」に注目してみましょう。縦・横に同じ数字が3個ずつ現れるため、オレンジ色で示された列や行には「2」が入らないことがわかります。真ん中のブロックに「2」を3つ入れるべき場所は白いマスで、そこに「2」を配置します。

次に、左上のブロックの「3」に注目します。縦・横に同じ数字が3つずつ現れるため、オレンジ色の実線で示された列には「3」は入らないことがわかります。また、オレンジ色の点線で示された列には「3」はあと1つしかはいりません。こうして、左の列に「3」を2つ配置します。

こんな感じで解いていくことができます。

今回の問題

ChatGPT o1-preview への指示文

このパズルを作成するために、以下のプロンプトをChatGPT o1-previewに与えました。

Prompt

次の新しいペンシルパズルのルールに従って、パズルの問題を作るpythonコードを書いてください。さらに、そのパズルの問題を解くpythonコードを作成し、解が一つしかないことを確認するようにしてください。解が一つになるまで、問題を修正するようにコーディングしてください。コードは、現実的な時間で実行できるように工夫してください。

数独のように、9×9のグリッドがある。これらのグリッドは、太い線で外枠を区切られた3×3のグリッドを、3×3に並べたものである。ここまでは、数独と同じ。
各マスに1から3までの数字を入れて、以下の条件を満たすようにする。 縦横に、1から3までの数字が3回ずつ登場するようにする。
太い線で区切られた3×3のグリッドの中に、1から3までの数字が3回ずつ登場するようにする。
以上が新しいペンシルパズルのルールの説明です。
なお、同じルールのパズルがすでにある場合は、教えてください。

ポイント

  1. 一度にすべての要求を盛り込む:ChatGPT o1-previewの場合、プロンプトにすべての指示を盛り込むと、複数回のやり取りをせずに問題生成がスムーズに進みます。

  2. Pythonコードを経由する:直接パズル問題を生成させるのではなく、Pythonコードを介することでルールに破綻のない問題を作成することができます。ただし、実行に時間がかかりすぎることがあるため、試行錯誤が必要です。


今回はChatGPTにルールを作らせるのではなく、私がルールを指定しました。ただ、このルールの前身はChatGPTが作ったものです。そのときはじゃんけんをモチーフとするように指示していたのですが、生成されたルールがこれに近いものでした。じゃんけんをモチーフとして活かせていないので、数字を使うルールにし、細部のルールを整えました。

このパズルのルールは数独に似ているため、「数独」に対して「カズさん(数三)」というタイトルを付けました。数独と比較するとシンプルかもしれませんが、独自の解き味があり、十分に楽しめると思います。


今回の記事を楽しんでいただけましたか?よければ「スキ」を押していただけると励みになります。また、ぜひ「コメント」でご感想をお聞かせください!新しいパズルやアイデアをもっと共有していきたいと思いますので、今後ともよろしくお願いします。

この記事が気に入ったらサポートをしてみませんか?