第74回【JavaScript】けた数の測定、足したり引いたり

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

はじめに

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

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

田舎ですから、出勤時間、雨の日は渋滞します。怖いな、と思うのが、驚くほど携帯を手にしている人が多い事です。そして、フラフラフラフラ車線をはみ出してきそうな運転をします。信号が青になっても進んでくれません。雨の日こそ、取り締まりをするべきなのでは?

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

けた数の測定 (paizaランク D 相当)

整数Nが与えられます。Nのけた数を出力してください。


入力される値

N

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


期待する出力

N のけた数Dを出力してください。末尾に改行を入れ、余計な文字、空行を含んではいけません。

D

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


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

・ N は 0 以上 1,000 未満の整数


入力例

5

出力例

1

条件分岐メニューらしい解答が求められている。

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]);
  if (n < 10) {
      console.log(1);
  } else if (n < 100) {
      console.log(2);
  } else {
      console.log(3);
  }
});
Python
N = int(input())
if N < 10:
    print(1)
elif N < 100:
    print(2)
else:
    print(3)

足したり引いたり (paizaランク C 相当)

整数N, A, B ( – 99 ≦ N, A, B ≦ 100 ) があります。以下の 2 つの操作をそれぞれ 1 回ずつおこなったとき、Nを 0 にできる場合はYESを、できない場合はNOを出力してください。
1. NにAを足す、またはNからAを引く
2. NにBを足す、またはNからBを引く


入力される値

N A B

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


期待する出力

YESまたはNOを出力してください。末尾に改行を入れ、余計な文字、空行を含んではいけません。

YES

または

NO

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


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

・ N, A, B は – 99 以上 100 以下の整数


入力例

-10 8 2

出力例

YES

全パターンを考えるパターン。

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,a,b] = lines[0].split(/\s/).map(Number);
  if (n + a + b == 0) {
      console.log('YES');
  } else if (n + a - b == 0) {
      console.log('YES');
  } else if (n - a - b == 0) {
      console.log('YES');
  } else if (n - a + b == 0) {
      console.log('YES');
  } else {
      console.log('NO');
  }
});
Python
N,A,B = map(int,input().split())
if N + A + B == 0:
    print("YES")
elif N + A - B == 0:
    print("YES")
elif N - A + B == 0:
    print("YES")
elif N - A - B == 0:
    print("YES")
else:
    print("NO")

最後に

or 条件で繋ぐというのも考えましたが、多分、可読性がひどく落ちるんだと思う。このくらいのパターンであれば、羅列しておいても良い気がする。

ちゃんとやるのであれば、別の関数を作って bool を返すとかするのだろうけれど。そこまではやらないけれども。

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

Python の第74回はこちら