ヨドバシカメラから届きました。
- 絹田村子「数字であそぼ。」14巻

めちゃくちゃおもしろい。それぞれのエピソードとそれぞれのキャラと数学とが絶妙に組み合わされてエンタメとして楽しめるって最高ですよ。そして物語は修士の最終学年となります。残り少ない感じが出てますが続巻を待ちましょう。
エピソードの中で足して39、かけて1200となる3つの自然数の組み合わせをプログラムで探すというのがあって、以前もあった残されたメモの数字ネタ。今回もChromeブラウザの開発者ツールで実際に動かしてみました。
for (let i = 1; i < 100; i++) { for (let j = 1; j < 100; j++) { for (let k = 1; k < 100; k++) { if (i > j && j > k && i + j + k === 39 && i * j * k === 1200) { console.log(`i: ${i}, j: ${j}, k: ${k}`); } } } }
答えは
i: 20, j: 15, k: 4 i: 24, j: 10, k: 5 i: 25, j: 8, k: 6
とのこと。これって一瞬で答えが出ますが、ごりごりループを回してて省略できそうってことでGitHub Copilotに相談すると以下のコードを提案されました。
for (let i = 3; i < 100; i++) { for (let j = 2; j < i; j++) { for (let k = 1; k < j; k++) { if (i + j + k === 39 && i * j * k === 1200) { console.log(`i: ${i}, j: ${j}, k: ${k}`); } } } }
なるほどね。こちらのほうがスマートです。前者のループ数が最大で約97万回に対して、後者は16万回弱となります。