2022年11月にOpenAIという企業がリリースしたChatGPTについて。
目次
検証した感想
Pythonのプログラムの解説を試してみました。
Pythonで書かれたソース
h, w, sy, sx, n = map(int, input().split())
s = [list(input()) for _ in range(int(h))]
time_lr = [input().split() for _ in range(int(n))]
directions = ["N", "E", "S", "W"]
now_direction = 0
time_index = 0
s[sy][sx] = "*"
for t_now in range(100):
if time_index < n and str(t_now) == time_lr[time_index][0]:
d = time_lr[time_index][1]
time_index += 1
if d == "L":
now_direction = (3 + now_direction) % 4
else:
now_direction = (1 + now_direction) % 4
if directions[now_direction] == "N":
sy -= 1
elif directions[now_direction] == "E":
sx += 1
elif directions[now_direction] == "S":
sy += 1
elif directions[now_direction] == "W":
sx -= 1
if sx < 0 or sx >= int(w) or sy < 0 or sy >= int(h) or s[sy][sx] != ".":
break
else:
s[sy][sx] = "*"
for y in range(int(h)):
for x in range(int(w)):
print(s[y][x], end="")
print()
解析後
このコードは、グリッド上を移動するロボットのシミュレーションの実装です。
入力は次のように読み取られ、保存されます。
h, w: それぞれグリッドの高さと幅
sy, sx: ロボットの開始 y および x 位置
n: ロボットの回転命令数
s: 文字の 2D リストとしてのグリッド表現
time_lr: 時間と回転方向 (L/R) のペアのリスト
シミュレーションは 100 時間単位で行われます。 各時間単位で、コードは現在の時刻が time_lr のいずれかの時刻と一致するかどうかを確認します。 その場合、ロボットの方向はそれに応じて更新されます。 次に、コードは現在の方向 (北、東、南、または西) に基づいてロボットの位置を更新します。 新しい位置が範囲外または空きスペースでない場合、シミュレーションは終了します。 新しい位置が有効な場合は、アスタリスクでマークされます。
最後に、グリッド表現が印刷されます。
感想
十分な解析結果と言えるのではないでしょうか。
2023.1.30追記
ChatGPTのソース解析結果を渡して、実行可能なソースが作れるか
→
できず。デバッグをしない。入力と出力の結果の判定をしないので、プログラム開発には使えない。(いまのところ)