239
all 26 comments
sorted by: hot top controversial new old
[-] rikudou 87 points 9 months ago

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 36 points 9 months ago* (last edited 9 months ago)

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 23 points 9 months ago

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

[-] dgriffith@aussie.zone 6 points 9 months 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 5 points 9 months ago

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

[-] xmunk@sh.itjust.works 1 points 9 months ago

This is a power(ful) idea.

Are my stats/programmers in the house?

[-] fibojoly@sh.itjust.works 4 points 9 months ago

Better. Return true if the number is in a stored list of known primes, otherwise return false right away. But then, start a separate thread with an actual verification algorithm. When the verification is done, if it was actually a prime number, you just crash the program with a WasActuallyPrime exception.

[-] itslilith@lemmy.blahaj.zone 16 points 9 months ago

asymptotically this is 100% correct!

[-] mumblerfish@lemmy.world 5 points 9 months ago

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

[-] Asudox@lemmy.world 1 points 9 months ago

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

[-] rikudou 7 points 9 months ago

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

[-] andnekon@programming.dev 2 points 9 months ago

50/50 would be for isOdd with the same implementation

[-] YaBoyMax@programming.dev 33 points 9 months ago
[-] xmunk@sh.itjust.works 32 points 9 months ago

Copilot is fucking killing it these days.

[-] Jakylla@sh.itjust.works 25 points 9 months ago

inplace sort be like:

def sort(list: list):
    list.clear()
[-] TheBananaKing@lemmy.world 18 points 9 months ago
[-] 0x0@lemmy.dbzer0.com 11 points 9 months ago

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

[-] infinitepcg@lemmy.world 5 points 9 months ago

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

[-] Species5218@sh.itjust.works 0 points 9 months ago
[-] 0x0@lemmy.dbzer0.com 2 points 9 months ago

Well duh. I wonder what happens if you shadow the list constructor and try to use it as a type hint...

def foo(list: list):
  def bar(thingies: list):
    pass
[-] SzethFriendOfNimi@lemmy.world 6 points 9 months ago* (last edited 9 months ago)

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

[-] mcmodknower@programming.dev 6 points 9 months ago

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 11 points 9 months ago

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

[-] xmunk@sh.itjust.works 5 points 9 months ago

I set k to 50,000,000,000... that's more items than my shitty computer can fit in memory (including swsp) but I am now happy to celebrate my O(1) algorithm.

this post was submitted on 28 Jan 2024
239 points (95.4% liked)

Programmer Humor

19503 readers
320 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 1 year ago
MODERATORS