第8回【JavaScript】奇数だけ出力、割り切れる数だけ出力、偶奇の判定

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

はじめに

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

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

カッコやセミコロンがごちゃごちゃになって困ります。AWS Lambda では Python を利用することが多いのですが、変なところにカッコをつけて、なかなかエラーに気づくことが出来なかったり。まだまだ Python も JavaScript も完全に自分のものになっていない、と言われればそれまで。勉強あるのみです。

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

奇数だけ出力 (paizaランク D 相当)

N 個の整数 a_1, a_2, …, a_N が与えられます。
この N 個の整数のうち、a_1 から順に奇数か偶数か判定し、奇数の場合のみ改行区切りで出力してください。
また、N 個の整数には奇数が少なくとも 1 つ含まれています。


入力される値

N
a_1 a_2 ... a_N

・ 1 行目に整数 N が与えられます。
・ 2 行目に N 個の整数 a_1, a_2, …, a_N が与えられます。

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


期待する出力

N 個の整数のうち、a_1 から順に奇数か偶数か判定し、奇数の場合のみ改行区切りで出力してください。

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


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

・ 1 ≦ N ≦ 100
・ 0 ≦ a_i ≦ 100 (1 ≦ i ≦ N)
・ N 個の整数には奇数が少なくとも 1 つ含まれる。


入力例

5
1 3 5 7 9

出力例

1
3
5
7
9

偶奇の判定は、どの言語でも、学び始めた最初の頃にやる内容ですね。

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];
  const a = lines[1].split(/\s/).map(Number);
  for (let i = 0; i < n; i++) {
      if (a[i] % 2 == 1) console.log(a[i]);
  }
});
Python
N = int(input())
A = list(map(int,input().split()))
for i in range(N):
    if A[i] % 2 == 1:
        print(A[i])

割り切れる数だけ出力 (paizaランク D 相当)

N 個の整数 a_1, a_2, …, a_N が与えられます。
この N 個の整数のうち、a_1 から順に 3 で割り切れるか判定し、割り切れる場合のみ改行区切りで出力してください。
また、N 個の整数には 3 で割り切れる数が少なくとも 1 つ含まれています。


入力される値

N
a_1 a_2 ... a_N

・ 1 行目に整数 N が与えられます。
・ 2 行目に N 個の整数 a_1, a_2, …, a_N が与えられます。

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


期待する出力

N 個の整数のうち、a_1 から順に 3 で割り切れるか判定し、割り切れる場合のみ改行区切りで出力してください。

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


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

・ 1 ≦ N ≦ 100
・ 0 ≦ a_i ≦ 100 (1 ≦ i ≦ N)
・ N 個の整数には 3 で割り切れる数が少なくとも 1 つ含まれる。


入力例

5
3 6 9 12 15

出力例

3
6
9
12
15

3 で割り切れるかどうかを判断する。偶奇の判定とあまり変わらないかな。

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];
  const a = lines[1].split(/\s/).map(Number);
  for (let i = 0; i < n; i++) {
      if (a[i] % 3 == 0) console.log(a[i]);
  }
});
Python
N = int(input())
A = list(map(int,input().split()))
for i in range(N):
    if A[i] % 3 == 0:
        print(A[i])

偶奇の判定 (paizaランク D 相当)

N 個の整数 a_1, a_2, …, a_N が与えられます。
この N 個の整数について、a_1 から順に 奇数か偶数か判定し、奇数なら odd 、偶数なら even を改行区切りで出力してください。

入力例
4
1 2 3 4
出力例
odd
even
odd
even

入力される値

N
a_1 a_2 ... a_N

・ 1 行目に整数 N が与えられます。
・ 2 行目に N 個の整数 a_1, a_2, …, a_N が与えられます。

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


期待する出力

N 個の整数について、a_1 から順に 奇数か偶数か判定し、奇数なら odd 、偶数なら even を改行区切りで出力してください。

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


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

・ 1 ≦ N ≦ 100
・ 0 ≦ a_i ≦ 100 (1 ≦ i ≦ N)


入力例

5
1 2 3 4 5

出力例

odd
even
odd
even
odd

何度も偶奇判定と書いていたら、本当にあった。偶奇判定の問題。

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];
  const a = lines[1].split(/\s/).map(Number);
  for (let i = 0; i < n; i++) {
      if (a[i] % 2 == 0) {
          console.log('even');
      } else {
          console.log('odd');
      }
  }
});
Python
N = int(input())
A = list(map(int,input().split()))
for i in range(N):
    if A[i] % 2 == 0:
        print("even")
    else:
        print("odd")

最後に

偶奇判定はいろんな場面で使っている気がする。2 で割り切れたら偶数、そうでなければ奇数。

Python のなんと簡潔なことか。こうやって並べてみると、違いがよくわかります。Python の学習の際に VBA を一緒に並べていたのだけれど、JavaScrip はどちらかというと VBA に似ている感じ。気になった方は、下のリンクから確認してみてください!

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

Python の第8回はこちら