Using Haskell you can write it way more concise:
iseven :: Int -> Bool
iseven 0 = True
iseven 1 = False
iseven 2 = True
iseven 3 = False
iseven 4 = True
iseven 5 = False
iseven 6 = True
iseven 7 = False
iseven 8 = True
...
However, we can be way smarter by only defining the 2 base cases and then a recursive definition for all other numbers:
iseven :: Int -> Bool
iseven 0 = True
iseven 1 = False
iseven n = iseven (n-2)
It’s having a hard time with negative numbers, but honestly that’s quite a mood
=if((number/2)-round(number/2,0)=0,true,false)
so did someone draw this by hand or was it a filter
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.
That would already cause an exception when calling the function because it has int number in the parameters