亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
樓主: yestreenstars
打印 上一主題 下一主題

[文本處理] 練習(xí)題(阿拉伯?dāng)?shù)字轉(zhuǎn)化為羅馬數(shù)字) [復(fù)制鏈接]

論壇徽章:
32
處女座
日期:2013-11-20 23:41:20雙子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00處女座
日期:2014-07-22 17:30:47獅子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥豬
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58處女座
日期:2014-12-02 09:17:52程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-06-16 22:20:002015亞冠之塔什干火車頭
日期:2015-06-20 23:28:22
31 [報(bào)告]
發(fā)表于 2015-06-15 13:45 |只看該作者
回復(fù) 30# Herowinter

寫成多行腳本會(huì)好些~
   

論壇徽章:
32
處女座
日期:2013-11-20 23:41:20雙子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00處女座
日期:2014-07-22 17:30:47獅子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥豬
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58處女座
日期:2014-12-02 09:17:52程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-06-16 22:20:002015亞冠之塔什干火車頭
日期:2015-06-20 23:28:22
32 [報(bào)告]
發(fā)表于 2015-06-15 15:26 |只看該作者
回復(fù) 27# jason680

不錯(cuò)的思路,但那些單字符的變量看得有點(diǎn)暈,單行命令用單字符變量還好~
   

論壇徽章:
145
技術(shù)圖書徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11獅子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龍
日期:2014-01-08 15:26:12技術(shù)圖書徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
33 [報(bào)告]
發(fā)表于 2015-06-15 16:22 |只看該作者
本帖最后由 jason680 于 2015-06-15 16:30 編輯

回復(fù) 32# yestreenstars

$ awk '
BEGIN{
  # 0. prepare roman and value array
  # rom[1] = I, val[1] = 1
  # rom[2] = V, val[2] = 5
  # rom[3] = X, val[3] = 10
  # ...
  # rom[7] = X, val[7] = 1000
  max = split("IVXLCDM",rom,"");
  for(n=1; n <= max; n++){
    val[n] = 10**int(n/2) * (n%2?1:.5);
  }
}
{
  num = $0;
  # 1. check number ( 1 <= number <= 3999 )
  if(num < 1 || 3999 < num){
    print "out of range 1~3999: " num;
    next
  }
  rom_str = "";
  # 2. check number with 10 times only (1000, 100, 10, and 1)
  #    max=7, and V[7] = 1000, V[5]=100, ...
  for(n = max; n > 0; n -= 2){
    if(num >= val[n]){
      multi = int(num / val[n]);
      num %= val[n];
      # 3. for special number 4 and 9
      #   4xx = 100 and 500  = CD  (Note: multi=4, rom[5] and rom[5+1], n=5)
      #   9xx = 100 and 1000 = CM  (Note: multi=9, rom[5] and rom[5+2], n=5)
      #   rom[5] = C, val[5] = 100   , n =5
      #   rom[6] = D, val[6] = 500   , n+1=6
      #   rom[7] = M, val[7] = 1000 , n+2=7
      if(multi %5 == 4){
        rom_str = rom_str rom[n] rom[n+(multi>5?2:1)];
        continue;
      }
     #4. more than number 5
     #  6x = 50 and 1x = LX   (Note: multi=6 ==> rom[3+1] and multi=6-5=1)
     #  7x = 50 and 2x = LXX  (Note: Multi=7 ==> rom[3+1] and multi=7-5=2)
     #  rom[3] = X, val[3] = 10,  n=3
     #  rom[4] = L, val[4] = 50,  n+1=4
     if(multi >= 5){
       rom_str = rom_str rom[n+1];
       multi -= 5;
     }
     # for normal number
     for(c=1; c <= multi; c++)
       rom_str = rom_str rom[n]
    }
  }
  print rom_str
}' FILE
VI
LXXVI
CDXCIX
MMMDCCCLXXXVIII
IX
XX
out of range 1~3999: 4000
out of range 1~3999: 0
out of range 1~3999: -1

$ cat FILE
6
76
499
3888
9
20
4000
0
-1

   

論壇徽章:
26
2015亞冠之胡齊斯坦鋼鐵
日期:2015-06-25 21:40:202015亞冠之柏斯波利斯
日期:2015-08-31 17:03:192015亞冠之柏斯波利斯
日期:2015-11-07 13:10:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-11-10 06:20:00每日論壇發(fā)貼之星
日期:2015-11-10 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-11-26 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-12-02 06:20:00黃金圣斗士
日期:2015-12-07 17:57:4615-16賽季CBA聯(lián)賽之天津
日期:2015-12-23 18:34:14程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-01-02 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-01-06 06:20:00每日論壇發(fā)貼之星
日期:2016-01-06 06:20:00
34 [報(bào)告]
發(fā)表于 2015-06-15 19:59 |只看該作者
這是我的python2代碼,比較幼稚有些地方很不嚴(yán)謹(jǐn)高手請(qǐng)蛋定
  1. #!/usr/bin/python2

  2. ROM = [['I', 'V'], ['X', 'L'], ['C', 'D'], ['M']]
  3. GEN = lambda a, b, c, d, e, f, r: a * ROM[b][c] + d * ROM[e][f] + r
  4. LAM = [[3, lambda m, i, r: (0, i, 0, m, i, 0, r)],
  5.        [5, lambda m, i, r: (1, i, 0, 5 - m, i, 1, r)],
  6.        [8, lambda m, i, r: (1, i, 1, m - 5, i, 0, r)],
  7.        [9, lambda m, i, r: (10 - m, i, 0, 1, i + 1, 0, r)]]

  8. def A2R(n, i=0, R=''):
  9.     if n is 0: return R
  10.     n, m = divmod(n, 10)
  11.     return A2R(n, i + 1, GEN(*next(l(m, i, R) for v, l in LAM if m <= v)))


  12. test = [6, 9, 10, 11, 76, 499, 3888]
  13. good = ['VI', 'IX', 'X', 'XI', 'LXXVI', 'CDXCIX', 'MMMDCCCLXXXVIII']

  14. for I, N in enumerate(test):
  15.     rom = A2R(N)
  16.     print N, '=', rom, ':', rom == good[I]

復(fù)制代碼

論壇徽章:
1
水瓶座
日期:2014-03-04 17:56:43
35 [報(bào)告]
發(fā)表于 2015-06-15 21:30 |只看該作者
dfgsdg hsdfgh

論壇徽章:
2
巳蛇
日期:2013-12-31 14:13:002015年亞洲杯之沙特阿拉伯
日期:2015-03-26 13:30:50
36 [報(bào)告]
發(fā)表于 2015-06-17 11:20 |只看該作者
  1. #-*- coding:utf8 -*-

  2. def arab_to_roma(targ):
  3.     nums = [1000, 500, 100, 50, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
  4.     roma = {1000:'M', 500:'D', 100:'C', 50:'L', 10:'X',
  5.             9:'IX', 8:'VIII', 7:'VII', 6:'VI', 5:'V',
  6.             4:'IV',3:'III', 2:'II', 1:'I'}
  7.     answ = {}

  8.     for item in nums:
  9.         while targ >= item:
  10.             if not answ.has_key(item):
  11.                 answ[item] = 1
  12.             else:
  13.                 answ[item] += 1
  14.             targ -= item

  15.     return (''.join([roma[key]*answ[key] for key in sorted(answ, reverse=True)]))

  16. if __name__ == '__main__':
  17.     arab = [6, 76, 499, 3888]
  18.     for item in arab:
  19.         print arab_to_roma(item)
復(fù)制代碼

論壇徽章:
32
處女座
日期:2013-11-20 23:41:20雙子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00處女座
日期:2014-07-22 17:30:47獅子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥豬
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58處女座
日期:2014-12-02 09:17:52程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-06-16 22:20:002015亞冠之塔什干火車頭
日期:2015-06-20 23:28:22
37 [報(bào)告]
發(fā)表于 2015-06-17 22:49 |只看該作者
回復(fù) 34# substr函數(shù)

這腳本有問(wèn)題哈~5的時(shí)候有問(wèn)題~
   

論壇徽章:
32
處女座
日期:2013-11-20 23:41:20雙子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00處女座
日期:2014-07-22 17:30:47獅子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥豬
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58處女座
日期:2014-12-02 09:17:52程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-06-16 22:20:002015亞冠之塔什干火車頭
日期:2015-06-20 23:28:22
38 [報(bào)告]
發(fā)表于 2015-06-17 22:54 |只看該作者
回復(fù) 36# lichmama

你這腳本也有問(wèn)題哦~不只是499時(shí)有問(wèn)題,其他很多轉(zhuǎn)化都有問(wèn)題~
   

論壇徽章:
2
巳蛇
日期:2013-12-31 14:13:002015年亞洲杯之沙特阿拉伯
日期:2015-03-26 13:30:50
39 [報(bào)告]
發(fā)表于 2015-06-18 10:39 |只看該作者
回復(fù) 38# yestreenstars


    是的,沒(méi)注意到還有其他規(guī)則。

論壇徽章:
11
射手座
日期:2015-08-11 16:10:26辰龍
日期:2015-08-11 16:11:11黑曼巴
日期:2016-04-26 16:58:40
40 [報(bào)告]
發(fā)表于 2015-06-18 10:55 |只看該作者
回復(fù) 16# ly5066113


    好猥瑣的枚舉法
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP