While I was taking a break from programming, I saw a random post on 9gag and I thought I make a script for it.

alt

A shop sells 1 chocolate at $1. You can exchange 3 wrappers for 1 chocolate. If you have $15, how many chocolates can you get?

var getChocolates = function(dollar) {
	var price = 1,                      // Price per chocolate
		wrappersForChocolate = 3;       // Amount wrappers per exchange

	var chocolates = Math.floor(dollar/price);  // Round up no integers

	if(chocolates < 0) return 0;

	var count = 0;
	do {
		var exchanged = Math.floor(chocolates/wrappersForChocolate);
		var leftover = chocolates%wrappersForChocolate;

		var ate = exchanged * wrappersForChocolate;
		count += (ate < wrappersForChocolate) ? chocolates : ate;
		console.log('- chocolates:', chocolates, '- ate:', (ate < wrappersForChocolate) ? chocolates : ate);
		chocolates = (chocolates < wrappersForChocolate) ? 0 : leftover + exchanged;

	} while (chocolates);

	return count;
}

Let’s run this

var dollar = 15;
var chocolates = getChocolates(dollar);

console.log(chocolates);
// 22

The answer is: 22

Test this app out
Dollar:

For ${{ dollar }}, you'll get {{ chocolates }} chocolates!!

Made simplified version

var getChocolatesSimplified = function(dollar) {
	var price = 1,                     // Price per chocolate
		wrappersForChocolate = 3,      // Amount wrappers per exchange
		exchangedToChocolate = 1;      // Amount chocolates after exhange

	var chocolates = Math.floor(dollar/price); // Round up no integers
	if(chocolates < 0) return 0;       // Returns 0;

	var amountChocolate = Number(chocolates); // Copy amount


	var count = 0;
	do {
		if(chocolates < wrappersForChocolate) break;
		console.log('- chocolate:', chocolates);
		chocolates = chocolates -wrappersForChocolate+exchangedToChocolate;
		count++;

	}
	while (!(chocolates < wrappersForChocolate));

	return amountChocolate + count;
}