第83回【JavaScript】文字列の配列

現在取り組んでいるのは、paiza ラーニング問題集「データセット選択メニュー」になります。

はじめに

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

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

出社して最初に Slack とメールチェックをします。そして、コーヒーを入れる。始業前にここまでを終わらせるのは、過去の社畜時代が抜けきっていないからなんでしょうか。みんな、ギリギリに出社してくるので、大丈夫か、って不安になってしまうのだけれど。

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

文字列の配列 (paizaランク C 相当)

縦 H マス、横 W マスの H × W マスからなる迷路 S があります。上から i 行目、左から j 列目のマス は S_ij とあらわされ、 S_ij が「#」のとき壁であり、「.」のとき道です。整数 r、c が与えられるので、S_rc が壁かどうか判定してください。


入力される値

H W r c
S_1
S_2
...
S_H

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


期待する出力

S_rc が壁なら「Yes」を、壁ではないなら「No」と出力してください。

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


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

・ 1 ≦ H, W ≦ 100
・ 1 ≦ r ≦ H
・ 1 ≦ c ≦ W
・ S_i は「#」または「.」からなる W 文字の文字列


入力例

3 4 1 2
..#.
#.##
....

出力例

No

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 [h,w,r,c] = lines[0].split(/\s/).map(Number);
  const s = [];
  for (let i = 1; i <= h; i++) {
      s.push(lines[i]);
  }
  if (s[r-1][c-1] == '#') {
      console.log('Yes');
  } else {
      console.log('No');
  }
});
Python
H,W,r,c = map(int,input().split())
S = [input() for _ in range(H)]
if S[r-1][c-1] == '#':
    print('Yes')
else:
    print('No')

最後に

ここまで挑戦した問題では、YES NO が大文字だったのに、ここにきて Yes No となるとは。全然関係のないこういうところで躓きました。

文字列を配列風のオブジェクトとして扱い、数値インデックスに対応させることが出来る。なんだかとても便利です。

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

Python の第83回はこちら