DEV Community

Cover image for Can you hack this? #2
Alfredo Salzillo
Alfredo Salzillo

Posted on

3

Can you hack this? #2

Write an isEven function to check if a number is even without using the modulus operator.

const isEven = (n) => ...

isEven(2) // => true 
isEven('127') // => false
isEven('12abc2') // => false 
Enter fullscreen mode Exit fullscreen mode

Top comments (10)

Collapse
 
jonathanarnault profile image
Jonathan ARNAULT • Edited

One liner solution :

const isEven = (n) => (+n && (n & 1)) === 0
Enter fullscreen mode Exit fullscreen mode
Collapse
 
pybash profile image
PyBash

Solved!

const isEven = (n) => {
  q = n/2
  ans = q===parseInt(q)
  if (ans==true) {
    return true
  }
  else {
    return false
  }
}

console.log(isEven(2)) // => true
console.log(isEven(127)) // => false
console.log(isEven('127')) // => false
console.log(isEven('12abc2')) // => false
Enter fullscreen mode Exit fullscreen mode
Collapse
 
ironcladdev profile image
Conner Ow

Instead of doing

if (ans==true) {
    return true
  }
  else {
    return false
  }
Enter fullscreen mode Exit fullscreen mode

Try

return ans == true;
Enter fullscreen mode Exit fullscreen mode
Collapse
 
omicron666 profile image
Omicron
isEven=n=>!!(+n+1<<31)
Enter fullscreen mode Exit fullscreen mode
Collapse
 
vicainelli profile image
Vinicius Cainelli • Edited

Without convert to Number

const isEven = (n) => {
  const rgx = new RegExp('^\d*[02468]$')
  return rgx.test(n)
};
Enter fullscreen mode Exit fullscreen mode
Collapse
 
idodav profile image
Ido David

another solution:
isEven = (num) => Number.isInteger(num) && (!(num & 1))

Collapse
 
alfredosalzillo profile image
Alfredo Salzillo

Can anyone solve it without converting into a number?

Collapse
 
ironcladdev profile image
Conner Ow

I don't know if that's possible. I mean, using the parseInt function could work if someone inputs a string.

Collapse
 
alfredosalzillo profile image
Alfredo Salzillo

A Little help, you can use a regexp

Collapse
 
spino233 profile image
Angelo Caci

const isEven = (n) => !!n.toString().match("^[0-9]*[02468]$");

Qodo Takeover

Introducing Qodo Gen 1.0: Transform Your Workflow with Agentic AI

Rather than just generating snippets, our agents understand your entire project context, can make decisions, use tools, and carry out tasks autonomously.

Read full post

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay