第91回【JavaScript】半角スペース区切りでの出力、改行区切りでの出力、標準入出力

現在取り組んでいるのは、paiza ラーニング問題集「Cランクレベルアップメニュー」になります。

はじめに

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

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

ルナちゃんは、自分で布団に入ります。ちょっとの隙間に頭を捻じ込んで器用に入ります。レオくんは、布団に入れてくれ、とアピールします。起きるまで肩の辺りをつついてきます。どっちも可愛いですが、結局起こされるのは変わりません。

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

半角スペース区切りでの出力 (paizaランク D 相当)

整数 n が与えられるので、n 回、半角スペース区切りで paiza と出力してください。


入力される値

n

1行目に整数nが与えられます。

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


期待する出力

paiza と n 回、半角スペース区切りで出力してください。最後の paiza の後には半角スペースは入れず、改行を入れ、余計な文字、空行を含んではいけません。

paiza paiza ... paiza

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


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

・1 ≦ n ≦ 50


入力例

2

出力例

paiza paiza

末尾に半角スペースを入れないようにする。よくあるパターンです。ちょっと天邪鬼に解いてみる。

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 S = Array(n).fill('paiza');
  console.log(S.join(' '));
});
Python
N = int(input())
S = ['paiza'] * N
print(' '.join(S))

改行区切りでの出力 (paizaランク D 相当)

整数 n が与えられ、その後に n 個の整数 a_1, …, a_n が半角スペース区切りで与えられるので、a_1, …, a_n をそのままの順番で改行区切りで出力してください。


入力される値

n
a_1 a_2 ... a_n

1 行目には整数 n が与えられ、2 行目には半角スペース区切りの n 個の数 a_1, …, a_n が 1 行で与えられます。

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


期待する出力

a_1, …, a_n をそのままの順番で改行区切りで出力してください。

a_1
...
a_n

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


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

・1 ≦ n ≦ 50
・各 a_i(1 ≦ i ≦ n)について、1 ≦ a_i ≦ 50


入力例

2
1 5

出力例

1
5

今度は・・・縦方向だ!

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 = lines[1].split(/\s/);
  for (let i = 0; i < n; i++) {
      console.log(A[i]);
  }
});
Python
N = int(input())
A = [int(x) for x in input().split()]
for a in A:
    print(a)

標準入出力 (paizaランク C 相当)

毎年 5 月 1 日に、自分が運営している会社の社員一覧表を作成しています。表は年度ごとに更新され、社員の名前と年齢が載っています。
ところで、会社のメンバーは昨年度から全く変わらず、社員の誕生日は全員 7 月 7 日だったので、前年度の一覧表の年齢欄をそれぞれ +1 するだけで今年度の表が作れることにパイザ君は気づきました。

昨年度の一覧表が与えられるので、今年度の一覧表を出力してください。


入力される値

N
s_1 a_1
...
s_N a_N

1 行目には社員の数を表す整数 N が与えられ、2 行目 〜 (N + 1) 行目の各行では、社員の名前を表す文字列 s_i とその社員の昨年度の年齢を表す整数 a_i が半角スペース区切りで与えられます(1 ≤ i ≤ N)。

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


期待する出力

入力された通りの順番で、社員 s_i の名前と、その社員の今年度の年齢を半角スペース区切りでN行出力してください。

s_1 (a_1 + 1)
...
s_N (a_N + 1)

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


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

・1 ≤ N ≤ 50
・s_i(1 ≤ i ≤ N)は 1 文字以上 10 文字以下の文字列
・s_i(1 ≤ i ≤ N)の各文字は英小文字または英大文字または数字
・18 ≤ a_i ≤ 120(1 ≤ i ≤ N)


入力例

1
Yamada 30

出力例

Yamada 31

全員が同じ誕生日だわ、120 歳の社員もいるらしいし、凄い会社ですね。

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]);
  for (let i = 1; i <= n; i++) {
      const [s,a] = lines[i].split(/\s/);
      console.log(s,Number(a) + 1);
  }
});
Python
N = int(input())
for _ in range(N):
    s,a = input().split()
    print(s,int(a)+1)

最後に

ここまでの模範解答を見ると、自分が書いているコードの方が効率的で綺麗に感じる。正式な書き方、というのがよく理解出来ていないから、本当はダメなのかもしれないけれど。

const による宣言が、他の言語に比べると分かりづらくて苦手です。もちろん、const で宣言することで、変数が書き換えられたり名前が重複したりしないので、こっちの方が良さそうですが。

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

Python の第91回はこちら