羅馬數字轉換程式

2021-06-30 16:24:02 字數 1636 閱讀 5684

在一本書裡看到一段羅馬數字的程式, 需求如下,自己試著用python和erlang各寫了一遍,感覺有些地方還是不太舒服,大家看看這個程式還能怎麼改改更好

」),或者在某圖書館或某大學的貢獻牆上看到它們 (「成立於mdcccl***viii」而不是「成立於1888」)。你也可能在某些文獻的大綱或者目錄上看到它們。這是乙個表示數字的系統,它實際上能夠追溯到遠古的羅馬帝國 (因此而得名)。

在羅馬數字中,利用7個不同字母進行重複或者組合來表達各式各樣的數字。

下面是關於構造羅馬數字的一些通用的規則的介紹:

python版本:

add, del, unit, decade, hundred, thousend = 0, 1, 1, 10, 100, 1000

compute = lambda a,x,y: x + y if a == add else y + x

def maproman(num):

mapfun = mapnum()

return reduce(lambda x,y: x + y, map(mapfun,subtractnum(num, thousend, )))

def subtractnum(num, level, result):

if num == 0 :

return result if level == 0 else subtractnum(0, level/10, result + [(0, level)])

newnum = num / level

modnum = num % level

return subtractnum(modnum, level/10, result + [(newnum, level)])

def mapnum():

def func((num, level)):

action,actionnum,src,dst = getaction(num, level)

return getactionresult(action,actionnum,src,dst)

return func

def getaction(num, level):

dict =

one, five, ten =  dict[level]

if num in range(1, 4):

return add, num - 1, one, one

elif num in range(5, 9):

return add, num - 5, five, one

elif num == 4:

return del, 1, five, one

elif num == 9:

return del, 1, ten, one

else:

return add, 0, "", ""

def getactionresult(action,num,src,dst):

if num == 0: return src

return getactionresult(action, num - 1, compute(action, src, dst), dst)

測試 myassert("mdcccl***viii", maproman(1888))

羅馬數字轉換

class solution object def romantoint self,s type s str rtype int 使用整數轉羅馬數的兩個列表 num tuple 1000,500,100,50,10,5,1 roman tuple m d c l x v i 使用dict和zip方法...

20190502 羅馬數字轉換為數字

羅馬數字包含以下七種字元 i,v,x,l,c,d 和 m。字元 數值 i 1 v 5 x 10 l 50 c 100 d 500 m 1000 例如,羅馬數字 2 寫做 ii 即為兩個並列的 1。12 寫做 xii 即為 x ii 27 寫做 xxvii,即為 xx v ii 通常情況下,羅馬數字中...

羅馬數字轉換為整數

給定乙個羅馬數字 s s,將羅馬數字轉換成整數。如羅馬數字i,ii,iii,iv,v分別代表數字 1,2,3,4,51,2,3,4,5。首先要來了解一下羅馬數字表示法,基本字元有 7 7 個 i v x l c d m,分別表示 11 5 5 1010 505 0 10010 0 50050 0 1...