第29回【JavaScript】二次元配列の入力 1、二次元配列の入力 2

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

はじめに

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

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

AWS では新しいサービスを追っかけるだけで大変です。更に、既存サービスのアップデート頻度も高く、久しぶりにそのサービスのコンパネを開いたら見た目が全然違う、ということも多々あります。問題は、ネットの情報が追いついていないため、手探りで作業を始めないといけないというところです。

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

二次元配列の入力 1 (paizaランク D 相当)

以下の二次元配列を宣言し、全要素を各行ずつ半角スペース区切りで出力し、各行の終わりで改行してください。

1 3 5 7
8 1 3 8

入力される値

入力は与えられません。

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


期待する出力

二次元配列の全要素を各行ずつ半角スペース区切りで出力し、行の終わりで改行してください。

1 3 5 7
8 1 3 8

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


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

入力は与えられません。

前回か前々回か・・・なんか似たようなことをやったような。

JavaScript
const l = [[1, 3, 5, 7], [8, 1, 3, 8]];
for (let i = 0; i < l.length; i++) {
    const len = l[i].length;
    for (let j = 0; j < len; j++) {
        if (j == len - 1) {
            console.log(l[i][j]);
        } else {
            process.stdout.write(l[i][j] + ' ');
        }
    }
}
Python
L = [[1, 3, 5, 7], [8, 1, 3, 8]]
for i in range(len(L)):
    for j in range(len(L[i])):
        print(L[i][j], end="")
        if j < len(L[i]) - 1:
            print(end=" ")
        else:
            print()

二次元配列の入力 2 (paizaランク D 相当)

1 行目に整数 M が与えられます。
2 行目以降に 5 行 M 列の配列が与えられます。上から i 番目、左から j 番目の整数は a_ij です。
全要素を各行ずつ半角スペース区切りで出力し、行の終わりで改行してください。


入力される値

M
a_11 ... a_1M
...
a_51 ... a_5M

1 行目に整数 M が与えられます。
2 行目以降に 5 行 M 列の配列が与えられます。

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


期待する出力

二次元配列の全要素を各行ずつ半角スペース区切りで出力し、行の終わりで改行してください。

a_11 ... a_1M
...
a_51 ... a_5M

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


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

* M, a_ij は 1 以上 100 以下の整数


入力例

4
1 2 3 4
0 0 0 0
8 1 3 8
1 10 100 99
15 68 48 15

出力例

1 2 3 4
0 0 0 0
8 1 3 8
1 10 100 99
15 68 48 15

行数はわかっていて、列数を標準入力から与えられる、ということですか。

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 m = Number(lines[0]);
  const a = [];
  for (let i = 1; i <= 5; i++) {
      a.push(lines[i].split(/\s/).map(Number));
  }
  for (let i = 0; i < a.length; i++) {
      const len = a[i].length;
      for (let j = 0; j < len; j++) {
          if (j == len - 1) {
              console.log(a[i][j]);
          } else {
              process.stdout.write(a[i][j] + ' ');
          }
      }
  }
});
Python
M = int(input())
A = [list(map(int,input().split())) for _ in range(5)]
for a in A:
    print(*a,sep=" ")

最後に

コードが長くなってしまうのは仕方がないとして、やっていること自体は Python と同じです。ここまでやってきて、JavaScript は素直な印象。いや、アロー関数とか突き詰めていくと、癖は強いんでしょうけれど。

面白いんですが、自分がどれくらい成長しているのかは謎です。まだ、そこまで JavaScript を利用したコードを書いてはいないので。うーん、時間が足りない!

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

Python の第29回はこちら