Skip to content

Instantly share code, notes, and snippets.

@wgottschalk
Created March 20, 2016 04:03
Show Gist options
  • Save wgottschalk/4ab6998dc2ed59ea369f to your computer and use it in GitHub Desktop.
Save wgottschalk/4ab6998dc2ed59ea369f to your computer and use it in GitHub Desktop.
function coinSum(amount) {
return getCount([200, 100, 50, 20, 10, 5, 2, 1], amount);
}
const getCount = memoize((setOfCoins, value) => {
if (setOfCoins.length === 0 || value < 0) return 0;
if (value === 0) return 1;
var largestCoinInRemainingSet = setOfCoins.slice(0,1);
var remainingCoins = setOfCoins.slice(1);
return getCount(remainingCoins, value) + getCount(setOfCoins, value - largestCoinInRemainingSet);
})
function memoize(fn) {
var memory = {};
return function(arg1, arg2) {
var inputString = `${arg1} ${arg2}`
var answer = memory[inputString]
if (answer) return answer
else {
answer = fn(arg1, arg2);
memory[inputString] = answer;
return answer
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment