JavaScript

【JS】JavaScriptで世界で一番クールなFizzBuzzと二番目のFizzBuzz

こんにちは!今日はエンジニアなら誰もが知ってるFizzBuzzをJavaScriptで書きたいと思います!

書くだけだと二番煎じなので、めっちゃクールに書きます。可読性?知らん

世界で一番クールなFizzBuzz

どうぞ。

const r = i =>
  console.log(
      (i % 3 ? '' : 'Fizz')
    + (i % 5 ? '' : 'Buzz')
    + (i % 3 && i % 5 ? i : '')
  )
  || i - 100
  && r(i + 1)

r(1)

解説

再帰式を用いて関数rを100回実行しています。

console.logで3,5,15の倍数でF,B,FBを出力してます。

console.logは戻り値がfalsyなので、||で次に繋がります。

次のi - 100がtrue、つまりi == 100ならループ終了、 それ以外ならiを1足して再帰です。

世界で二番クールなFizzBuzz

どうぞ。

const r = _ =>
  [... Array(100)].map((_, i) =>
    console.log(
      (i % 3 - 2 ? '' : 'Fizz')
    + (i % 5 - 4 ? '' : 'Buzz')
    + (i % 3 - 2 && i % 5 - 4 ? i + 1: '')
  ))

r()

解説

こちらは関数の実行は1回のみですが、長さ100の配列にmapしてconsole.logを100回出しています。

[… Array(100)]でmapできる長さ100の配列を生成、

console.log部分は上に同じですが、1が0から始まる都合上少々表記が冗長になっています。

使いどころ

…エンジニア同士の会話?の時にどうぞ。まあFizzBuzzはそういうもんだよね。

クールの定義って?

それはもう、短いか、最近の書き方してるか、記号ばっかになってないか?じゃないですかね、うん?