this post was submitted on 07 Dec 2023
1 points (100.0% liked)

Programming Horror

1879 readers
1 users here now

Welcome to Programming Horror!

This is a place to share strange or terrible code you come across.

For more general memes about programming there's also Programmer Humor.

Looking for mods. If youre interested in moderating the community feel free to dm @[email protected]

Rules

Credits

founded 1 year ago
MODERATORS
 
all 26 comments
sorted by: hot top controversial new old
[–] [email protected] 0 points 11 months ago* (last edited 11 months ago)

Programming humor on reddit used to be excellent bits like this but then it devolved into new learners jumping straight to the irony they didn't understand and flooded the sub with nonsense.

I miss these bits.

btw it does get easier

import math
def is_even(num):
    if num in [i for i in range(1000) if float(i)/2.0 == math.floor(float(i)/2.0)]:
        print("true")
    else:
        print("false")

Obviously one would need to increase the range for bigger numbers but this code is optimized.

[–] [email protected] 0 points 11 months ago* (last edited 11 months ago) (1 children)
def is_even(n):
    match n:
        case 1:
            return False
        case 0:
            return True
        # fix No1
        case n < 0:
            return is_even(-1*n)
        case _:
            return is_even(n-2)
[–] [email protected] 0 points 11 months ago (1 children)

Python added match/case?! Bunch of mypy issues have been closed too. Maybe its time to dust off some old projects.

[–] [email protected] 0 points 11 months ago

It was added in 3.10 and is surprisingly complete. The tutorial pep is a good starting point to see what it can accomplish

[–] [email protected] 0 points 11 months ago* (last edited 11 months ago) (1 children)

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.

if ($num / 2 =~ /\./) { return "odd" }
else { return "even" }

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

Divide by 2 and check for a decimal point.

I mean, it ain't wrong.

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

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.

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

Ackchyually-- IEEE 754 guarantees any integer with absolute value less than 2^24 to be exactly representable as a single precision float. So, the "divide by 2, check for decimals" should be safe as long as the origin of the number being checked is somewhat reasonable.

[–] [email protected] 0 points 11 months ago

Of course, but it's somewhat nasty when all of a sudden is_even doesn't do what you expect :).

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

You could do this in one line...

By removing all the linebreaks.

[–] [email protected] 0 points 11 months ago

i think it should one giant ternary expression composition

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

Of course there's an easier way. Just integrate the state of the art API dedicated for this exact problem. https://isevenapi.xyz/

[–] [email protected] 0 points 11 months ago

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.

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

I'm more of a Gemini myself

[–] [email protected] 0 points 11 months ago

print(theJoke % you);

wooosh

[–] [email protected] 0 points 11 months ago* (last edited 11 months ago) (2 children)

modulo

pseudocode:

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)

plus you'd want an input validation beforehand

[–] [email protected] 0 points 11 months ago (1 children)
#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)

Am I doing it right? /S.

[–] [email protected] 0 points 11 months ago

Don't put nbsps in code blocks, they show up literally.

[–] [email protected] 0 points 11 months ago* (last edited 11 months ago) (1 children)

who needs modulo when you can get less characters out of

while (number > 1) {
  number -= 2;
}
return number;

very efficient

edit: or theres the trusty iseven api

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

here is somewhat less:

return (number % 2) == 0;

[–] [email protected] 0 points 11 months ago

return !(number & 1);