DEV Community

Cover image for Road to Genius: advanced #47
Ilya Nevolin
Ilya Nevolin

Posted on

2

Road to Genius: advanced #47

Each day I solve several coding challenges and puzzles from Codr's ranked mode. The goal is to reach genius rank, along the way I explain how I solve them. You do not need any programming background to get started, and you will learn a ton of new and interesting things as you go.

function backtrack(list, tempList, nums, remain, start) {
  if (remain < 0)
    return;
  else if (remain === 0)
    return list.push([...tempList]);
  for (let i = start; i < 💎.length; i++) {
    tempList.push(nums[i]);
    backtrack(list, tempList, nums, 😈 - nums[i], i);
    tempList.pop();
  }
}
function combS(arr, T) {
  const list = [];
  backtrack(list, [], arr.sort((a, b) => a - b), T, 0);
  return list;
}
let A = combS([2, 3, 4], 6);
A = A.length;

// 💎 = ? (identifier)
// 😈 = ? (identifier)
// such that A = 3 (number)
Enter fullscreen mode Exit fullscreen mode

I remember this code, we have encountered this on episode 37 (https://dev.to/codr/road-to-genius-advanced-37-104d). So we don't have to reinvent the wheel today.

We've learned from the past that this backtrack algorithm is making an array of all possible combinations from the array to reach some target number. In this particular case there are 3 (A=3) possible ways to produce 6 with numbers 2, 3 and 4:

6 = 2 + 2 + 2
6 = 3 + 3
6 = 4 + 2
Enter fullscreen mode Exit fullscreen mode

The bug 💎 should be nums because that's what we are iterating.
And 😈 should be remain because at each recursive step it is subtracting a number from the remainder.

coding challenge answer

By solving these challenges you train yourself to be a better programmer. You'll learn newer and better ways of analyzing, debugging and improving code. As a result you'll be more productive and valuable in business. Get started and become a certified Codr today at https://nevolin.be/codr/

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)

Billboard image

Create up to 10 Postgres Databases on Neon's free plan.

If you're starting a new project, Neon has got your databases covered. No credit cards. No trials. No getting in your way.

Try Neon for Free →

👋 Kindness is contagious

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

Okay