第4回【JavaScript】数列同士の引き算、数列の反転、九九の表示

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

はじめに

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

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

最近、AWS での作業が増えていて、ちょっぴり幸せです。調子に乗って、AWS T シャツと AWS ジップパーカーを制服代わりに着て出社しています。

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

数列同士の引き算 (paizaランク D 相当)

長さ N の数列 a (a_1, a_2, …, a_N) と b (b_1, b_2, …, b_N) が与えられます。
a の各要素から b の各要素を引いた結果 (a_1 – b_1, a_2 – b_2, …, a_N – b_N) を、改行区切りで出力してください。


入力される値

N
a_1 a_2 ... a_N
b_1 b_2 ... b_N

・ 1 行目に整数 N が与えられます。
・ 2 行目に長さ N の数列 a が与えられます。
・ 3 行目に長さ N の数列 b が与えられます。

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


期待する出力

a の各要素から b の各要素を引いた結果を、改行区切りで出力してください。

a_1-b_1
a_2-b_2
...
a_N-b_N

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


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

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


入力例

5
1 2 3 4 5
5 4 3 2 1

出力例

-4
-2
0
2
4

やることは Python でやったのと同じ。ちょっと癖があるけれど、面白いなぁ。

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

数列の反転 (paizaランク D 相当)

長さ N の数列 a (a_1, a_2, …, a_N) が与えられます。
この数列の要素を逆順に、改行区切りで出力してください。


入力される値

N
a_1 a_2 ... a_N

・ 1 行目に整数 N が与えられます。
・ 2 行目に長さ N の数列 a が与えられます。

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


期待する出力

数列の要素を逆順に、改行区切りで出力してください。

a_N
a_(N-1)
...
a_1

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


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

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


入力例

5
1 2 3 4 5

出力例

5
4
3
2
1

ループメニューなので、正攻法(?)で逆順と正順にループを回す解答を作ってみようと思った。

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 = n - 1; i >= 0; i--) console.log(a[i]);
});
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).reverse();
  for (let i = 0; i < n; i++) console.log(a[i]);
});
Python
N = int(input())
A = list(map(int,input().split()))
for i in range(N-1,-1,-1):
    print(A[i])

九九の表示 1 (paizaランク D 相当)

九九の 8 の段を半角スペース区切りで出力してください。


入力される値

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

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


期待する出力

九九の 8 の段を半角スペース区切りで出力してください。

8 16 24 32 40 48 56 64 72

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


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

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

ふむぅ。方法はたくさん思いつく。模範解答がないから、何が正しいのか・・・自信がないなぁ。

JavaScript
var li = [];
for (let i = 1; i < 10; i++) {
    li.push(i * 8);
}
console.log(li.join(' '));
Python
li = [0]*9
for i in range(1,10):
    li[i-1] = 8 * i
print(*li)

九九の表示 2 (paizaランク D 相当)

整数 N が与えられます。
九九の N の段を半角スペース区切りで出力してください。


入力される値

N

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

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


期待する出力

九九の N の段を半角スペース区切りで出力してください。

N*1 N*2 ... N*9

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


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

・ 1 ≦ N ≦ 9


入力例

5

出力例

5 10 15 20 25 30 35 40 45

8 の段が N の段に変わっただけ。難しくない。

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];
  let li = [];
  for (let i = 1; i < 10; i++) {
      li.push(n * i);
  }
  console.log(li.join(' '));
});
Python
N = int(input())
print(*[i * N for i in range(1,10)])

最後に

もっとカッコいい書き方であったり、JavaScript らしい書き方があるのだろうけれど、それは追々覚えていくことにして。

それにしても、面白いです。Python では、簡潔に書くことばかり考えていましたが、JavaScript では、コードを書いている感が強い気がします。

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

Python の第4回はこちら