あるインタビューで、PI の展開で最初の 9 桁の回文を見つけるように求められました。そして、私はそれをどのように行うべきかについてまったく考えていませんでした。質問はインタビュー中ずっと私のシステムに残っていて、その後の質問に適切に答えることができませんでした.
最適な方法は?
編集:
回文を見つけることは難しくありませんが、必要なだけ PI の展開を取得するにはどうすればよいですか。私はMath.PIを試しました.22/7を試しましたが、必要なものは何も得られません.
あるインタビューで、PI の展開で最初の 9 桁の回文を見つけるように求められました。そして、私はそれをどのように行うべきかについてまったく考えていませんでした。質問はインタビュー中ずっと私のシステムに残っていて、その後の質問に適切に答えることができませんでした.
最適な方法は?
編集:
回文を見つけることは難しくありませんが、必要なだけ PI の展開を取得するにはどうすればよいですか。私はMath.PIを試しました.22/7を試しましたが、必要なものは何も得られません.
ここでの「最適な」方法は、既製の任意の桁数にアクセスできないと仮定して、Pi を計算するためのアルゴリズムの選択に大きく依存します。
pi に対して収束する無限の合計がたくさんあり、それぞれが最終的に正しい数字を生成できますが、無限に正確な浮動小数点数または無限に大きな整数を許可するライブラリを使用する必要があります。
その後、回文を見つけるのは比較的簡単です。1 番目と 9 番目、2 番目と 8 番目などを比較するだけでよいからです。
この場合の問題は明らかに、Pi の近似にどの収束和を使用するかです。これらのいくつかは、Pi の wikipedia ページにリストされています: http://en.wikipedia.org/wiki/Pi#Polygon_approximation_era
まず、pi の数値のサブセットを作成し、文字列に変換します。
そこから 9 文字のサブセット文字列を取得し、最初の文字と最後の文字を比較します。一致する場合は、文字 2 と 8 などを比較します。いずれかの比較が失敗した場合は、9 文字の文字列を次のセットに移動します (1 文字分)。
おそらく、代入先とfirst index
値を指定して、それらが等しいかどうかを確認します。それらが等しい場合、中間位置で出会うまで、値と値を割り当てます。ある場所でそれらが互いに異なる場合は、 の値と の 2 番目の変数の値が異なるの値を割り当て、位置に到達するまでプロセスを繰り返します。first variable
ninth index
second variable
second index
first variable
eight index
second variable
first variable
latest left side index
right side index
left side index + 8
last index - 8