Of course there's an easier way. Just integrate the state of the art API dedicated for this exact problem. https://isevenapi.xyz/
Programming Horror
Welcome to Programming Horror!
This is a place to share strange or terrible code you come across.
For more general memes about programming there's also Programmer Humor.
Looking for mods. If youre interested in moderating the community feel free to dm @Ategon@programming.dev
Rules
- Keep content in english
- No advertisements (this includes both code in advertisements and advertisement in posts)
- No generated code (a person has to have made it)
Credits
This is confusing. I'm already using the iSeven API to determine if a number is 7. I'm getting a namespace collision error when I try to load this new API. Bug report filed.
I know how to fix this!
bool IsEven(int number) {
bool even = true;
for (int i = 0; i < number; ++i) {
if (even == true) {
even = false;
}
else if (even == false) {
even = true;
}
else {
throw RuntimeException("Could not determine whether even is true or false.");
}
}
if (even == true) {
return even ? true : false;
}
else if (even == false) {
return (!even) ? false : true;
}
else {
throw RuntimeException("Could not determine whether even is true or false.");
}
}
Have you tried seeing if the recursive approach runs faster?
I know an even better way. We can make it run in O(1) by using a lookup table. We only need to store 2^64 booleans in an array first.
modulo
pseudocode:
if number % 2 == 0
return "number is even" (is_num_even = 1 or true)
else
return "number is odd" (is_num_even = 0 or false)
plus you'd want an input validation beforehand
who needs modulo when you can get less characters out of
while (number > 1) {
number -= 2;
}
return number;
very efficient
edit: or theres the trusty iseven api
here is somewhat less:
return (number % 2) == 0;
return !(number & 1);
This is the way. Modulo takes too long to compute, bitwise compare should be a lot faster.
return !(number & 0x1);
oh shit yo
this comment chain is pretty awesome, I learned a lot from this thanks!