php エディタ Apple は、ProjectEuler 第 17 号で興味深い状況に遭遇しました。コードを 1 行変更した後、コードは正常に動作するはずだと思っていたにもかかわらず、答えが劇的に変わってしまったことがわかりました。この疑問が彼の好奇心を刺激し、その理由を調べて解決策を探し始めました。この物語には挑戦と想いが詰まっており、編集者の答えが楽しみになります。
質問内容
プロジェクトオイラーの質問17に取り組んでいます。書かれた数字の合計文字数を 1 ~ 1000 までカウントするプログラムを作成する必要があります。スペースとハイフンは無視されます。問題の説明によると、数百の数字に「and」が含まれています (342)。私のコードは、100 の倍数 (追加の「合計」を計算する場合) を除いて、ほとんどの場合に機能します。たとえば、600 は「600 and」と数えます。このため、私の答えは 27 (100 桁中 9 桁中 3 桁) から外れてしまいました。これはほぼ正しい解決策です:
リーリーこれにより、出力は 21151 になりますが、これは予想される出力 21124 とは 27 異なります。変数 num
はデバッグ目的で使用されます。
ループの行の 1 つを変更して、追加のステートメントを追加してみました:
リーリーこの更新バージョンを実行すると、出力は 18487 になります。なぜこの違いがこれほど顕著なのかわかりませんが、これがどこから来るのかを理解したいと思っています。私の知識が限られていたため、最初は三項演算子のせいだと思いました。また、コードをより効率的にするための提案も歓迎します。 印刷する前に sum-27 と入力したいのですが、それは少しズルな気がします:)。 ありがとう!
回避策
他の人があなたの質問へのコメントで述べているように、あなたの問題は、コードが100の倍数の数値をどのように処理するかです。常に hundred を追加し、単に hundredum> を追加することはありません。実際、あなたは質問の中で自分自身を示しました:
以下のコードでは、三項演算子
ではなく、明示的な if ステートメントを使用しています。これは、コードを読むときに理解しやすくなると考えているためです。これが、質問に投稿されたコードに加えた唯一の変更であることに注意してください。
上記のコードを実行すると、次の結果が得られます:
リーリー質問のコード内で、これが予想される答えであると (コードのコメントに) 書きました。
以上がProjectEuler 質問 17: このコード行を変更すると、うまくいくはずだと思っていたにもかかわらず、答えが劇的に変わりましたの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SublimeText3 中国語版
中国語版、とても使いやすい

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

WebStorm Mac版
便利なJavaScript開発ツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。
