第71回【JavaScript】AND+NOT、AND+OR

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

はじめに

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

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

個人的な趣味で書いているコードの場合、デバッグをやるのも自分なわけで。出来ている、という思い込みから、ミスをなかなか見つけることが出来ない、ということが発生します。普段の業務から、思い込みは捨てるということを徹底したいものです。

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

AND+NOT (paizaランク D 相当)

2 つの整数A、Bが与えられます。以下の条件を満たす場合はYESを、そうではない場合はNOを出力してください。
・「Aが 10 以上」 かつ 「Bが 10 以上ではない」


入力される値

A B

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


期待する出力

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

YES

または

NO

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


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

・ A, B は 1 以上 20 以下の整数


入力例

12 3

出力例

YES

タイトルが AND + NOT なので、その通りに書いてみる。

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

AND+OR (paizaランク D 相当)

3 つの整数X, Y, Zが与えられます。「Xが 10 以上」かつ「Yが 10 以上」の場合はYESを、そうではない場合はNOを出力してください。
ただし、「Zが 10 以上の」場合はXとYの値にかかわらず、必ずYESを出力してください。


入力される値

X Y Z

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


期待する出力

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

YES

または

NO

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


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

・ X, Y, Z は 1 以上 20 以下の整数


入力例

15 12 0

出力例

YES

この章の最後の問題は、AND + OR のようです。その通りに書いてみます。

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 [x,y,z] = lines[0].split(/\s/).map(Number);
  if (x >= 10 && y >= 10 || z >= 10) {
      console.log('YES');
  } else {
      console.log('NO');
  }
});
Python
X,Y,Z = map(int,input().split())
if X >= 10 and Y >= 10 or Z >= 10:
    print("YES")
else:
    print("NO")

最後に

複数条件を並べるのは、普通の業務でもよくあること。特に難しい事ではないかなと思いました。やっぱり、AND なのか OR なのか、&& なのか || なのか、ごちゃごちゃになってしまいます。

完全に慣れでしかないので、しっかり身に付けるしかないですかね。そのためにも、毎日書かないといけない。

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

Python の第71回はこちら