22 points

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

permalink
report
reply
12 points

Recursion is its own reward

permalink
report
parent
reply
1 point

=if((number/2)-round(number/2,0)=0,true,false)

permalink
report
reply
27 points

so did someone draw this by hand or was it a filter

permalink
report
reply
10 points

tbh it looks like an AI broke this down slightly & reconstructed it

permalink
report
parent
reply
22 points

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)
permalink
report
reply
7 points

Gotta love how human readable Python always is!

permalink
report
parent
reply
14 points

oh of course there is

https://www.npmjs.com/package/is-even

(do take a look at the download stats)

permalink
report
reply
13 points
*

And that isn’t even the worst thing about it…

The implementation looks like this:

function isEven(i) {
  return !isOdd(i);
};

And yes, is-odd is a dependency that in turn depends on is-number

permalink
report
parent
reply
7 points
*

“If it’s not an npm package it’s impossible”

- JS devs, probably

permalink
report
parent
reply
5 points

That’s a lot of downloads

permalink
report
parent
reply
7 points
*

Can’t you just

If (number % 2 == 0){return true}

permalink
report
parent
reply
6 points

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.

permalink
report
parent
reply
1 point

ah the joys of loosely typed languages

permalink
report
parent
reply
1 point

That would already cause an exception when calling the function because it has int number in the parameters

permalink
report
parent
reply
12 points

return number % 2 === 0

permalink
report
parent
reply
1 point

Yeah, that’s even simpler

permalink
report
parent
reply
5 points

yup, which is why I find the download stats truly horrifying

permalink
report
parent
reply
5 points

no

permalink
report
parent
reply
2 points

ok

permalink
report
parent
reply