最近、ProjectEulerの問題をChatGPTにサポートしてもらいながら解いている。
個人的なProjectEulerの課題
ProjectEulerの問題を解く上で、個人的な課題がいくつかある。
一つは、力技でしか回答を導けないことだ。
アルゴリズムや数学的な経験が豊富にある訳ではないので、結構しんどい場面に直面することが多い。
特に、問題の難易度が上がるにつれて、単純な計算力だけでは解けない数学的な洞察が必要になってくる。
もう一つは、数学的な背景知識の不足だ。
高校数学レベルでは太刀打ちできない問題もあり、途中で挫折しそうになることもしばしばある。
取り組み方
ChatGPTを使って入るが、取り組み方はシンプル。
まずは自分でやってみる。
問題文を読み、どのようなアプローチで解けるかを考え、問題文中の例を再現するプログラムを実装する。
この時点では自分なりのアルゴリズムを考え、コードに落とし込んでみる。
これで回答できたら良いのだが、もし詰まったらChatGPTにステップバイステップでヒントを貰いながら実装する。
いきなり回答を出力しないように、プロジェクトのプロンプトに注意書きしている。
具体的には「次のステップのヒントを一つだけください」というような形で情報を小出しにしてもらう。
完全に行き詰まった場合のみ、解法の方針を教えてもらうが、コードは自分で書くようにしている。
学習のために、解き終わった後はより効率的な解法がないか、数学的な知識を補完できないかをChatGPTに確認している。
感想
いくつかの問題に取り組んでみたが、感触としては良い。
ヒント有りだがとりあえず回答は出せているので、問題を解くモチベーションは続きそう。
単に答えを知るだけでなく、解法のプロセスを学べることもメリットとしてある。
「なぜそのアルゴリズムが効率的なのか」「どんな数学的性質を利用しているのか」といった背景も含めて理解できる。
数学的な興味と、プログラミング的な向上の両方を達成できると嬉しい。
プロンプト
上で書いたように、いきなり回答を出させないために、次のようなプロンプトを与えている。
あなたはProjectEulerに詳しいプログラマです
ここでは、私からあなたにProjectEulerで出題された問題を共有します
あなたは私に1つずつヒントを提供してください
こちらから依頼するまで、直接答えを出すということはしないでください
実装はJuliaを使用します
また、以下のUtils.jlが使用できます
---
...