第30回【JavaScript】二次元配列の入力 3、二次元配列の入力 4
現在取り組んでいるのは、paiza ラーニング問題集「配列メニュー」になります。
はじめに
猫とキャンプと野球観戦と AWS が大好きな旦那、LeoSaki です。モフモフしたい。
JavaScript をゼロから勉強してみよう、のコーナー 30 回目です。
背番号 30 と言えば、江川卓。ストレートは何 km/h 出ていたんだろう、と凄く気になります。いろいろな検証が行われていますが、てんでバラバラで実際のところは分かりません。まだ幼かったあの頃、江川の投球を見て興奮したのを覚えています。30 回目に 30 にちなんだお話。
それでは、今日も頑張ってみようと思います。
二次元配列の入力 3 (paizaランク D 相当)
1 行目に整数 N が与えられます。
2 行目以降に N 行 5 列の配列が与えられます。上から i 番目、左から j 番目の整数は a_ij です。
全要素を各行ずつ半角スペース区切りで出力し、行の終わりで改行してください。
入力される値
N
a_11 ... a_15
...
a_N1 ... a_N5
1 行目に整数 N が与えられます。
2 行目以降に N 行 5 列の配列が与えられます。
入力値最終行の末尾に改行が1つ入ります。
期待する出力
二次元配列の全要素を各行ずつ半角スペース区切りで出力し、行の終わりで改行してください。
a_11 ... a_15
...
a_N1 ... a_N5
また、末尾に改行を入れ、余計な文字、空行を含んではいけません。
すべてのテストケースにおいて、以下の条件をみたします。
* N, a_ij は 1 以上 100 以下の整数
入力例
3
8 1 3 8 1
1 5 6 4 7
1 100 56 25 15
出力例
8 1 3 8 1
1 5 6 4 7
1 100 56 25 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 n = Number(lines[0]);
const a = [];
for (let i = 1; i <= n; i++) {
a.push(lines[i].split(/\s/).map(Number));
}
for (let i = 0; i < n; 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
N = int(input())
A = [list(map(int,input().split())) for _ in range(N)]
for a in A:
print(*a,sep=" ")
二次元配列の入力 4 (paizaランク D 相当)
1 行目に整数 N と整数 M が与えられます。
2 行目以降に N 行 M 列の配列が与えられます。上から i 番目、左から j 番目の整数は a_ij です。
全要素を各行ずつ半角スペース区切りで出力し、行の終わりで改行してください。
入力される値
N M
a_11 ... a_1M
...
a_N1 ... a_NM
1 行目に整数 N と整数 M が与えられます。
2 行目以降に N 行 M 列の配列が与えられます。
入力値最終行の末尾に改行が1つ入ります。
期待する出力
二次元配列の全要素を各行ずつ半角スペース区切りで出力し、行の終わりで改行してください。
a_11 ... a_1M
...
a_N1 ... a_NM
また、末尾に改行を入れ、余計な文字、空行を含んではいけません。
すべてのテストケースにおいて、以下の条件をみたします。
* N, M, a_ij は 1 以上 100 以下の整数
入力例
4 3
1 2 3
8 1 3
10 100 0
12 24 84
出力例
1 2 3
8 1 3
10 100 0
12 24 84
ようやく、必要な値がすべて標準入力から与えられる問題です。
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,m] = lines[0].split(/\s/).map(Number);
const a = [];
for (let i = 1; i <= n; i++) {
a.push(lines[i].split(/\s/).map(Number));
}
for (let i = 0; i < n; i++) {
for (let j = 0; j < m; j++) {
if (j == m - 1) {
console.log(a[i][j]);
} else {
process.stdout.write(a[i][j] + ' ');
}
}
}
});
Python
N,M = map(int,input().split())
A = [list(map(int,input().split())) for _ in range(N)]
for a in A:
print(*a,sep=" ")
最後に
多分、Python のように配列を展開する方法として、console.log(a[i].join(' ')); でもいける気がするのだけれど、とりあえずは、正攻法というか、求められていそうな解答で書いてみました。
いろいろな引き出しを持っておくことは重要だと思うので、調べていて新しい方法を見つけたときは、積極的に試していきたいと思っています。
引き続き、よろしくお願いいたします!
ディスカッション
コメント一覧
まだ、コメントがありません