LLMが出力したコードをレビューする
プロンプト
ランダムな1000個の要素が入る配列を用意してバブルソートで昇順に並び替えるPythonコードを生成してください。
GPT-3
import random
# ランダムな1000個の要素を持つ配列を生成
array = [random.randint(1, 10000) for _ in range(1000)]
# バブルソートを定義
def bubble_sort(arr):
n = len(arr)
for i in range(n):
# 最後のi個の要素はすでにソート済みなので無視できる
for j in range(0, n - i - 1):
# 隣接する要素を比較し、順番が逆なら入れ替える
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
# バブルソートを実行
bubble_sort(array)
# 昇順にソートされた配列を表示
print("昇順にソートされた配列:")
print(array)
コードは11行 ※ライブラリのインポートも含めて行数カウントする。
GPT-4
一度目の指示
import random
# ランダムな1000個の要素が入る配列を生成
array = [random.randint(1, 1000) for _ in range(1000)]
# バブルソート
def bubble_sort(array):
n = len(array)
for i in range(n):
for j in range(0, n - i - 1):
if array[j] > array[j + 1]:
array[j], array[j + 1] = array[j + 1], array[j]
return array
# 配列を昇順に並び替え
sorted_array = bubble_sort(array)
並び替えるだけ。数値の出力までしてくれませんでした。そこで追加指示をしました。
二度目の指示(追記されたコード)
# 並び替え後の配列を出力
print(sorted_array)
コードは10+1行
CLAUDE-2.1
import numpy as np
import random
# 1000個のランダムな要素の配列を生成
arr = np.random.randint(1, 1000, size=1000)
def bubble_sort(arr):
n = len(arr)
for i in range(n):
for j in range(0, n-i-1):
if arr[j] > arr[j+1] :
arr[j], arr[j+1] = arr[j+1], arr[j]
return arr
# バブルソートを適用
sorted_arr = bubble_sort(arr)
print(sorted_arr)
コードは12行
Gemini PRO
import random
# ランダムな1000個の要素を生成する関数
def generate_random_list(n):
return [random.randint(1, 1000) for _ in range(n)]
# バブルソートを実行する関数
def bubble_sort(lst):
n = len(lst)
for i in range(n - 1, 0, -1):
for j in range(i):
if lst[j] > lst[j + 1]:
lst[j], lst[j + 1] = lst[j + 1], lst[j]
return lst
# ランダムな1000個の要素を生成し、バブルソートで昇順に並べる
random_list = generate_random_list(1000)
sorted_list = bubble_sort(random_list)
print(sorted_list)
コードは13行
講評
私(非エンジニア)
二度指示する必要があったとはいえ、ライブラリのインポートが1つ(乱数生成で共通のrandomのみ)で最小限かつ、ブロック構造の第一階層が5段にまとまっているGPT-4 が最もスマートに見えますが、いかがでしょうか..?
補足
エンジニアの友人のアドバイス
LLMの出力したコードはどれも問題なく簡潔なコードである。
もっと難しいコードを書かせると差が出るかもしれない。
良いコードとは
この記事が参加している募集
この記事が気に入ったらサポートをしてみませんか?