開発・データ

答えを見ずにヒントだけでコーディング問題を解く

正解コードを見ずに、詰まった原因とヒントだけを段階的に引き出す

プロンプト · 変数 3個

あなたはアルゴリズム勉強会のメンターです。学習者が自力で答えに辿り着けるよう支援することが目的ですので、こちらが明確に求めるまで完成した解答コードは絶対に提示しないでください。

私は以下の問題を解いていますが、現在このような状況です:{{行き詰まった部分}}

ヒントを3段階に分けて提供してください。第1段階は見落としている観点や再確認すべき条件についての問いかけ、第2段階はどのアプローチをとるべきかの方針(データ構造や解法の名前程度まで)、第3段階は解法の全体的な流れの言葉による説明(コードは書かない)です。まずは第1段階のヒントだけを出して一度止まってください。私が「次のヒント」と言ったら続きを出してください。

各段階は3文以内の簡潔な文章にしてください。最後に「現在のコードで確認すべきポイント」を1行添えてください。

正解コードやそれに近いコードスニペットは書かないでください。私のコードに明らかな文法エラーや条件の読み落としがあれば、その点だけを指摘してください。もし私のアプローチ自体が根本から間違っている場合は、新しい解法を教える前に、どこからズレているのかをまず指摘してください。

問題: """ {{問題の説明}} """

私のコード: """ {{私のコード}} """

コピーしたらここに貼り付け · ChatGPT・Claudeはプロンプト入りで開きます

なぜこう書くのか

このプロンプトは7個のブロックでできています
役割 文脈 行き詰まった部分 手順 形式 制約 入力資料 問題の説明 入力資料 私のコード 役割 材料 やること 仕上がり 材料

ブロックを押すとその段落が見られます

役割 役割 · 誰として答えるか

あなたはアルゴリズム勉強会のメンターです。学習者が自力で答えに辿り着けるよう支援することが目的ですので、こちらが明確に求めるまで完成した解答コードは絶対に提示しないでください。

役割を与えるのテクニックを見る
  • 役割 誰として答えるか ×1
  • 材料 AIが知るべきこと ×3
  • やること 何をどう進めるか ×1
  • 仕上がり どんな形で受け取るか ×2

コーディング問題のヒントを得るためにAIへ問題を投げると、大抵はいきなり完成した解答コードが出力されます。そのコードはほぼ正しく、提出すればAC(正解)になります。しかしそれでは本質を理解しないまま進んでしまい、似た問題に出会ったときにまた同じところで手が止まります。このプロンプトは、あえて「答えをすぐに出させない」ための仕掛けです。

解説をもっと読む · 3段落

役割を「勉強会のメンター」に設定したのは、口調を整えるためだけではありません。メンターという役割には「学習者を自力で到達させる」という目的が組み込まれているため、後続の制約が自然に守られやすくなります。同じ指示を「シニアエンジニア」に与えると、リファクタリングされたコードから出力されがちです。

ヒントを3段階に分けた点が最大の要点です。アルゴリズム学習で必要なサポートの度合いは人によって異なります。条件を1行見落としていただけの人には第1段階で十分であり、それ以上の情報は単なるネタバレになってしまいます。段階を分けて途中で止めさせることで、必要な分だけヒントを受け取ることができます。

制約にある「正解に近いコードスニペットも書かないでください」という指示は、1行コードなどで答えが漏れてしまうのを防ぎます。さらに「どこからズレているのかをまず指摘してください」を加えることで、アプローチが間違っていた場合にAIが勝手に新解法へ乗り換えてしまい、自分がなぜ間違えたのか分からないままになる事態を防ぎます。

用語が分からなければAha AIで: role-prompting, chain-of-thought

悪い例との比較

悪い例にないもの: 役割 · 手順 · 形式 · 制約
悪い例 36字 このプロンプト 536字 役割 文脈 手順 形式 制約 入力資料 役割 · なし 手順 · なし 形式 · なし 制約 · なし
よくある悪い例

この問題どう解けばいい? 実行時間オーバーになる

(問題とコードを貼り付け)

ハッシュマップを使うべきという解説とともに、完成したコードが即座に出力されます。貼り付ければ通過するため、学習はそこで終わってしまいます。「なぜ二重ループを減らす必要があるのか」「自分のコードはどこで同じ値を再探索しているのか」という本質に気づけないため、次回以降も自力で解く力が身につきません。

バリエーション

1

コードは動くがなぜ動くのか理解できないとき

答えはすでに分かっていて、理解を深めたいときに使います。「ないと何が破綻するか」を尋ねることで、各行の表面的な解説ではなく、その処理が必要な根本理由を引き出せます。

プロンプトを見る

以下のコードは他人の解答を参考にして書いたもので、テストは通過しますが、なぜこれでうまくいくのか論理的に説明できません。コードを修正するのではなく、核となる処理の行を3箇所だけ選び、その行がないと何が破綻するのかを説明してください。最後に、私が自分の理解を確かめるための確認用の問いを2つ提示してください。

""" {{私のコード}} """

2

問題文の意味自体が理解できないとき

問題文が長かったり翻訳が不自然で、前提条件の把握で迷っているときに使います。解法への言及を禁止することで、問題文の読解と要件定義のみに焦点を絞れます。

プロンプトを見る

以下の問題を、解法には触れずに分かりやすく噛み砕いて説明してください。問題が求めている入力と出力を表形式で整理し、条件の中形で見落としやすいポイントを2つ挙げて教えてください。サンプル入力を1つ手動でトレースし、なぜその出力になるのかを示してください。ただし、アルゴリズムやコードには一切言及しないでください。

""" {{問題の説明}} """

モデル別の注意

答えを見たくなったら「第3段階のヒントまでください」のように段階を指定して依頼してください。最初からコードを要求すると、ヒントの制限が簡単に解除されてしまいます。

AIモデルは親切に教えようとする傾向が強いため、対話が長くなるとヒントの制限が緩みがちです。回答にコードが混ざり始めたら、「コードは書かずに、次の段階のヒントだけください」と改めて念押ししてください。また、問題文を画像キャプチャで渡すと制約条件や入力範囲を読み間違えることがあるため、テキストとして貼り付けることを推奨します。

最終更新 2026-09-02 · 誤りがありますか? 知らせる