見出し画像

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の出力したコードはどれも問題なく簡潔なコードである。
もっと難しいコードを書かせると差が出るかもしれない。

良いコードとは

コードの評価基準について考えると、以下の点が重要だと思います。
正確性: 正しい出力が得られるか
可読性: 他の人が理解しやすい構造になっているか
効率性: 処理速度やメモリ使用量などのパフォーマンス指標が良好か
保守性: 修正や拡張がしやすい設計になっているか

回答:Perplexity AI

この記事が参加している募集

やってみた

この記事が気に入ったらサポートをしてみませんか?