+ 2
Zvi For numbers, the binary representation always has 0 as last digit for even numbers and 1 as last digit for odd numbers.
So doing a bitwise AND comparison to 1(n & 1) is checking if the last binary digit is 1 (TRUE) or not (FALSE).
So "prompt() & 1" will ask user for input and return either FALSE if even, or TRUE if odd.
To convert that FALSE/TRUE into "even"/"odd", the key trick is remembering that boolean FALSE also represented as 0, and boolean TRUE represented as 1.
You can use that 0 or 1 as index values for an array.
['even', 'odd'] [0] returns 'even'
['even, 'odd'] [1] returns 'odd'
+ 7
0 and 1 can also be used as index of a list or array. so we are not using switch case or if-else...
n & 1 works like n % 2
bitwise & 1 will be 1 if it's odd and 0 if it's even. it's supposed to be more efficient than %
here is a link for other ways of odd-even ckecking with bitwise operators:
https://www.geeksforgeeks.org/check-whether-given-number-even-odd/
so you can write:
console.log(['even', 'odd'][prompt() & 1])
+ 4
I will insert it.
https://sololearn.com/compiler-playground/WdnR27nrMZh1/?ref=app
you can't do that without selection.
but you can do that without the % operator.
+ 4
Mustafa Raza
Modified Bob_Li's code a little bit.
console.log(['even','odd'][prompt()%2]);
+ 4
Zvi I appreciate the way Bob_Li solved the problem easily, I just posted similar code for easy understanding.
Actually he used input & 1, means return 0 if input is even and 1 if odd bcoz all odd number's binary value ends with 1 and all even number's binary value ends with 0.So, 0&&1 is 0 and 1&&1 is 1, in this way indexing works here.
+ 2
Arash Amorzesh the OP said not to use any type of conditional statement, you used a tenerary operator which is probably against the rules.
+ 2
Zvi Thanks.
+ 1
Gulshan Mahawar actually I think Bob_li’s solution is way cooler. I had to ask chatGTP to explain it and I still only get the basic idea!
+ 1
Yes, we can store the condition value to a variable