Wednesday, 13 April 2016

java - Check if at least two out of three booleans are true



An interviewer recently asked me this question: given three boolean variables, a, b, and c, return true if at least two out of the three are true.



My solution follows:



boolean atLeastTwo(boolean a, boolean b, boolean c) {
if ((a && b) || (b && c) || (a && c)) {

return true;
}
else{
return false;
}
}


He said that this can be improved further, but how?


Answer




Rather than writing:



if (someExpression) {
return true;
} else {
return false;
}


Write:




return someExpression;





As for the expression itself, something like this:



boolean atLeastTwo(boolean a, boolean b, boolean c) {
return a ? (b || c) : (b && c);

}


or this (whichever you find easier to grasp):



boolean atLeastTwo(boolean a, boolean b, boolean c) {
return a && (b || c) || (b && c);
}



It tests a and b exactly once, and c at most once.



References




No comments:

Post a Comment

c++ - Does curly brackets matter for empty constructor?

Those brackets declare an empty, inline constructor. In that case, with them, the constructor does exist, it merely does nothing more than t...