第31回【JavaScript】i番目の出力 1、i番目の出力 2、【二次元配列の入出力】i番目の出力 Boss
現在取り組んでいるのは、paiza ラーニング問題集「配列メニュー」になります。
はじめに
猫とキャンプと野球観戦と AWS が大好きな旦那、LeoSaki です。モフモフしたい。
JavaScript をゼロから勉強してみよう、のコーナー 31 回目です。
JavaScript の勉強を頑張っている最中、Lambda でとあるコードを書く必要が出てきました。ここは Node.js を選択するべきか? まぁ、Python 指定だったので、勝手に Node.js とは言えませんけれど。余裕が出来たら、Python で書いたコードを Node.js で書き換えて、同じように動作するか試してみたいです。
それでは、今日も頑張ってみようと思います。
i番目の出力 1 (paizaランク D 相当)
整数 K と 整数 L が与えられます。
以下の二次元配列 a を宣言し、この配列の K 行目 L 列目の要素を出力してください。
上から i 番目、左から j 番目の整数は a_ij です。
1 2 3 4
10 100 0 5
8 1 3 8
15 34 94 25
入力される値
K L
整数 K と 整数 L が与えられます。
入力値最終行の末尾に改行が1つ入ります。
期待する出力
配列の K 行目 L 列目の要素を出力してください。
a_KL
また、末尾に改行を入れ、余計な文字、空行を含んではいけません。
すべてのテストケースにおいて、以下の条件をみたします。
* K, L は 1 以上 4 以下の整数
入力例
4 3
出力例
94
インデックスがゼロから始まることを・・・っていつも書いている気がしてきたぞ。
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 [k,l] = lines[0].split(/\s/).map(Number);
const a = [[1, 2, 3, 4], [10, 100, 0, 5], [8, 1, 3, 8], [15, 34, 94, 25]];
console.log(a[k-1][l-1]);
});
Python
K,L = map(int,input().split())
li = [[1, 2, 3, 4], [10, 100, 0, 5], [8, 1, 3, 8], [15, 34, 94, 25]]
print(li[K-1][L-1])
i番目の出力 2 (paizaランク D 相当)
1 行目に整数 K と 整数 L が与えられます。
2 行目以降に 3 行 3 列の二次元配列が与えられます。
配列の K 行目 L 列目の要素を出力してください。
上から i 番目、左から j 番目の整数は a_ij です。
入力される値
K L
a_11 ... a_13
...
a_31 ... a_33
1 行目に整数 K と 整数 L が与えられます。
2 行目以降に 3 行 3 列の二次元配列が与えられます。
入力値最終行の末尾に改行が1つ入ります。
期待する出力
配列の K 行目 L 列目の要素を出力してください。
a_KL
また、末尾に改行を入れ、余計な文字、空行を含んではいけません。
すべてのテストケースにおいて、以下の条件をみたします。
* K, L は 1 以上 3 以下の整数
* a_ij は 1 以上 100 以下の整数
入力例
2 3
1 2 3
4 5 6
7 8 9
出力例
6
今度は配列も標準入力から与えられる。それ以外はさっきと同じ。
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 [k,l] = lines[0].split(/\s/).map(Number);
const a = [];
for (let i = 1; i <= 3; i++) {
a.push(lines[i].split(/\s/).map(Number));
}
console.log(a[k-1][l-1]);
});
Python
K,L = map(int,input().split())
li = [list(map(int,input().split())) for _ in range(3)]
print(li[K-1][L-1])
【二次元配列の入出力】i番目の出力 Boss (paizaランク D 相当)
1 行目に整数 N, M, K, L が与えられます。
2 行目以降に N 行 M 列の二次元配列が与えられます。
配列の K 行目 L 列目の要素を出力してください。
上から i 番目、左から j 番目の整数は a_ij です。
入力される値
N M K L
a_11 ... a_1M
...
a_N1 ... a_NM
1 行目に整数 N, M, K, L が与えられます。
2 行目以降に N 行 M 列の二次元配列が与えられます。
入力値最終行の末尾に改行が1つ入ります。
期待する出力
配列の K 行目 L 列目の要素を出力してください。
a_KL
また、末尾に改行を入れ、余計な文字、空行を含んではいけません。
すべてのテストケースにおいて、以下の条件をみたします。
* N, M は 1 以上 10 以下の整数
* K は 1 以上 N 以下の整数
* L は 1 以上 M 以下の整数
* a_ij は 1 以上 100 以下の整数
入力例
4 3 2 1
1 2 3
10 100 0
8 1 3
7 21 54
出力例
10
標準入力から与えられるものがいっぱい。
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,k,l] = lines[0].split(/\s/).map(Number);
const a = [];
for (let i = 1; i <= n; i++) {
a.push(lines[i].split(/\s/).map(Number));
}
console.log(a[k-1][l-1]);
});
Python
N,M,K,L = map(int,input().split())
li = [list(map(int,input().split())) for _ in range(N)]
print(li[K-1][L-1])
最後に
for 文の中の条件、初期値を 0 にするのか 1 にするのか、とか、条件式に等号をつけるのかどうか、とか、ある程度ルールづけてやった方が良いのかなぁ、と思った。3 問目、等号を付け忘れて、不正解を出してしまったので。
Python みたいに、常に初期値から終了値未満まで、というルールでやっていれば間違えることはないんだろうけれど。JavaScript の自由度を良しとするか、条件文だけは統一ルールにするか、正解はどっちなんだろう。
引き続き、よろしくお願いいたします!
ディスカッション
コメント一覧
まだ、コメントがありません