正確に言うと、Microsoft Bingのチャット機能を使ったメモです。
[2]でリポートされたように、GPTをもとにした「個人商店」も簡単にできる時代ですから、まずGPTとは何者で何が何処までできるかを知る必要があります。
Q:箱入り娘パズルをPythonプログラムで解いてください
回答と解析は以下の通りです。
要約すると、似た質問は既になされてきて、その関連の試行錯誤も繰り返されたようです。それでも最初の回答は全く使い物にならなかったです。
■まず回答を下にコピーします。
「こんにちは。箱入り娘パズルをPythonプログラムで解く方法についてお伝えします。箱入り娘パズルは、スライドパズルの一種で、2×2の駒を移動させて、一番大きな駒である「娘」を枠の下部の切れ目に移動させることを目的としたパズルです1.
以下のQiitaの記事によると、幅優先探索を用いて初期位置から娘を目的の位置に届けるクリアまでの経路を求めることができます1.
Python
AI で生成されたコード。ご確認のうえ、慎重にご使用ください
import numpy as np
from queue import Queue
def bfs():
# 盤面の初期化
start = np.array([[1, 2], [3, 4], [5, 6]])
goal = np.array([[3, 4], [5, 6], [1, 2]])
# 幅優先探索
q = Queue()
q.put((start, 0, ""))
while not q.empty():
board, depth, route = q.get()
if np.all(board == goal):
return depth, route
zero_y, zero_x = np.where(board == 1)
for dy, dx, c in [(-1, 0, "U"), (1, 0, "D"), (0, -1, "L"), (0, 1, "R")]:
ny, nx = zero_y + dy, zero_x + dx
if not (0 <= ny < 3 and 0 <= nx < 2):
continue
new_board = board.copy()
new_board[zero_y, zero_x], new_board[ny, nx] = new_board[ny, nx], new_board[zero_y, zero_x]
q.put((new_board, depth + 1, route + c))
return -1, ""
depth, route = bfs()
print(f"クリアまでの手数: {depth}")
print(f"経路: {route}")箱入り娘パズルを探索で解いてみた」
■コードの結果
✕無限ループ
■解析
◯そもそもstartとgoalはなぜ箱入り娘の駒と配置(初期及び解)を表せているかは謎である
◯参照元:
1.箱入り娘パズルを探索で解いてみた(https://qiita.com/mimic-asy/items/d7223d58c23feebefb63)
これはちゃんと動きそうなPythonコードへのリンク(GitHub)がある記事です。実際リンク先のコードを見てもとてもしっかりした感じのコードです。コード数は上記の物よりはるかに、かなり多いです。
2.箱入り娘を解く その0(https://tfitv.com/entry/2023/04/11/211223)
これには解になるような情報そのものがなく、「箱入り娘を解く その1」というリンクがある
3.箱入り娘を解く その4(https://tfitv.com/entry/2023/04/26/103313)
2の関連記事で、関連記事の「箱入り娘を解く その3 ⇐ ⇒ 箱入り娘を解く その5」がある
4.No Rinri(倫理観なし)(https://twitter.com/Not_rinrikan)
これは一番謎である。可能性としてはそのツイッターの主は箱入り娘に関するツイットがあったかもしれない
5.箱入り娘 (パズル)(https://ja.wikipedia.org/wiki/%E7%AE%B1%E5%85%A5%E3%82%8A%E5%A8%98_(%E3%83%91%E3%82%BA%E3%83%AB))
これは、元祖の箱入り娘というパズルのWikipediaの項目である
■結論
◯そのまま使える回答はなかった
◯参考になる情報の検索は楽になった
◯「詳細情報」のリンクにちゃんと動作するように見えるコードがあった。
参考リンク
No comments:
Post a Comment