DEV Community

Cover image for Codewars - Build a pile of Cubes
Nicolás Bost
Nicolás Bost

Posted on

Codewars - Build a pile of Cubes

Salutations.

Tessa says hi

I'm posting Codewars challenges and my thought process in this series. I'm using JS and Node 18 whenever possible. Just for the sake of clarity, I'm making fair use of them.

The next one is tricky for us, people who struggle with math. It's a nice challenge though. Essentially, it boils down to figuring out the sum of "n" cubes. Then there's some black magic (a.k.a: algebra) et voilà! Solved.

Sum of cubes explained with proof.

Full solution:

function findNb(m) {

  // sum of n cubes = ( n^2 * (n+1)^2 ) / 4

  let number = m * 4;
  number = number ** (1/2);
  let numberAux = number ** (1/2);
  let floor = Math.floor(numberAux);
  let ceiling = (Number.isInteger(numberAux)) ? floor + 1 : Math.ceil(numberAux);
  if ( floor * ceiling == number ){
    return floor;
  }
  return (-1);
}
Enter fullscreen mode Exit fullscreen mode

Why do we compute floor and ceiling? Because if the argument m does indeed represent a sum of "n" cubes, then numberAux is PARTLY the number we are looking for. We just need the integer part. Which is "n". And it's also floor.

If 'm' does not represent a sum of cubes, then the function returns -1. No big deal.

It works. I don't know if me-in-6-months will understand anything though.

Take care. Drink water 💧💧💧.

Previous

Heroku

Build apps, not infrastructure.

Dealing with servers, hardware, and infrastructure can take up your valuable time. Discover the benefits of Heroku, the PaaS of choice for developers since 2007.

Visit Site

Top comments (0)

Image of Datadog

The Essential Toolkit for Front-end Developers

Take a user-centric approach to front-end monitoring that evolves alongside increasingly complex frameworks and single-page applications.

Get The Kit

👋 Kindness is contagious

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

Okay