I remember coding actionscript in Flash and using modulo (%) to determine if a number was even or odd. It returns the remainder of the number divided by 2 and if it equals anything other than 0 then the number is odd.
Yeah. The joke is that this is the obvious solution always used in practise, but the programmer is that bad that they don't know it and use some ridiculous alternative solutions instead.
It’s really just us… I’ve seen the basic programming joke a bunch of times, but people really aren’t understanding the YanDev/font embellishment. Sad indeed.
public static boolean isEven(int number) {
// Handle negative numbers
if (number < 0) {
number = -number; // Convert to positive
}
// Subtract 2 until we reach 0 or 1
while (number > 1) {
number -= 2;
}
// If we reach 0, it's even; if we reach 1, it's odd
return number == 0;
}
a wise programmer knows to always ask the question "can i solve this problem in python using metaprogramming?" in this instance, the answer is yes:
def is_even(n: int):
s = "def is_even_helper(number: int):\n"
b = True
for i in range(0, abs(n)+2):
s += f"\tif (abs(number) == {i}): return {b}\n"
b = not b
exec(s)
return locals().get("is_even_helper")(n)
but what if number isn’t an integer, or even a number at all? This code, and the improved code shared by the other user, could cause major problems under those conditions. Really, what you would want, is to validate that number is actually an integer before performing the modulo, and if it isn’t, you want to throw an exception, because something has gone wrong.
That’s exactly what that NPM module does. And this is why it’s not a bad thing to use packages/modules for even very simple tasks, because they help to prevent us from making silly mistakes.