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.
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.");
}
}
Back when I was learning programming a lot of lessons would make you do something like this, and then show you the real way to do it in the next lesson. My reaction was always "why didn't you lead with this?".
Because the point of the lesson is to demonstrate that you can solve the same problem multiple ways where some paths are more efficient than others.
Bad programmers are the ones that find the first solution and implement it no matter how inefficient it is.
Good programmers spend time on figuring out the solution with the least amount broken or inefficient code. You don’t learn this by jumping straight to the best answer every time.
My solution in perl back in the day when I was a teenage hobbyist who didn't know about the modulus operator: Divide by 2 and use regex to check for a decimal point.
You know, I was going to let this slide under the notion that we're just ignoring the limited precision of floating point numbers... But then I thought about it and it's probably not right even if you were computing with real numbers! The decimal representation of real numbers isn't unique, so this could tell me that "2 = 1.9999..." is odd. Maybe your string coercion is guaranteed to return the finite decimal representation, but I think that would be undecidable.
#You are an input. You have value! You matter!
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)
I would love it if someone edited this example and posted it with two statements near the end that are reversed, implying inconsistent behaviour at random in the list ahead, seemingly making this solution less inefficient.
You joke, but I've seen a programming language that didn't have a loop, and if you copied a line of text and pasted it in a text editor, JSON would come out...
The editor could barely handle 400+ lines because it probably converted the text to JSON, added a letter and converted it back to JSON... Per inserted symbol...