Just another day in the world of Minecraft, Steve is getting ready to start his next exciting project -- building a railway system!

![Alt text](http://static.planetminecraft.com/files/resource_media/screenshot/1506/2015-02-02_0156508603066.jpg)

But first, Steve needs to melt some iron ores in the furnace to get the main building blocks of rails -- iron ingots. ![Alt text](http://www.blocksandgold.com/media/catalog/product/cache/3/image/35x/cbcbef48e5e3bcce7c7ed908f20bc5b4/i/r/ironingot_icon32.png)

Each iron ingot takes 11 seconds* to produce. Steve needs a lot of them, and he has the following fuel options to add into the furnace: 

* Buckets of lava, each lasts 800 seconds* ![Alt text](http://www.minecraftguides.org/images/items/bucketL.gif)
* Blaze rod, each lasts 120 seconds ![Alt text](http://www.minecraftguides.org/images/items/blazerod.gif)
* Coals, each lasts 80 seconds ![Alt text](http://www.minecraftguides.org/images/items/coal.gif)
* Blocks of Wood, each lasts 15 seconds ![Alt text](http://www.minecraftguides.org/images/itemGifs/logs.gif)
* Sticks, each lasts 1 second* ![Alt text](http://www.minecraftguides.org/images/items/stick.gif)

In Ruby: 
Write a function `calc_fuel` that calculates the **minimum** amount of fuel needed to produce a certain number of iron ingots. This function should return a hash of the form `{:lava => 2, :blaze_rod => 1, :coal => 1, :wood => 0, :stick => 0}`
In JavaScript:
Write a function `calcFuel` that calculates the **minimum** amount of fuel needed to produce a certain number of iron ingots. This function should return an object of the form `{lava: 2, blazeRod: 1, coal: 1, wood: 0, stick: 0}`
In Python:
Write a function `calc_fuel` that calculates the **minimum** amount of fuel needed to produce a certain number of iron ingots. This function should return a dictionary of the form `{"lava": 2, "blaze rod": 1, "coal": 1, "wood": 0, "stick": 0}`

---
*fictional values

To all the Minecraft players out there: 
feel free to expand this series or let me know if you have any ideas related to Minecraft that can be turned into codewars puzzles. Some ideas I have that might potentially be turned into katas:

* distance traveled in real world vs. in Nether
* shortest path problems related to mining diamonds/gold/goodies that appears in different levels under ground
* growth of animal population from breeding
* redstone stuff?!

If you do end up expanding this series, please send me a link of your kata so I can check it out and include a link to your kata here :-)

* [Minecraft Series #1: Steve wants to build a beacon pyramid](https://www.codewars.com/kata/minecraft-series-number-1-steve-wants-to-build-a-beacon-pyramid/ruby)
* [Minecraft Series #3: Lava is amazing! ](https://www.codewars.com/kata/583a23d40cf946ec380002c2)
* [Minecraft Series #4: Lava is amazing, however...](https://www.codewars.com/kata/583a6b0b171f3a3c3f0003e3)

Source: codewars | Difficulty: EASY
Tags: Fundamentals

Starter code: def calc_fuel(n):
	

Solutions:
t = ((800, 'lava'), (120, 'blaze rod'), (80, 'coal'), (15, 'wood'), (1, 'stick'))

def calc_fuel(n):
	(s, r) = (n * 11, {})
	for (d, e) in t:
		(r[e], s) = divmod(s, d)
	return r


def calc_fuel(n):
	time = n * 11
	(lava, blaze) = divmod(time, 800)
	(blaze, coal) = divmod(blaze, 120)
	(coal, wood) = divmod(coal, 80)
	(wood, stick) = divmod(wood, 15)
	return {'lava': lava, 'blaze rod': blaze, 'coal': coal, 'wood': wood, 'stick': stick}


d = [(800, 'lava'), (120, 'blaze rod'), (80, 'coal'), (15, 'wood'), (1, 'stick')]

def calc_fuel(n):
	n *= 11
	r = {}
	for (a, b) in d:
		r[b] = n // a
		n %= a
	return r


def calc_fuel(n):
	dict = {'lava': 0, 'blaze rod': 0, 'coal': 0, 'wood': 0, 'stick': 0}
	time = n * 11
	if time >= 800:
		dict['lava'] = time // 800
		time -= 800 * (time // 800)
	if time >= 120:
		dict['blaze rod'] = time // 120
		time -= 120 * (time // 120)
	if time >= 80:
		dict['coal'] = time // 80
		time -= 80 * (time // 80)
	if time >= 15:
		dict['wood'] = time // 15
		time -= 15 * (time // 15)
	dict['stick'] = time
	return dict


def calc_fuel(n):
	n *= 11
	values = {'lava': 800, 'blaze rod': 120, 'coal': 80, 'wood': 15, 'stick': 1}
	usage = {'lava': 0, 'blaze rod': 0, 'coal': 0, 'wood': 0, 'stick': 0}
	for (fuel_source, duration) in list(values.items()):
		if n // duration > 0:
			usage[fuel_source] = n // duration
			n -= n // duration * duration
	return usage


def calc_fuel(n):
	dic = {'lava': 0, 'blaze rod': 0, 'coal': 0, 'wood': 0, 'stick': 0}
	time = n * 11
	poss = [800, 120, 80, 15, 1]
	i = 0
	while time > 0:
		while time - poss[i] >= 0:
			time -= poss[i]
			if poss[i] == 800:
				dic['lava'] += 1
			elif poss[i] == 120:
				dic['blaze rod'] += 1
			elif poss[i] == 80:
				dic['coal'] += 1
			elif poss[i] == 15:
				dic['wood'] += 1
			elif poss[i] == 1:
				dic['stick'] += 1
		i += 1
	return dic


def calc_fuel(n):
	result = {}
	n *= 11
	for (fuel, sec) in (('lava', 800), ('blaze rod', 120), ('coal', 80), ('wood', 15), ('stick', 1)):
		(result[fuel], n) = divmod(n, sec)
	return result


def calc_fuel(n):
	from math import floor
	fuels = {'lava': 800, 'blaze rod': 120, 'coal': 80, 'wood': 15, 'stick': 1}
	n *= 11
	result = {}
	for (fuel, time) in fuels.items():
		(result[fuel], n) = divmod(n, time)
	return result


def calc_fuel(n):
	result = {}
	wholeTime = n * 11
	result['lava'] = wholeTime // 800
	wholeTime -= 800 * result['lava']
	result['blaze rod'] = wholeTime // 120
	wholeTime -= 120 * result['blaze rod']
	result['coal'] = wholeTime // 80
	wholeTime -= 80 * result['coal']
	result['wood'] = wholeTime // 15
	wholeTime -= 15 * result['wood']
	result['stick'] = wholeTime // 1
	return result