John wants to decorate a room with wallpaper. He's heard that 
making sure he has the right amount of wallpaper is more complex than it sounds. 
He wants a fool-proof method for getting it right.

John knows that the rectangular room has a length of `l` meters, a width of `w` meters, a height of `h` meters.
The standard width of the rolls he wants to buy is `52` centimeters. The 
length of a roll is `10` meters.
He bears in mind however, that it’s best to have an extra length of wallpaper handy in case of mistakes or miscalculations so he wants to buy a length `15%` greater than the one he needs.

Last time he did these calculations he got a headache, so could you help John? Your function `wallpaper(l, w, h)` should return as a plain English word
in lower case the number of rolls he must buy.

### Example:

`wallpaper(4.0, 3.5, 3.0) should return "ten"`

`wallpaper(0.0, 3.5, 3.0) should return "zero"`

# Notes:
- all rolls (even with incomplete width) are put edge to edge 
- 0 <= l, w, h (floating numbers), it can happens that `w x h x l` is zero
- the integer `r` (number of rolls) will always be less or equal to 20


- FORTH: the number of rolls will be a *positive or null integer* (not a plain English word; this number can be greater than 20)

Difficulty: introductory

Starter code:

def wallpaper(l, w, h):
	

Solutions:
from math import ceil

numbers = {0:"zero", 1: "one", 2: "two", 3: "three", 4: "four", 5: "five", 6: "six", 7: "seven", 8: "eight", 
9: "nine", 10: "ten", 11:"eleven", 12: "twelve", 13: "thirteen", 14: "fourteen", 15: "fifteen", 
16:"sixteen", 17:"seventeen", 18: "eighteen", 19: "nineteen", 20: "twenty"}

def wallpaper(l, w, h):
    return "zero" if w*l==0 else numbers[ceil((2*l+2*w) * h * 1.15 / 5.2)]

from math import ceil
def wallpaper(l, w, h):
    numarr = ['zero','one','two','three','four','five','six','seven','eight','nine', 'ten', 'eleven',
              'twelve','thirteen','fourteen','fifteen','sixteen', 'seventeen','eighteen','nineteen', 'twenty']
    return numarr[ceil(l and w and ((l + w) * h * 2 * 1.15) / 5.2)]


i=__import__;wallpaper=lambda l,w,h,n=i("requests").get("https://num-words.com/in-words/0-9999/0-49/").text:[e.get_text() for e in i("bs4").BeautifulSoup(n)('b')][i("math").ceil((((l+w)*2*h)/5.2) * 1.15)*3*bool(w*h*l)].lower()

def wallpaper(l, w, h):

    result = {
        
        '1': 'one',
        '2': 'two',
        '3': 'three',
        '4': 'four',
        '5': 'five',
        '6': 'six',
        '7': 'seven',
        '8': 'eight',
        '9': 'nine',
        '10': 'ten',
        '11': 'eleven',
        '12': 'twelve',
        '13': 'thirteen',
        '14': 'fourteen',
        '15': 'fifteen',
        '16': 'sixteen',
        '17': 'seventeen',
        '18': 'eighteen',
        '19': 'nineteen',
        '20': 'twenty',
    }

    wall_area = 1.15 * ((2*l*h) + (2*w*h))
    wallpaper = 0.52 * 10
    to_buy = wall_area / wallpaper

    for k,v in result.items():
        if l == 0 or w == 0 or h == 0:
            return 'zero'
        elif int(k) == round(to_buy + 0.5):
            return v

from math import ceil

L = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten",
     "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen", "twenty"]

def wallpaper(l, w, h):
    return L[0 if not (l and w) else ceil(2*h*(l+w)*1.15/10/0.52)]

def wallpaper(l, w, h):
  dict = ['zero','one','two','three','four','five','six','seven','eight','nine','ten','eleven','twelve','thirteen','fourteen','fifteen','sixteen','seventeen','eighteen','nineteen','twenty'];
  rolls = int(((l + w) * 2) * h / 0.52 / 10 * 1.15) + 1 if (l and w and h) else 0;
  return dict[rolls];

import math
def wallpaper(l, w, h):
# assuming to cover the wall with wallpaper vertically roll by roll, so it's likely the roll strip will be partially used
    # number of rolls needed
    if l == 0 or w == 0 or h == 0: 
        return 'zero'
    r = math.ceil( (2*(l+w)*100)*h*100*1.15 / (52*1000) )
    number_dictionary = {1:'one',2:'two',3:'three',4:'four',5:'five',6:'six',7:'seven',8:'eight',9:'nine',10:'ten',11:'eleven',12:'twelve',13:'thirteen',14:'fourteen',15:'fifteen',16:'sixteen',17:'seventeen',18:'eighteen',19:'nineteen',20:'twenty'}
    return number_dictionary[r]


import math
def wallpaper(l, w, h):
    numbers = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten","eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen", "twenty"]
    if(l==0 or w==0 or h==0):
        return numbers[0]
    return numbers[math.ceil((l+w)*h*2.0*10.0*1.15/52.0)]

ANS = {i:v for i,v in enumerate(("zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen", "twenty"))}

def wallpaper(l, w, h):
    n,r = divmod( 2*(l+w)/0.52 * h * 1.15, 10)
    return ANS[ l and w and h and int(n) + bool(r) ]

def wallpaper(l, w, h):
    from math import ceil
    
    num_words_dic = {1: 'one', 2: 'two', 3: 'three', 4: 'four', 5: 'five', \
            6: 'six', 7: 'seven', 8: 'eight', 9: 'nine', 10: 'ten', \
            11: 'eleven', 12: 'twelve', 13: 'thirteen', 14: 'fourteen', \
            15: 'fifteen', 16: 'sixteen', 17: 'seventeen', \
            18: 'eighteen', 19: 'nineteen', 20: 'twenty'}
    S_wall = (l + w) * 2 * h
    S_paper = 5.2 
    
    return "zero" if l*w*h == 0 else num_words_dic[ceil(S_wall / S_paper * 1.15)]