Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save YaroslavShapoval/d698769a30b99c4cc2154af9550b9bda to your computer and use it in GitHub Desktop.

Select an option

Save YaroslavShapoval/d698769a30b99c4cc2154af9550b9bda to your computer and use it in GitHub Desktop.
const ways = {
// number: 10 => steps: [A, B, C, A, B, C]
};
const START = 3;
const FINISH = 22;
let minWayToFinish = undefined;
function check(number, steps = []) {
if (number > FINISH) {
return;
}
if (number === FINISH) {
if (!minWayToFinish || steps.length < minWayToFinish.length) {
minWayToFinish = steps;
console.log(steps.length + ": " + steps.join(', '));
return;
}
}
if (ways.hasOwnProperty(number)) {
if (steps.length <= ways[number].length) {
ways[number] = steps;
}
} else {
check(number+3, steps.concat(['A']));
check(number*2, steps.concat(['B']));
check(number+1, steps.concat(['C']));
}
}
check(START);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment