【Java練習問題】Warmup-1: monkeyTrouble

問題

We have two monkeys, a and b, and the parameters aSmile and bSmile indicate if each is smiling. We are in trouble if they are both smiling or if neither of them is smiling. Return true if we are in trouble.

  • monkeyTrouble(true, true) → true
  • monkeyTrouble(false, false) → true
  • monkeyTrouble(true, false) → false

http://codingbat.com/prob/p181646

問題(日本語訳)

以下の関数monkeyTroubleを実装する。

public boolean monkeyTrouble(boolean aSmile, boolean bSmile) {
  
}

二匹のサル、aとbがいる。それぞれが笑っているかどうかが引数aSmilebSmileで与えられる。

もしサルが2匹とも笑っているか、もしくは2匹とも笑っていなければ、問題が生じる。

問題が生じる場合にtrueを返す関数を作成せよ。

ベン図

 {
  (A \cap B) \cup (\overline{A \cup B})
}

ド・モルガンの法則から

 {
  (A \cap B) \cup (\overline{A} \cap \overline{B})
}

とも表せる。

f:id:KazmaArakaki:20170618220327p:plain

回答1

public boolean monkeyTrouble(boolean aSmile, boolean bSmile) {
  if((aSmile && bSmile) || !(aSmile || bSmile)) {
    return true;
  }
  else {
    return false;
  }
}

回答2

public boolean monkeyTrouble(boolean aSmile, boolean bSmile) {
  return ((aSmile && bSmile) || !(aSmile || bSmile));
}

回答3

public boolean monkeyTrouble(boolean aSmile, boolean bSmile) {
  if((aSmile && bSmile) || (!aSmile && !bSmile)) {
    return true;
  }
  else {
    return false;
  }
}

回答4

public boolean monkeyTrouble(boolean aSmile, boolean bSmile) {
  return ((aSmile && bSmile) || (!aSmile && !bSmile));
}

kazmaarakaki.hatenablog.com