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

Source: codewars | Difficulty: EASY

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):
	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()