76
submitted 5 days 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 5 days 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 5 days ago* (last edited 5 days 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 2 points 5 days 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 2 points 5 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 5 days ago

Lol I think the interview pressure got to you.

[-] Kraiden@kbin.earth 6 points 5 days ago

Ha ha ha, yup... whoops!

[-] petrol_sniff_king 8 points 5 days ago

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

[-] Kraiden@kbin.earth 6 points 5 days ago

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

[-] petrol_sniff_king 3 points 5 days ago

Haha, s'all good, yo.

[-] ImplyingImplications@lemmy.ca 7 points 5 days 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 5 days 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
76 points (100.0% liked)

Fun Loops ▶️

308 readers
179 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