[心得] zMUD 數字由中文轉換成阿拉伯數字

看板mud_sanc (Sanctuary - 聖殿)作者 (hmml)時間14年前 (2011/06/20 09:55), 編輯推噓5(5016)
留言21則, 3人參與, 最新討論串1/2 (看更多)
如題,用血肉長城的段數來做: Pattern: 為第(%1)段 Commands: chnumbers="零 一 二 三 四 五 六 七 八 九 十 百 千 萬 億" numbers="+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 *10 *100 *1000 M E" #var bloodmap %1 #loop 1,15 {#var bloodmap %replace(@bloodmap,%word(@chnumbers,%i),%word(@numbers,%i))} #var bloodmap %copy(@bloodmap,2,%len(@bloodmap)) #var total %eval(@bloodmap) #say @total 說明:轉換上限到999。想轉到萬位甚至億位以上呢?改成如下段: Commands: chnumbers="零 一 二 三 四 五 六 七 八 九 十 百 千 萬 億" numbers="+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 *10 *100 *1000 M E" #var bloodmap %1 #loop 1,15 {#var bloodmap %replace(@bloodmap,%word(@chnumbers,%i),%word(@numbers,%i))} #if (%pos(E,@bloodmap)>0) {#var bloodmapE %copy(@bloodmap,1,%pos(E,@bloodmap)-1) #var bloodmapE %copy(@bloodmapE,2,%len(@bloodmapE)) #var bloodmap %copy(@bloodmap,%pos(E,@bloodmap)+1,%len(@bloodmap))} {#var bloodmapE 0} #if (%pos(M,@bloodmap)>0) {#var bloodmapM %copy(@bloodmap,1,%pos(M,@bloodmap)-1) #var bloodmapM %copy(@bloodmapM,2,%len(@bloodmapM)) #var bloodmap %copy(@bloodmap,%pos(M,@bloodmap)+1,%len(@bloodmap))} {#var bloodmapM 0} #var bloodmap %copy(@bloodmap,2,%len(@bloodmap)) #var total %eval(@bloodmap+(@bloodmapM)*10000+(@bloodmapE)*100000000) #say @total 說明:理論上可以直上999999999999,不過zMUD數字計算也是有上限的,數字    跟聖殿銀行存款上限差不多:         二十一億四千七百四十七萬九千九百九十九    再上去就是負數,真要算上去,要用接的。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.232.7.47

06/20 10:00, , 1F
像十三可以轉哦.%eval(*10+3)=13....怎麼看都怪amem
06/20 10:00, 1F

06/20 10:01, , 2F
#var bloodmap %copy(@bloodmap,2,%len(@bloodmap))
06/20 10:01, 2F

06/20 10:02, , 3F
把第一個字元砍掉呀....
06/20 10:02, 3F

06/20 10:03, , 4F
soga~~~
06/20 10:03, 4F

06/20 10:04, , 5F
第二條依我的能力看了頭會花...amem
06/20 10:04, 5F

06/20 10:05, , 6F
總覺得第一條轉換上限為9999...amem
06/20 10:05, 6F

06/20 10:06, , 7F
其實就是 21E1234M1234 <像這樣的格式。
06/20 10:06, 7F

06/20 10:07, , 8F
以E和M為基準切開來算而已....
06/20 10:07, 8F

06/20 10:08, , 9F
對呢....好像是9999....
06/20 10:08, 9F

06/20 10:09, , 10F
二千零一十三..%eval(+2*1000+0+1*10+3)....果然要有
06/20 10:09, 10F

06/20 10:09, , 11F
一十才行...amem
06/20 10:09, 11F

06/20 10:14, , 12F
二千零一十三才是標準寫法呀,二千零十三通常是不會
06/20 10:14, 12F

06/20 10:15, , 13F
寫吧!要嘛二千一十三不然就二千零一十三。
06/20 10:15, 13F

06/20 10:18, , 14F
嚴謹一點的話,十應該寫成一十,十一應該書為一十一
06/20 10:18, 14F

06/20 10:19, , 15F
不過應要求,適當位置補上:
06/20 10:19, 15F

06/20 10:20, , 16F
#var bloodmap %replace(@bloodmap,0*,"")
06/20 10:20, 16F
※ 編輯: hmml 來自: 118.232.7.47 (06/20 10:25)

06/20 10:25, , 17F
你應該顯示不出+*的東東吧.有沒有補這句都沒差.amem
06/20 10:25, 17F
嗯....式子想錯了....修好了... ※ 編輯: hmml 來自: 118.232.7.47 (06/20 10:27)

06/20 10:30, , 18F
還幫忙抓bug,真是感謝....
06/20 10:30, 18F

06/20 10:31, , 19F
我又沒抓到...avert
06/20 10:31, 19F

06/20 10:35, , 20F
看聖殿可能怎麼顯示呀!照你想的=有抓到。
06/20 10:35, 20F

06/21 14:44, , 21F
實用
06/21 14:44, 21F
文章代碼(AID): #1D_gYQnB (mud_sanc)
文章代碼(AID): #1D_gYQnB (mud_sanc)