mirror of
https://github.com/freeCodeCamp/freeCodeCamp.git
synced 2026-05-16 07:00:53 -04:00
Co-authored-by: Kolade Chris <65571316+Ksound22@users.noreply.github.com> Co-authored-by: Huyen Nguyen <25715018+huyenltnguyen@users.noreply.github.com>
1.7 KiB
1.7 KiB
id, title, challengeType, dashedName
| id | title | challengeType | dashedName |
|---|---|---|---|
| 6821ebea237de8297eaee795 | JavaScript Challenge 19: Candlelight | 28 | javascript-challenge-19 |
--description--
Given an integer representing the number of candles you start with, and an integer representing how many burned candles it takes to create a new one, return the number of candles you will have used after creating and burning as many as you can.
For example, if given 7 candles and it takes 2 burned candles to make a new one:
- Burn 7 candles to get 7 leftovers,
- Recycle 6 leftovers into 3 new candles (1 leftover remains),
- Burn 3 candles to get 3 more leftovers (4 total),
- Recycle 4 leftovers into 2 new candles,
- Burn 2 candles to get 2 leftovers,
- Recycle 2 leftovers into 1 new candle,
- Burn 1 candle.
You will have burned 13 total candles in the example.
--hints--
burnCandles(7, 2) should return 13
assert.equal(burnCandles(7, 2), 13);
burnCandles(10, 5) should return 12
assert.equal(burnCandles(10, 5), 12);
burnCandles(20, 3) should return 29
assert.equal(burnCandles(20, 3), 29);
burnCandles(17, 4) should return 22
assert.equal(burnCandles(17, 4), 22);
burnCandles(2345, 3) should return 3517
assert.equal(burnCandles(2345, 3), 3517);
--seed--
--seed-contents--
function burnCandles(candles, leftoversNeeded) {
return candles;
}
--solutions--
function burnCandles(candles, leftoversNeeded) {
let totalBurned = 0;
let unusedLeftovers = 0;
while (candles > 0) {
totalBurned += candles;
const leftovers = candles + unusedLeftovers;
candles = Math.floor(leftovers / leftoversNeeded);
unusedLeftovers = leftovers % leftoversNeeded;
}
return totalBurned;
}