第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 + y | x と y の和 | 5 + 2 = 7 |
x – y | x と y の差 | 5 – 2 = 3 |
x * y | x と y の積 | 5 × 2 = 10 |
x / y | x と y の商 | 5 ÷ 2 = 2.5 |
x % y | x と y の剰余(つまりは余り) | 5 ÷ 2 = 2 … 1 |
x ** y | x の 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 で書くときは「&&」か「||」か。とか思いながら書いていました。
引き続き、よろしくお願いいたします!
ディスカッション
コメント一覧
まだ、コメントがありません