81
submitted 7 months ago by m_f@midwest.social to c/loops@midwest.social
you are viewing a single comment's thread
view the rest of the comments
[-] Kraiden@kbin.earth 5 points 7 months ago

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

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 3 points 7 months ago

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 3 points 7 months 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 7 months ago

Lol I think the interview pressure got to you.

[-] Kraiden@kbin.earth 6 points 7 months ago

Ha ha ha, yup... whoops!

[-] petrol_sniff_king 8 points 7 months ago

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

[-] Kraiden@kbin.earth 6 points 7 months ago

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

[-] petrol_sniff_king 4 points 7 months ago

Haha, s'all good, yo.

[-] ImplyingImplications@lemmy.ca 7 points 7 months ago

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 7 months ago

Yep! I'm wrong. Pretty embarrassing!

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

this post was submitted on 21 Dec 2024
81 points (100.0% liked)

Fun Loops ▶️

1048 readers
2 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 ♻️ or [R] (if you don't feel like typing an emoji) for "reposted". For example, ♻️ Cute dog or [R] Cute dog.

Note that some loopers upload their loops to multiple platforms including Loops, so you might see insta/tiktok logos on videos that aren't marked as reposts.

If you know the source for a loop marked ♻️/[R], please comment with it!

Rules:

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

founded 8 months ago
MODERATORS