メインコンテンツへスキップ
見出し画像

【AIがつくったペンシルパズル】隣接和ラテン方格パズル

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

    今回は、ChatGPT o1-previewがルールも問題も生成したパズルである、「隣接和ラテン方格パズル」というパズルをご紹介します。(シンプルなルールなので、全く同じパズルをすでに考案している人がいるかもしれません。)

    この記事は、パズルの記事でもあり、ChatGPT o1-previewの記事でもあります。
    ちなみに、サムネ画像はChatGPT 4oが生成したものです。

    パズルの概要

    ChatGPTが出力した文章に、少し私が括弧で補足を入れました。

    ルール

    1. パズルは N×N のグリッドで構成されています。

    2. 各行と各列には、1から N までの数字が一度ずつ入ります(対角線には制約はありません)。

    3. 一部のセルにはヒントとして数字が書かれています。

    4. ヒントの数字は、そのセルの上下左右の隣接するセルに入る数字の合計を示しています。(そのセル自身は含みません)

    5. プレイヤーの目的は、全てのセルに数字を埋め、ヒントを満たすことです。

    例題

    画像
    左が問題、右が答え。
    3×3であれば、各行と各列に1~3の数字が入ります。

    この例題だと、右上の「6」のヒントから、6に隣接するマスが両方とも3であることがわかります。そこから、芋づる式に解けますね。

    今回の問題

    サイズで難易度を調整しやすいので、3問載せます。
    3問目は人が遊ぶレベルではありません。プログラマなら解けるかも。

    問1

    画像
    難易度はAIではなく私がつけています。
    4×4なので、各行と各列に1~4の数字が入ります。

    問2

    画像
    5×5なので、各行と各列に1~5の数字が入ります。

    問3

    画像
    9×9なので、各行と各列に1~9の数字が入ります。
    プログラマ向け問題ですが、AIを活用すればプログラマでなくても解けるかも…?

    ChatGPT o1-preview への指示文

    このパズルは次のプロンプトから生成されたものです。

    Prompt

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

    ポイント

    1. 一度のプロンプトに要求を盛り込む

      • ChatGPT 4oでは複数回のやり取りを前提としたプロンプトにして、まずはルールだけを考えさせるのが良いと思いますが、ChatGPT o1-previewの場合、一度のプロンプトに要求を盛り込み、GPTに思考させるのが良いと思います。

    2. 直接的に問題を生成させずにpythonを経由する

      • 問題と解答については、コードを経由することを強くお勧めします。これにより、文章としてそれっぽい出力ではなく、きちんとルール上破綻のない問題を生成することができます。
        (ただし、ChatGPT o1-miniで試した際は、ルールそのものに破綻がある場合があり、いつまで経っても終了しないコードを出力したことがありましたので、注意が必要です)

    このプロンプトを参考にすれば、プログラマではない人も、最後の問題をAIに解かせることができるかも…?

    最後に、人間である私が考えたオリジナルパズルを紹介

    ちなみに、人間である私が考えたオリジナルパズルはこちらです。AIにアイデア負けしていなければよいのですが…。


    隣接和ラテン方格パズルのすべての問題はこちらから。今後も問題を出していきます。


     
     
    ポケカのエンジョイ勢です。ペンシルパズルも好きです。フリーゲームも作ってます。詳しい自己紹介はプロフィール記事を読んで頂けますと幸いです。

    あなたへのおすすめ