はじめに
【Project Euler】とは、プログラミングで解く数学の問題集です。
本投稿では初学者なりに、Problem1 を解くにあたっての考え方を解説しています。
ちなみに言語はRubyを用いています。
※本投稿は、Project Eulerのガイドラインに従い、解答例としてのコードは載せておりません。
また、問題に関しては私が翻訳しています。ミスがあればご指摘ください。
【Project Euler】について知りたい方はこちらから↓
問題(original ver.)
A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 × 99.
Find the largest palindrome made from the product of two 3-digit numbers.
問題(翻訳ver.)
回文数とは、前後どちらから読んでも同じ数のことである。2桁の数の積で表される回文数のうち、最大のものは
9009 = 91 × 99 である。3桁の数の積で表される回文数のうち、最大のものを求めよ。
問題を解く上でのヒント
①アプローチとしては単純に100~999までの数字をかけ合わせた上で、積が回文数であれば任意の配列に入れ、最後に配列の中で一番大きいものを調べる、というアプローチが考えられます。
②100~999をかける作業は言い換えれば、値の範囲が決まっている繰り返し作業になります。つまり、範囲オブジェクトに対して繰り返し処理をおこなうと楽に記述できます。
③次に回文数かどうかの判定を行うことを考えます。
一つの手段として、数字を文字列に変換する方法が考えられます。数字を文字列に変換するのはto_sメソッドを使いましょう。
そのうえで、文字列を逆さにしたものと値が等しいか調べます。その際は、reverseを使うと良いです。
④最後に繰り返し処理の中で、条件に合致したものを配列に入れ、最大のものを出力すれば終わりです。
配列に値を追加する方法は割愛します。配列の中で最大のものを出力する方法は、配列名の末尾に.maxをつけるだけです。
おわりに
今回は【Project Euler】の問題4を解く上での考え方、流れを解説してきました。
一見複雑そうに見える問題も、整理すれば非常に簡単に解けることに感動します。
プログラミングってすごいですね。
このほかにも多くの問題が存在しているので、気になる方は最下部のリンクから挑戦して見てください。
また今後、私自身その他の問題にも挑戦し、同じような備忘録を投稿していきます。
私の備忘録が少しでも皆さんの参考になれば幸いです。ありがとうございました❗
問題を閲覧するにはアカウント登録が必要です。↑