第43回【JavaScript】i 番目の出力 3、i 番目の出力 4

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

はじめに

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

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

ここを考えるのが一番大変な気がしているのだけれど。ちょっと手を離さないといけなくなって下書き保存して閉じて、さぁ、続きをやろう、と開き直したら、消えていました。悲しくなりました。なんでだ・・・。

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

i 番目の出力 3 (paizaランク D 相当)

1 行目に整数 N, M が与えられます。
2 行目に M 個の文字列 s_1, s_2, …, s_M が半角スペース区切りで与えられます。
N 番目の文字列 s_N を出力してください。


入力される値

N M
s_1 s_2 ... s_M

1 行目に整数 N, M が与えられます。
2 行目に M 個の文字列 s_1, s_2, …, s_M が半角スペース区切りで与えられます。

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


期待する出力

N 番目の文字列 s_N を出力してください。

s_N

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


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

* M は 1 以上 5 以下の整数
* N は 1 以上 M 以下の整数
* s_i (1 ≤ i ≤ M) は数字または大文字・小文字のアルファベットからなる長さ 1 以上 10 以下の文字列


入力例

3 5
a b c d e

出力例

c

インデックスがゼロから始まる問題さえ忘れなければ、間違えることはない、かな。

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 L = lines[1].split(/\s/);
  console.log(L[n-1]);
});
Python
N,M = map(int,input().split())
S = input().split()
print(S[N - 1])

i 番目の出力 4 (paizaランク D 相当)

1 行目に整数 N, M, L が与えられます。
2 行目に M 個の文字列 s_1, s_2, …, s_M が半角スペース区切りで与えられます。
N 番目の文字列 s_N の L 番目の文字を出力してください。


入力される値

N M L
s_1 s_2 ... s_M

1 行目に整数 N, M, L が与えられます。
2 行目に M 個の文字列 s_1, s_2, …, s_M が半角スペース区切りで与えられます。

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


期待する出力

N 番目の文字列 s_N の L 番目の文字を出力してください。

(s_N)_L

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


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

* M は 1 以上 5 以下の整数
* N は 1 以上 M 以下の整数
* s_i (1 ≤ i ≤ M) は数字または大文字・小文字のアルファベットからなる長さ 1 以上 10 以下の文字列
* L は 1 以上 s_N の文字数以下の整数


入力例

3 5 2
abc def ghi jkl mno

出力例

h

JavaScript において、文字列の中の一文字ずつの扱いはどうなっているのだろうか。

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,l] = lines[0].split(/\s/).map(Number);
  const L = lines[1].split(/\s/);
  console.log(L[n-1][l-1]);
});
Python
N,M,L = map(int,input().split())
S = input().split()
print(S[N-1][L-1])

最後に

先に「後で」フォルダを確認してから、次のことを調べればいい。ごもっとも! しかし、興味は移ろいやすく、その瞬間の興味に引っ張られがちなのです。

文字列を配列として扱う、が非推奨なんて聞いた記憶があるなぁ、と、何年か前に、charAt() を利用して書いていた記憶があったので、改めて調べ直してみたら、ES5 からは文字列を配列として扱ってよくなっていたらしい。2009 年の話。そんな昔に JavaScript を書いた記憶はないんだけれど。

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

Python の第43回はこちら