概要
今、巷で噂の「ChatGPT」を利用して、数独 のPythonプログラムの作成依頼をすればどのような答えが返ってくるか試してみました
実行環境
macOS Ventura 13.0
python 3.8.12
マシンスペック
- プロセッサ : 2.3 GHz 8コア Intel Core i9
- メモリ : 32GB 2667MHz DDR4
ChatGPTへのログイン
以下のURLにアクセスします。アカウント登録後利用できます。
https://chat.openai.com/auth/login
ChatGPTへの問い合わせ
数独の問題を作成するPythonプログラムは?
ChatGPTからの返事
数独の問題を作成するPythonプログラムは様々な方法で作成することができますが、一般的なアルゴリズムには以下のようなものがあります:
数独テンプレートを作成し、そこから必要な数字を適当に消去する。
順番に数字を埋めていくアルゴリズムを作成する。
ランダムな数字を適当な位置に配置し、正解を求めるためのアルゴリズムで問題を解いていく。
具体的な例は以下のようなものがあります:
----------------------------------------------------------------
import random
def create_sudoku():
board = [[0 for x in range(9)] for y in range(9)]
for i in range(9):
for j in range(9):
board[i][j] = (i * 3 + i // 3 + j) % 9 + 1
for i in range(9):
for j in range(9):
k = random.randint(0, 8 - j) + j
board[i][j], board[i][k] = board[i][k], board[i][j]
k = random.randint(0, 8 - i) + i
board[i][j], board[k][j] = board[k][j], board[i][j]
return board
sudoku = create_sudoku()
for row in sudoku:
print(row)
----------------------------------------------------------------
このプログラムは、数独テンプレートを作成し、数字をランダムに配置することで数独の問題を作成します。
実行プログラム
なにも編集せずに、、、、、
Sudoku_charGPT.py
import random
def create_sudoku():
board = [[0 for x in range(9)] for y in range(9)]
for i in range(9):
for j in range(9):
board[i][j] = (i * 3 + i // 3 + j) % 9 + 1
for i in range(9):
for j in range(9):
k = random.randint(0, 8 - j) + j
board[i][j], board[i][k] = board[i][k], board[i][j]
k = random.randint(0, 8 - i) + i
board[i][j], board[k][j] = board[k][j], board[i][j]
return board
sudoku = create_sudoku()
for row in sudoku:
print(row)
プログラムの実行
プログラムを見て結果はわかっていましたが、とりあえず、実行してみました。
$ python Sudoku_chatGPT.py
[5, 5, 9, 9, 2, 7, 8, 2, 5]
[8, 6, 8, 9, 7, 4, 3, 4, 2]
[1, 1, 2, 6, 9, 5, 9, 7, 4]
[3, 4, 1, 2, 3, 3, 5, 1, 8]
[8, 9, 2, 6, 1, 4, 2, 3, 6]
[6, 5, 7, 2, 4, 2, 4, 1, 5]
[7, 6, 1, 5, 9, 7, 8, 3, 4]
[9, 7, 5, 8, 8, 9, 6, 3, 4]
[6, 8, 3, 6, 3, 7, 7, 1, 1]
まとめ
世の中あまくないですね、、、、、しかし、ChatGPTでエラーなしのPythonコードが帰ってきたのには驚きです! プログラミングに関する質問はスコープ(範囲)を明確にしてあげれば利用できそうな気がします。