2018-09-30 22:01:58 +00:00
---
title: Count the coins
id: 59713bd26bdeb8a594fb9413
challengeType: 5
---
## Description
< section id = 'description' >
2019-02-25 04:36:09 +00:00
There are four types of common coins in < a href = "https://en.wikipedia.org/wiki/United_States" title = "link: https://en.wikipedia.org/wiki/United_States" > US< / a > currency:
< ul >
< li > quarters (25 cents)< / li >
< li > dimes (10 cents)< / li >
< li > nickels (5 cents), and< / li >
< li > pennies (1 cent)< / li >
< / ul >
2018-09-30 22:01:58 +00:00
< p > There are six ways to make change for 15 cents:< / p >
2019-02-25 04:36:09 +00:00
< ul >
< li > A dime and a nickel< / li >
< li > A dime and 5 pennies< / li >
< li > 3 nickels< / li >
< li > 2 nickels and 5 pennies< / li >
< li > A nickel and 10 pennies< / li >
< li > 15 pennies< / li >
< / ul >
Implement a function to determine how many ways there are to make change for a dollar using these common coins? (1 dollar = 100 cents)
< b > Reference:< / b >
< ul >
< li > < a href = "http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-11.html#%_sec_Temp_52" title = "link: http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-11.html#%_sec_Temp_52" > an algorithm from MIT Press< / a > .< / li >
< / ul >
2018-09-30 22:01:58 +00:00
< / section >
## Instructions
< section id = 'instructions' >
< / section >
## Tests
< section id = 'tests' >
```yml
2018-10-04 13:37:37 +00:00
tests:
- text: < code > countCoins</ code > is a function.
2018-10-20 18:02:47 +00:00
testString: assert(typeof countCoins === 'function', '< code > countCoins< / code > is a function.');
2018-10-04 13:37:37 +00:00
- text: < code > countCoints()</ code > should return 242.
2018-10-20 18:02:47 +00:00
testString: assert.equal(countCoins(), 242, '< code > countCoints()< / code > should return 242.');
2018-09-30 22:01:58 +00:00
```
< / section >
## Challenge Seed
< section id = 'challengeSeed' >
< div id = 'js-seed' >
```js
2019-02-26 08:07:07 +00:00
function countCoins() {
2018-09-30 22:01:58 +00:00
// Good luck!
return true;
}
```
< / div >
< / section >
## Solution
< section id = 'solution' >
```js
2019-02-26 08:07:07 +00:00
function countCoins() {
2018-09-30 22:01:58 +00:00
let t = 100;
const operands = [1, 5, 10, 25];
const targetsLength = t + 1;
const operandsLength = operands.length;
t = [1];
for (let a = 0; a < operandsLength ; a + + ) {
for (let b = 1; b < targetsLength ; b + + ) {
// initialise undefined target
t[b] = t[b] ? t[b] : 0;
// accumulate target + operand ways
t[b] += (b < operands [ a ] ) ? 0 : t [ b - operands [ a ] ] ;
}
}
return t[targetsLength - 1];
}
```
< / section >