guitar-player

dec2rom_rom2dec.py

Jul 20th, 2012
21
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.42 KB | None | 0 0
  1. # Por Luis Mex
  2. # funciones sencillas para numeros arabicos a romanos y viceversa
  3.  
  4.  
  5. def arab2rom(val):
  6.        
  7.         rabc=['I','II','III','IV','V','VI','VII','VIII','IX',
  8.                   'X','XX','XXX','XL','L','XC','C','CC','CCC'
  9.               ,'CD','D','CM','M','MM','MMM','MV_','V_']
  10.  
  11.         abc=[1,2,3,4,5,6,7,8,9,10,20,30,40,50,90,100,200,300,400,
  12.         500,900,1000,2000,3000,4000,5000]
  13.        
  14.         string=''
  15.         i=0
  16.         val_act=val
  17.         if val_act > 5000 :
  18.                 print " el valor supera la gramtica"
  19.                 exit()
  20.         while True:
  21.                 if (val_act == 0):
  22.                         break
  23.                 else:
  24.                         for j in range(0,len(abc)):
  25.                                 if (val_act < abc[j]):
  26.                                         val_tmp=-abc[j-1]+val_act
  27.                                         val_act=val_tmp
  28.                                         i=j
  29.                                         string+=rabc[j-1]
  30.                                         break
  31.                                 elif (val_act >= abc[len(abc)-1]):
  32.                                                 #print "True"
  33.                                                 val_tmp=-abc[j-1]+val_act
  34.                                                 val_act=val_tmp
  35.                                                 i=j
  36.                                                 string+=rabc[j-1]
  37.                                                 break
  38.         return string
  39.  
  40. def rom2arab(string):
  41.        
  42.         rabc=['I','II','III','IV','V','VI','VII','VIII','IX',
  43.                           'X','XX','XXX','XL','L','XC','C','CC','CCC'
  44.                           ,'CD','D','CM','M','MM','MMM','MV_','V_']
  45.  
  46.         abc=[1,2,3,4,5,6,7,8,9,10,20,30,40,50,90,100,200,300,400,
  47.                 500,900,1000,2000,3000,4000,5000]
  48.                
  49.         num=[]
  50.        
  51.         for i in range(0,len(string)):
  52.                 for j in range(0,len(abc)):
  53.                         if string[i]==rabc[j]:
  54.                                 num.append(abc[j])
  55.                                
  56.         for j in range(0,len(num)-1):
  57.                 for i in range(j,j+1):
  58.                         if num[i] < num[i+1]:
  59.                                 num[i]=-num[i]
  60.                                
  61.         return sum(num)
  62.        
  63.  
  64.  
  65. val=45
  66. val_r='XLV'
  67. f=arab2rom(val)
  68. g=rom2arab(val_r)
  69. print f,g
Advertisement
Add Comment
Please, Sign In to add comment