this post was submitted on 21 Dec 2024
73 points (94.0% liked)

Fun Loops ▶️

315 readers
252 users here now

Posting interesting/cool/funny videos from Loops here

https://loops.video/

Thanks to @Bluefruit @lemmy.world for the icon and banner!

Discussion of and questions about Loops should go over in !loops@lemmy.world

If the loop you're posting isn't original content uploaded by the creator, prefix the title with [R] for "reposted". For example, [R] Cute dog.

Rules:

  1. Don't be a dick
  2. Don't make me add more rules

founded 1 month ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[–] Kraiden@kbin.earth -3 points 6 days ago (4 children)

I'm sorry, but even without knowing about the mod operator, this is inefficient and over engineered. Why have a loop at all?

fun isEven(n: Int){
    return n == abs(n)
}

no loop required...

having said that, I can totally see how that was missed in a high pressure interview. I hate interviews like that!

edit: Ha ha... isEven...not isPositive... I'm tired. ignore me!

[–] lobut@lemmy.ca 11 points 6 days ago* (last edited 6 days ago) (1 children)

Because the abs(3) == 3 is true and that isn't even.

An even number of flips would be true and an odd number of flips would be false which works out.

I was thinking a bitwise & or converting it to a string and testing if the right most character is 0, 2, 4, 6, 8 would be panic mode solutions too.

[–] Kraiden@kbin.earth 2 points 6 days ago (1 children)

you might be able to do it with a bitwise op? My track record tonight is not great so I'm not going to comment. Have a look at @ImplyingImplactions comment for a loopless solution

[–] UID_Zero@infosec.pub 2 points 6 days ago

Bitwise and with 0x1. If result is 0, it's even. Least significant bit is always 1 for odd numbers.

[–] braindamagebuddy@lemmy.world 9 points 6 days ago (1 children)

Lol I think the interview pressure got to you.

[–] Kraiden@kbin.earth 6 points 6 days ago

Ha ha ha, yup... whoops!

[–] ImplyingImplications@lemmy.ca 8 points 6 days ago (2 children)

That would be isPositive.

Without using the modulo operator you'd essentially have to reimplement it. Divide the number by 2 and round down. Multiply that by 2 and then subtract it from the original number.

isEven(10) results in 10-10==0 (true) whereas isEven(13) results in 13-12==0 (false).

function isEven(n){
  n = Math.abs(n)
  return (n - (Math.floor(n/2) * 2)) == 0
}
[–] Kraiden@kbin.earth 5 points 6 days ago

Yep! I'm wrong. Pretty embarrassing!

That's a nice solution though! Gonna have to try and remember that one!

[–] dream_weasel@sh.itjust.works 4 points 6 days ago* (last edited 6 days ago)

Minor simplification: this works even without taking absolute value first of you use fix instead of floor.

Edit: I don't know if fix is in the stock math library on second thought...

[–] petrol_sniff_king@lemmy.blahaj.zone 8 points 6 days ago (1 children)

I'm not following.
n == abs(n) only tells you if it's positive.

[–] Kraiden@kbin.earth 6 points 6 days ago (1 children)

yes, I'm being a dumb tonight. I'm completely wrong

Haha, s'all good, yo.