this post was submitted on 28 Jan 2024
262 points (95.5% liked)

Programmer Humor

25511 readers
2051 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 2 years ago
MODERATORS
 
top 20 comments
sorted by: hot top controversial new old
[–] rikudou@lemmings.world 88 points 2 years ago (3 children)

While this doesn't work all the time, when it does, it's really fast. Similar to the isPrime function, it's correct most of the time and is much faster than alternative implementations:

function isPrime(number) {
    return false;
}
[–] dgriffith@aussie.zone 32 points 2 years ago* (last edited 2 years ago) (2 children)

What your code can do is run this first and if it returns false then do a quick double check using a traditional isPrime function. Really speeds things up!

[–] rikudou@lemmings.world 24 points 2 years ago (1 children)

I mean, it has a 99.999%+ success rate on a large enough sample and I can live with that.

[–] dgriffith@aussie.zone 5 points 2 years ago

Nah, you've always got to check the corner cases. It's a variation on Murphy's Law - you don't encounter corner cases when you're developing a program but corner cases are 99 percent of an everyday user's interaction.

[–] docAvid@midwest.social 3 points 2 years ago

Good idea, but it would be much faster if you do the double-check on true instead.

[–] itslilith@lemmy.blahaj.zone 15 points 2 years ago (1 children)

asymptotically this is 100% correct!

[–] mumblerfish@lemmy.world 5 points 2 years ago (1 children)

What would be the accuracy on something like a 64bit unsigned integer?

[–] Asudox@lemmy.world 2 points 2 years ago (3 children)

50/50 chance of being right in O(1) time

[–] rikudou@lemmings.world 8 points 2 years ago

It's right much more often than just 50/50.

[–] andnekon@programming.dev 5 points 2 years ago

50/50 would be for isOdd with the same implementation

[–] Lmaydev@programming.dev 3 points 2 years ago

Primes are not that common especially as numbers get bigger.

It'll be right the vast majority of times.

[–] YaBoyMax@programming.dev 32 points 2 years ago
[–] TheBananaKing@lemmy.world 17 points 2 years ago
[–] 0x0@lemmy.dbzer0.com 11 points 2 years ago (1 children)

Besides the obvious flaws... is that parameter a list named list, shadowing the list() constructor?

[–] infinitepcg@lemmy.world 5 points 2 years ago

It works as long as you don't call list() within that function.

[–] mcmodknower@programming.dev 9 points 2 years ago (1 children)

you can even have a case where you return the first element of the list if the list is not empty, and it will still be O(1).

[–] murtaza64@programming.dev 10 points 2 years ago (1 children)

you can make it sort the first k elements and it will still be O(1). Set k high enough and it might even be useful

[–] kuberoot@discuss.tchncs.de 1 points 2 years ago

By that logic, any sorting implementation is O(1), as the indexing variable/address type has limited size

[–] SzethFriendOfNimi@lemmy.world 7 points 2 years ago* (last edited 2 years ago)

Honey, wake up. The new Def Leppard Album just dropped