tasks a-s
This commit is contained in:
parent
47bf37c096
commit
b83f433714
12433 changed files with 156208 additions and 123 deletions
24
Task/Roman-numerals-Encode/Python/roman-numerals-encode-1.py
Normal file
24
Task/Roman-numerals-Encode/Python/roman-numerals-encode-1.py
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
roman = "MDCLXVmdclxvi"; # UPPERCASE for thousands #
|
||||
adjust_roman = "CCXXmmccxxii";
|
||||
arabic = (1000000, 500000, 100000, 50000, 10000, 5000, 1000, 500, 100, 50, 10, 5, 1);
|
||||
adjust_arabic = (100000, 100000, 10000, 10000, 1000, 1000, 100, 100, 10, 10, 1, 1, 0);
|
||||
|
||||
def arabic_to_roman(dclxvi):
|
||||
org = dclxvi; # 666 #
|
||||
out = "";
|
||||
for scale,arabic_scale in enumerate(arabic):
|
||||
if org == 0: break
|
||||
multiples = org / arabic_scale;
|
||||
org -= arabic_scale * multiples;
|
||||
out += roman[scale] * multiples;
|
||||
if org >= -adjust_arabic[scale] + arabic_scale:
|
||||
org -= -adjust_arabic[scale] + arabic_scale;
|
||||
out += adjust_roman[scale] + roman[scale]
|
||||
return out
|
||||
|
||||
if __name__ == "__main__":
|
||||
test = (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,25,30,40,50,60,69,70,
|
||||
80,90,99,100,200,300,400,500,600,666,700,800,900,1000,1009,1444,1666,1945,1997,1999,
|
||||
2000,2008,2500,3000,4000,4999,5000,6666,10000,50000,100000,500000,1000000);
|
||||
for val in test:
|
||||
print '%d - %s'%(val, arabic_to_roman(val))
|
||||
16
Task/Roman-numerals-Encode/Python/roman-numerals-encode-2.py
Normal file
16
Task/Roman-numerals-Encode/Python/roman-numerals-encode-2.py
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
romanDgts= 'ivxlcdmVXLCDM_'
|
||||
|
||||
def ToRoman(num):
|
||||
namoR = ''
|
||||
if num >=4000000:
|
||||
print 'Too Big -'
|
||||
return '-----'
|
||||
for rdix in range(0, len(romanDgts), 2):
|
||||
if num==0: break
|
||||
num,r = divmod(num,10)
|
||||
v,r = divmod(r, 5)
|
||||
if r==4:
|
||||
namoR += romanDgts[rdix+1+v] + romanDgts[rdix]
|
||||
else:
|
||||
namoR += r*romanDgts[rdix] + (romanDgts[rdix+1] if(v==1) else '')
|
||||
return namoR[-1::-1]
|
||||
18
Task/Roman-numerals-Encode/Python/roman-numerals-encode-3.py
Normal file
18
Task/Roman-numerals-Encode/Python/roman-numerals-encode-3.py
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
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 to_roman(x):
|
||||
ret = []
|
||||
for a,r in zip(anums, rnums):
|
||||
n,x = divmod(x,a)
|
||||
ret.append(r*n)
|
||||
return ''.join(ret)
|
||||
|
||||
if __name__ == "__main__":
|
||||
test = (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,25,30,40,
|
||||
50,60,69,70,80,90,99,100,200,300,400,500,600,666,700,800,900,
|
||||
1000,1009,1444,1666,1945,1997,1999,2000,2008,2010,2011,2500,
|
||||
3000,3999)
|
||||
|
||||
for val in test:
|
||||
print '%d - %s'%(val, to_roman(val))
|
||||
Loading…
Add table
Add a link
Reference in a new issue