this post was submitted on 31 Oct 2024
385 points (99.0% liked)

196

16766 readers
2368 users here now

Be sure to follow the rule before you head out.

Rule: You must post before you leave.

^other^ ^rules^

founded 2 years ago
MODERATORS
 
top 50 comments
sorted by: hot top controversial new old
[–] [email protected] 22 points 2 months ago (1 children)

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

[–] [email protected] 12 points 2 months ago

Recursion is its own reward

[–] [email protected] 1 points 2 months ago

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

[–] [email protected] 27 points 2 months ago (1 children)

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

[–] [email protected] 10 points 2 months ago

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

[–] [email protected] 22 points 2 months ago (1 children)

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)
[–] [email protected] 7 points 2 months ago

Gotta love how human readable Python always is!

[–] [email protected] 14 points 2 months ago (4 children)

oh of course there is

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

(do take a look at the download stats)

[–] [email protected] 13 points 2 months ago* (last edited 2 months ago)

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

[–] [email protected] 7 points 2 months ago* (last edited 2 months ago)

"If it's not an npm package it's impossible"

- JS devs, probably

[–] [email protected] 5 points 2 months ago

That's a lot of downloads

[–] [email protected] 7 points 2 months ago* (last edited 2 months ago) (4 children)

Can't you just

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

[–] [email protected] 6 points 2 months ago (2 children)

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.

[–] [email protected] 1 points 1 month ago

ah the joys of loosely typed languages

[–] [email protected] 1 points 2 months ago (1 children)

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

[–] [email protected] 4 points 2 months ago

Javascript doesn’t have strongly-typed variables

[–] [email protected] 12 points 2 months ago (1 children)
[–] [email protected] 1 points 2 months ago

Yeah, that's even simpler

[–] [email protected] 5 points 2 months ago

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

[–] [email protected] 6 points 2 months ago

I thought they were going to turn into Saddam Husseins.

[–] [email protected] 38 points 2 months ago (2 children)

Zero people in this post get the YanDev reference

[–] [email protected] 3 points 2 months ago
[–] [email protected] 8 points 2 months ago (1 children)

so nobody actually really got the joke. very sad Moment.

[–] [email protected] 9 points 2 months ago

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.

[–] [email protected] 16 points 2 months ago (1 children)
[–] [email protected] 4 points 2 months ago

if (~number & 1)

[–] [email protected] 10 points 2 months ago

just check the least significant bit smh my head

[–] [email protected] 8 points 2 months ago
[–] [email protected] 83 points 2 months ago (2 children)

return true

is correct around half of the time

[–] [email protected] 19 points 2 months ago (1 children)
return Math.random() > 0.5

would also be correct about half the time

[–] [email protected] 1 points 2 months ago (1 children)

Wouldn't that only be correct about 25% of the time?

[–] [email protected] 0 points 1 month ago

for even, 50% chance of correctness, same for odd.

[–] [email protected] 42 points 2 months ago
assert IsEven(2) == True
assert IsEven(4) == True
assert IsEven(6) == True

All checks pass. LGTM

load more comments
view more: next ›