LoginSignup
17
6

More than 5 years have passed since last update.

7²+8²+9²+...17²+18²=2018(年)になるというネタがホントかどうかChromeで検算する

Last updated at Posted at 2018-07-30

3年ぶりに投稿したVue.js+Vuexの図解記事が好評だったのでもう一つ生徒に人気のJavaScriptネタを書きました。
ブラウザさえあればエディタもメモ帳も使わずに数の神秘を体験できるのでJavaScriptに苦手意識がある方も楽しめる内容だと思います。

きっかけはツイッターのTL

年明けすぐくらいに「2018は、7から始まる12連続整数の平方和である」というつぶやきを見かけたのです。
Twitter:12連続整数 2018

つまり、
2018 = 7²+8²+9²+10²+11²+12²+13²+14²+15²+16²+17²+18²
が成立するのだとか。
「スゲエ!」と思ったのと同時に「ホントか!?」と考えて直後にはChromeで検算していました。
Consoleにfor文を打ち込んで「2018」と表示された時の私の感動がこの記事で伝われば嬉しいです。

エディタ不要!Chromeでの検算手順

①Chromeの開発者ツールを開く

Chromeで「新しいタブ」を開き、
「右クリック」⇒「検証」
を押すと、以下のように開発者ツールが現れます。
(今見ているQiitaのページでツールを開いてもOK)

0.jpg

開発者ツールのタブ3つ目にある「Console」をクリック。

1.jpg

カーソルが当たっている場所にコードを書くだけですぐにJavaScriptを動かせます。
試しに「Hello World!」と表示するalertを出してみました。

2.jpg

以降、紹介するJSのコードはここに打ち込んでいきます。
新しいコードを追加してエラーが出る場合はChromeをリロードしてください。

②基礎的なfor文で検算

「7から始まる12連続整数の平方和」という文章をそのままforで表現します。

ChromeConsole
var sum = 0;
for (var i = 7; i <= 18; i += 1) {
  sum += i * i;
}
console.log(sum);

ConsoleにコピペしてEnterキーを押してください。
「2018」って表示されますよね!?
感動しませんか!?

③forの条件を読みやすく改良

「var i = 0」でスタートさせると「12連続」というのが一目でわかるようになります。
iが小さくなった分、計算時に7を足しましょう。
ついでに、console.logの表現も工夫。

ChromeConsole
var sum = 0;
for (var i = 0; i < 12; i += 1) {
  sum += (i + 7) * (i + 7);
}
console.log('Result: ' + sum + '!');

④ES6の記法でちょっとカッコよく

最近はvarを使わない傾向になってきました。
今回は再代入するので「let」を使います。
さらに、「べき乗演算子」を使って2乗をスッキリと。
文字列の結合は「テンプレートリテラル(バッククォート)」で記述量が大幅に減ります。

ChromeConsole
let sum = 0;
for (let i = 0; i < 12; i += 1) {
  sum += (i + 7) ** 2;
}
console.log(`Result: ${sum}!`);

⑤ワンライナーで書く

forを使うと4行ですが、「スプレッド演算子」と「reduce」と「アロー関数」を使うと、1行で書けるんです!

ChromeConsole
const sum = [...Array(12)].reduce((prev, _, i) => prev + (i + 7) ** 2, 0);
console.log(`Result: ${sum}!`);

console.logもまとめるとこうなる。

ChromeConsole
console.log(`Result: ${[...Array(12)].reduce((prev, _, i) => prev + (i + 7) ** 2, 0)}!`);

他にもある2018の特性

Wikipedia見ると他にもたくさんあって面白いです。
2018 = 1³ + 7³ + 7³ + 11³
とかカッコいい。

Wikipedia: 2018

まとめ

一見無味乾燥なfor文でも「2018」って表示されると感動しますよね!
ES6の記法も覚えるまでは苦しいけれど、慣れるとコーディングがとってもラクになります。

続編を書きました!
【再帰関数に挑戦】超短いワンライナーの計算結果が2018になる過程を読み解く

17
6
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
6