演習: プロンプトと学習活用
2-a. プロンプトを改善する
Section titled “2-a. プロンプトを改善する”以下のプロンプトを Gemini に入力してください。
JavaScript の配列のソートについて教えて出力を読んで、本文 2-1. よくある問題と改善 の表に照らし合わせ、どこに不備があるかを書き出してください。
次に、特定した不備を改善するようプロンプトを修正し、再度入力してください。最初の出力と改善後の出力を比較し、どこが改善されたかを確認します。
ヒント
最初のプロンプトは「ソートについて」とだけ書いていて範囲が広いので、情報が多くなりがちです。「数値の昇順だけ」「コード例 1 つ」「初心者向け」のような制約を加えると、知りたい情報に絞れます。本文 1-4. 制約の明示 も参考になります。
2-b. 二分探索を AI と一緒に読む
Section titled “2-b. 二分探索を AI と一緒に読む”7. 探索アルゴリズム で扱った二分探索のコードを Gemini に貼り付け、わからない箇所を質問してください。
function binarySearch(arr, target) { let low = 0; let high = arr.length - 1;
while (low <= high) { const mid = Math.floor((low + high) / 2);
if (arr[mid] === target) { return mid; } else if (arr[mid] < target) { low = mid + 1; } else { high = mid - 1; } }
return -1;}たとえば次のような質問をします。
このコードで Math.floor を使っているのはなぜですか?low <= high ではなく low < high だとどうなりますか?なぜ low = mid + 1 であって low = mid ではないのですか?Gemini の回答を読んで、わからなかった部分を 自分の言葉で説明できるか 試してください。説明できなければ、追加で質問します。
ヒント
「動いた」で終わらせず、「わかった」まで深掘りするのがこの演習の目的です。本文 3. 学習への活用 を参照してください。
2-c. バブルソートのバグを見つける
Section titled “2-c. バブルソートのバグを見つける”以下のコードはバブルソートを実装していますが、バグがあります。
function bubbleSort(arr) { const n = arr.length;
for (let i = 0; i < n; i++) { for (let j = 0; j < n - 1; j++) { if (arr[j] > arr[j + 1]) { arr[j] = arr[j + 1]; arr[j + 1] = arr[j]; } } }
return arr;}
console.log(bubbleSort([5, 3, 8, 4, 2]));このコードを実行すると、期待した [2, 3, 4, 5, 8] になりません。Gemini に以下のように質問してください。
以下のコードを実行すると、期待した結果になりません。期待: [2, 3, 4, 5, 8]実際: <ここに実際の結果を書く>
バグの原因を説明してください。修正コードはまだ見せないでください。AI の説明を読んで原因を理解したら、自分でコードを修正してください。修正後、bubbleSort([5, 3, 8, 4, 2]) を実行して [2, 3, 4, 5, 8] が出力されることを確認します。
ヒント
arr[j] = arr[j + 1] で arr[j] の元の値が消えてしまっています。本文 9. ソートアルゴリズム 2-2 実装の方針 で扱った temp を使う 3 段階の入れ替えが必要です。
2-d. 線形探索と二分探索を比較する
Section titled “2-d. 線形探索と二分探索を比較する”Gemini に以下の質問をしてください。
線形探索と二分探索の違いを教えてください。それぞれのメリット・デメリットも説明してください。回答を読んだあと、さらに以下の質問をしてください。
配列が 10 個の場合と 10000 個の場合で、それぞれ最大何回の比較が必要ですか?二分探索が使えない場面はありますか?その理由も教えてください。最後に、以下の問いに 自分の言葉で 答えられるか確認してください。
- 線形探索と二分探索、それぞれの特徴は?
- それぞれのメリット・デメリットは?
- どんな場面でどちらを使うべきか?
ヒント
二分探索は「ソート済みの配列」が前提です。本文 7. 探索アルゴリズム 3-1 線形探索の限界 も参考になります。