第5回【JavaScript】2 の累乗を表示、FizzBuzz

現在取り組んでいるのは、paiza ラーニング問題集「ループメニュー 1」になります。

はじめに

猫とキャンプと野球観戦と AWS が大好きな旦那、LeoSaki です。モフモフしたい。

JavaScript をゼロから勉強してみよう、のコーナー 5 回目です。

上司から、AWS はもう極めたんだから、(別のメガクラウド)に挑戦してみないか、と言われました。AWS を極めただなんて一度も思ったことはないですし、毎日新しい発見ばかりです。AWS でまだまだやることはたくさんありますから、と丁重にお断りしておきました。

それでは、今日も頑張ってみようと思います。

2 の累乗を表示 (paizaランク D 相当)

整数 N が与えられます。
2 の 1 乗から 2 の N 乗までを改行区切りで出力してください。


入力される値

N

・ 1 行目に整数 N が与えられます。

入力値最終行の末尾に改行が1つ入ります。


期待する出力

2 の 1 乗から 2 の N 乗までを改行区切りで出力してください。

2^1
2^2
...
2^N

また、末尾に改行を入れ、余計な文字、空行を含んではいけません。


すべてのテストケースにおいて、以下の条件をみたします。

・ 2 ≦ N ≦ 10


入力例

5

出力例

2
4
8
16
32

たかだか N は 10 程度なので、2 の累乗の配列を作って表示させればいいじゃん、とか言わない。

念のため、JavaScript の四則演算についても調べておく。

使い方説明
x + yx と y の和5 + 2 = 7
x – yx と y の差5 – 2 = 3
x * yx と y の積5 × 2 = 10
x / yx と y の商5 ÷ 2 = 2.5
x % yx と y の剰余(つまりは余り)5 ÷ 2 = 2 … 1
x ** yx の y 乗5 ^2 = 5 × 5 = 25
JavaScript
process.stdin.resume();
process.stdin.setEncoding('utf8');

var lines = [];
var reader = require('readline').createInterface({
  input: process.stdin,
  output: process.stdout
});
reader.on('line', (line) => {
  lines.push(line);
});
reader.on('close', () => {
  const n = lines[0];
  for (let i = 1; i <= n; i++) console.log(Math.pow(2,i));
});

アスタリスク 2 つで書くと、警告が出てしまう。

exponentiation operator’ is only available in es7 (use 'esversion 7’)

es7 でのみ使用できる、と言われているらしい。念のため、古くからの書き方で対応。

Python
N = int(input())
for n in range(1,N+1):
    print(2**n)

FizzBuzz (paizaランク D 相当)

1 ~ 100 の整数に対して、3 と 5 の両方で割り切れるなら FizzBuzz を、 3 でのみ割り切れるなら Fizz 、5 でのみ割り切れるなら Buzz を改行区切りで出力してください。また、どちらでも割り切れない場合は、その数字を改行区切りで出力してください。

1
2
Fizz
4
Buzz

入力される値

・ 入力は与えられません。

入力値最終行の末尾に改行が1つ入ります。


期待する出力

3 と 5 の両方で割り切れるなら FizzBuzz を、 3 でのみ割り切れるなら Fizz 、5 でのみ割り切れるなら Buzz を改行区切りで出力してください。また、どちらでも割り切れない場合は、その数字を改行区切りで出力してください。

また、末尾に改行を入れ、余計な文字、空行を含んではいけません。


すべてのテストケースにおいて、以下の条件をみたします。

・ 入力は与えられません。

FizzBuzz 問題ってこんな序盤に出てきたっけ? もっと後半にもやった気がするぞ? ループメニューで、まだ if 文はやっていないのだけれど、まぁ良いか。

JavaScript
for (let i = 1; i <= 100; i++) {
    if (i % 3 == 0 && i % 5 == 0) {
        console.log("FizzBuzz");
    } else if (i % 3 == 0) {
        console.log("Fizz");
    } else if (i % 5 == 0) {
        console.log("Buzz");
    } else {
        console.log(i);
    }
}
Python
for i in range(1,101):
    if i % 3 == 0 and i % 5 == 0:
        print("FizzBuzz")
    elif i % 3 == 0:
        print("Fizz")
    elif i % 5 == 0:
        print("Buzz")
    else:
        print(i)

最後に

for の範囲指定とか、JavaScript は、人の目で見て分かりやすい書き方だなぁ、という感想。Python は少しだけ頭で整理しないといけない。

論理演算子は「&&」か「||」か。最近、「AND」とか「OR」とか書いていたので、新鮮な気がしたけれど、そういえば PHP で書くときは「&&」か「||」か。とか思いながら書いていました。

引き続き、よろしくお願いいたします!

Python の第5回はこちら