ナンプレ大好きな水曜日の青猫です🐾
まずは、こちらの記事を読んでいただけると嬉しいです。というか、以下の2つの記事を読むこと無く、この「その3」を見ただけだと、ちんぷんかんぷん状態になってしまうと思います。
この上に載せた記事で、経緯とか、必要ツールとか、いろいろ書いてありますので、是非、読んでいただきたいな🐾
ところで、「その1」では、フェーズ1-1のPythonプログラムコード(ベースプログラム:ナンプレ0024.py)を載せました。「その2」では、ベースプログラムに3つの解法を組み込んだもの(ナンプレ0028.py)を載せました。
これらプログラムのライセンスは、コレ↓です。
このブログまたは動画で公開しているすべてのコードは、特に明記がない限り、CC0 1.0 Universal (Public Domain Dedication) に基づき公開しています。
引用元:ナンプレアプリをPython初心者がAIで創るプロジェクト、その1🐾
自由に使用、改変、再配布可能です。ライセンス表記や帰属表示も不要です。詳細は CC0 1.0 Universal をご確認ください。
それから、Pythonプログラムは、ChatGPT(以下、GPTと書きます)といろいろ打ち合わせしながら、コードを組み立てるのはGPTです。筆者 水曜日の青猫はプログラムコード1行も1文字も書いてません。
それでも、アイデア出しや、修正のヒント出しその他もろもろ、プログラム創りには十分に貢献しています(…と思う)。
さて、今回のプロジェクトの記録「その3」では、「その2」で作ったプログラム(ナンプレ0028.py)に、次のナンプレの3つの解法を組み入れました。
- XY-Wing
- XYZ-Wing
- Skyscraper
の3つです。
準備するもの
- Pythonを動かす環境
- 筆者の場合は、これ。Pythonista 3
- Pythonコードを創ってくれる仲間
- 筆者の場合は、これ。ChatGPT 4o(Plus)
2つのフェーズで進めます。以下、数え切れないくらいの「いろいろなやりとり」の結果として、GPTからのオススメです。
フェーズ1
「ナンプレアプリをPython初心者がAIで創るプロジェクト」は、大きく「フェーズ1」、「フェーズ2」で進めます。
「フェーズ1」は、6段階のレベルで、ナンプレの問題と解答を生成するプログラムです。
そして、「フェーズ2」では、「フェーズ1」で創った核を利用して、iPadやiPhoneのアプリを創ります。
_/_/_/
さて、「フェーズ1」ですが、これも2つに分けて作業しました。「フェーズ1-1」と「フェーズ1-2」です。
フェーズ1-1
- 難易度で6レベルの「問題と解答」を作り出すプログラム
- 解答は1つだけとする(複数解答があるものは除外)
- レベルは「初級」「中級」「上級」「難問」「達人」「絶望」とする
- 暫定的にそれぞれのレベルは問題の空白数で定義する
- 初級 空白数 44〜47個
- 中級 空白数 48〜51個
- 上級 空白数 52〜54個
- 難問 空白数 55〜56個
- 達人 空白数 57〜58個
- 絶望 空白数 59〜60個
フェーズ1-2
フェーズ1-1のプログラムに、以下の解法を組み入れる
- X-Wing
- Swordfish
- Jellyfish
- Skyscraper
- XY-Wing
- XYZ-Wing
この記事「その2」は、「フェーズ1-2」です。
「フェーズ1-1」で創った「ベースとなるプログラム」(これは「その1」でコードを公表しました)に対して、上に掲げた6つの機能を付加します。
具体的には、GPTと何回もやりとりして、次のように決めました。
- 6つのレベルのうち、「初級」「中級」「上級」には、前述の解法を組み込まない。
- 6つのレベルのうち、「難問」「達人」「絶望」に、前述の解法を組み込む。
- 「難問」には、アトランダムに1つの解法を組み込む。
- 「達人」には、アトランダムに2つの解法を組み込む。
- 「絶望」には、アトランダムに3つの解法を組み込む。
- プログラムづくりとしては、2段階で考える。
- まずは、6つの解法のうち、X-Wing、Swordfish、Jellyfishの3つだけを組み込んで、それを「難問」「達人」「絶望」に適用する。
- これの安定バージョンができたら、アトランダムに選ぶ解法として、Skyscraper、XY-Wing、XYZ-Wingを追加で組み込み、「難問」「達人」「絶望」に適用する。
今回創ったのは、「X-Wing、Swordfish、Jellyfishの3つ組み込みバージョン」です。
細かくフェーズを切ると、今回公開するコードは、「フェーズ1-2-2」となります。
フェーズ1-2-2のプログラム公開
以下、「フェーズ1-2-2」のプログラムを公開します。
プログラム1行目は、CC0 1.0 Universal (Public Domain Dedication)の注記です。
なお、本サイトは、コピー&右クリック禁止となっています。
なので、下記のPythonプログラムは直接コピーできません。
末尾右にある「view raw」をクリックすると、GitHub Gistに飛びます。そこからコードをコピペして使ってください。GitHub Gistは、コードなどを安全に公開するWebサービスです。
なお、プログラムについての質問にはお答えできません。
冒頭のほうで推奨としてあげたPythonを動かす環境で、プログラム実行をしてください。
ナンプレ0040.pyの課題
「その1」(ナンプレ0024,py)で作った「絶望」の問題は楽勝すぎるほど簡単な問題でした。
しかし、X-Wingなど3つを組み込んだ「その2」(ナンプレ0028.py)が作り出す「絶望」の問題は、筆者 水曜日の青猫のナンプレ実力では手に負えないレベルの難しさでした。
実は、さらに3つの解法を組み込んだ「その3」(ナンプレ0040.py)の「絶望」問題も、同様に解けない…。
つまり、現状での最大の課題は、筆者のナンプレの実力を磨くことなのです・爆。
それでは、「その3」(ナンプレ0040.py)が作った「絶望」問題を3つ載せますね。
まとめ
プログラムど素人の筆者 水曜日の青猫が、Pythonでナンプレアプリを創るプロジェクト。
フェーズ1-2-2のコードを公開しました。「その3」です。
このプログラムは、CC0 1.0 Universal (Public Domain Dedication) です。
また、質問等にお答えすることはできません。
コメント