第57回【JavaScript】指定要素の削除、九九表

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

はじめに

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

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

模範解答がないために、試行錯誤しながら解いています。これが本当の正解なのか、いつも不安です。ずーっと先、今書いているものを見直したら、もっと書きようがあっただろう、って反省することになるんだろうなぁ。

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

指定要素の削除 (paizaランク D 相当)

配列 A とその要素数 N と削除する要素の番号 n が与えられるので、A から A_n を削除し、A を要素数 N – 1 の配列とした後の A の各要素を出力してください。


入力される値

N
A_1
...
A_N
n

1 行目では、配列 A の要素数 N が与えられます。
続く N 行では、配列 A の要素が先頭の A_1 から順に与えられます。
最後の行では、数値を削除する要素番号 n が与えられます。

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


期待する出力

A_1
...
A_{N-1}

配列 A から指定の要素を削除した後の A の全ての要素を以上の形式で出力してください。

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


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

・1 ≦ N ≦ 100
・0 ≦ A_i ≦ 100 (1 ≦ i ≦ N)
・1 ≦ n ≦ N


入力例

5
1
2
3
4
5
3

出力例

1
2
4
5

また変数名が大文字と小文字の n になっているけれど、とりあえずは指定通りにやってみようと思う。

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]);
  }
  const n = Number(lines[N+1]);
  A.splice(n-1,1);
  for (let i = 0; i < A.length; i++) {
      console.log(A[i]);
  }
});
Python
N = int(input())
A = [int(input()) for _ in range(N)]
n = int(input())
A.pop(n - 1)
print(*A,sep="\n")

九九表 (paizaランク D 相当)

期待する出力にあるような、九九表を出力してください。


入力される値

なし

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


期待する出力

1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81

i 行 j 列の要素が i×j である、以上のような九九表を出力してください。
各要素は半角スペースで区切ってください。

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


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

なし

必ずといっていいほど、九九表は作りますね。

JavaScript
for (let i = 1; i <= 9; i++) {
    for (let j = 1; j <= 9; j++) {
        if (j == 1) {
            process.stdout.write(String(i*j));
        } else {
            process.stdout.write(' ' + i*j);
        }
    }
    console.log();
}
Python
for i in range(1,10):
    for j in range(1,10):
        print(i*j,end=" ")
    print()

最後に

冒頭に書いた通り、いつも、これで良いのかと不安になりながら書いています。ちゃんと正解の判定は出ているけれど、もっとシンプルな書き方があるんじゃないか、とか、もっと良いメソッドが用意されているんじゃないか、とか。

そういったご指摘ありましたら、お寄せいただけますと幸いです。

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

Python の第57回はこちら