Create a function taking a positive integer as its parameter and returning a string containing the Roman Numeral representation of that integer.

Modern Roman numerals are written by expressing each digit separately starting with the left most digit and skipping any digit with a value of zero. In Roman numerals 1990 is rendered: 1000=M, 900=CM, 90=XC; resulting in MCMXC. 2008 is written as 2000=MM, 8=VIII; or MMVIII. 1666 uses each Roman symbol in descending order: MDCLXVI.

Example:
```python
solution(1000) # should return 'M'
```

Help:
```
Symbol  Value
I             1
V             5
X             10
L             50
C             100
D             500
M             1,000
```

Remember that there can't be more than 3 identical symbols in a row.

More about roman numerals - http://en.wikipedia.org/wiki/Roman_numerals

Difficulty: introductory

Starter code:

def solution(n):
	

Solutions:
def solution(n):
    roman_numerals = {1000:'M',
                      900: 'CM',
                      500: 'D',
                      400: 'CD',
                      100: 'C',
                      90: 'XC',
                      50: 'L',
                      40: 'XL',
                      10: 'X',
                      9: 'IX',
                      5: 'V',
                      4: 'IV',
                      1: 'I'
    }
    roman_string = ''
    for key in sorted(list(roman_numerals.keys()),reverse=True):
        while n >= key:
            roman_string += roman_numerals[key]
            n -= key
    return roman_string


vals = zip(('M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I'),
           (1000, 900, 500,  400, 100,   90,  50,   40,  10,    9,   5,    4,   1))

def solution(n):
    if n == 0: return ""
    return next(c + solution(n-v) for c,v in vals if v <= n)

units = " I II III IV V VI VII VIII IX".split(" ")
tens = " X XX XXX XL L LX LXX LXXX XC".split(" ")
hundreds = " C CC CCC CD D DC DCC DCCC CM".split(" ")
thousands = " M MM MMM".split(" ")

def solution(n):
    return thousands[n//1000] + hundreds[n%1000//100] + tens[n%100//10] + units[n%10]

def solution(n):
    return "M" * (n//1000) + hundreds[n%1000//100] + tens[n%100//10] + units[n%10]


anums = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]
rnums = "M CM D CD C XC L XL X IX V IV I".split()

def solution(x):
    ret = []
    for a,r in zip(anums, rnums):
        n,x = divmod(x,a)
        ret.append(r*n)
    return ''.join(ret)

def solution(n):
    dic = {1:'I',4:'IV',5:'V',9:'IX',10:'X',40:'XL',50:'L',90:'XC',100:'C',400:'CD',500:'D',900:'CM',1000:'M'}
    roman = ''
    for a in reversed(sorted(dic.keys())):
        while (a <= n):
            n = n - a;
            roman = roman + dic[a];
    return roman


def solution(n):
    return  " M MM MMM".split(" ")[n//1000] + \
            " C CC CCC CD D DC DCC DCCC CM".split(" ")[n//100%10] + \
            " X XX XXX XL L LX LXX LXXX XC".split(" ")[n//10%10] + \
            " I II III IV V VI VII VIII IX".split(" ")[n%10]

def solution(n):
    ed = ["","I","II","III","IV","V","VI","VII","VIII","IX"]
    des = ["","X","XX","XXX","XL","L","LX","LXX","LXXX","XC"]
    sot = ["","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"]
    tys = ["","M","MM","MMM","MMMM"]
    
    return tys[n // 1000] + sot[n // 100 % 10] + des[n // 10 % 10] + ed[n % 10]

def solution(n):
    ROMAN_SYMBOLS = ["M", "D", "C", "L", "X", "V", "I"]
    ROMAN_VALUES = [1000, 500, 100, 50, 10, 5, 1]
    idx = 0
    roman = []
    while n > 0:
        if n < ROMAN_VALUES[idx]:
            idx += 1
            continue
        n -= ROMAN_VALUES[idx]
        roman.append(ROMAN_SYMBOLS[idx])
        if roman[-4:].count(roman[-1]) == 4:
            roman = roman[:-3] + [ROMAN_SYMBOLS[idx-1]]
            if roman[-3:-2] == roman[-1:]:
                roman = roman[:-3] + [ROMAN_SYMBOLS[idx]] + [ROMAN_SYMBOLS[idx-2]]
    return "".join(roman)

def solution(n):
    numeral = ''
    number = [1000, 900, 500, 400, 100, 90, 50, 40, 10,9,5,4,1]
    numerals = ['M','CM','D','CD','C','XC','L', 'XL','X','IX','V','IV','I']
    print(numerals)
    square = lambda x, y: int(x/number[y]) * numerals[y]
    for i in range(13):
        numeral+= square(n, i) 
        n = n - number[i]*int(n/number[i])
    return numeral


def solution(x):
    table = [
        (1000,"M"),
        (900,"CM"),
        (500,"D"),
        (400,"CD"),
        (100,"C"),
        (90,"XC"),
        (50,"L"),
        (40,"XL"),
        (10,"X"),
        (9,"IX"),
        (5,"V"),
        (4,"IV"),
        (1,"I")
    ]
    for num, rep in table:
        if x >= num:
            return rep + solution(x-num)
    return str()