北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
12
返回列表 发新帖
楼主: dgda

mush新手求助

[复制链接]
发表于 2010-5-19 13:40:42 | 显示全部楼层
我也手痒...
写个perl 的发出来
  1. use strict;


  2. my %point = (
  3.     "万" => 5,
  4.     "亿" => 9
  5. );


  6. my %base = (
  7.     "千" => 4,
  8.     "百" => 3,
  9.     "十" => 2
  10. );

  11. my %num = (
  12.     "零" => 0,
  13.     "一" => 1,
  14.     "二" => 2,
  15.     "三" => 3,
  16.     "四" => 4,
  17.     "五" => 5,
  18.     "六" => 6,
  19.     "七" => 7,
  20.     "八" => 8,
  21.     "九" => 9
  22. );
  23. my $utf8CharBit = 3;

  24. my @digits = ();
  25. my $number = "三千七百八十四万六千一百二十五";


  26. print getLessThanOneHundredMillionNumber("一万三千零四十五");

  27. # 比一亿小
  28. sub getLessThanOneHundredMillionNumber{
  29.     my ($chineseNumber) = @_;
  30.     my ($first, $second) = split "万", $chineseNumber;
  31.     my @digits;
  32.     my $firstDigits = getLessThanTenThousandNumber($first);
  33.     push @digits, @$firstDigits;
  34.     my $secondDigits = getLessThanTenThousandNumber($second);
  35.     push @digits, @$secondDigits;

  36.     return (sprintf "%d" x 8 . "\n", @digits) + 0;
  37. }

  38. # 比一千小
  39. sub getLessThanTenThousandNumber{
  40.     my ($chineseNumber) = @_;
  41.     my @digits;
  42.     my $thuIndex = index $chineseNumber, "千";
  43.     my $hunIndex = index $chineseNumber, "百";
  44.     my $tenIndex = index $chineseNumber, "十";

  45.     push @digits, ($thuIndex > 0) ? $num{substr $chineseNumber, 0, $thuIndex} : 0;
  46.     push @digits, ($hunIndex > 0) ? $num{substr $chineseNumber, $hunIndex - $utf8CharBit, $utf8CharBit} : 0;
  47.     push @digits, ($tenIndex > 0) ? $num{substr $chineseNumber, $tenIndex - $utf8CharBit, $utf8CharBit} : 0;
  48.     push @digits, $num{substr $chineseNumber, length ($chineseNumber) - $utf8CharBit};

  49.     #printf "%d" x 4 . "\n", @digits;
  50.     return \@digits;
  51. }
复制代码
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2010-5-19 13:59:44 | 显示全部楼层
用sauron的那个就对了,写的既简单又好用
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2010-5-19 15:58:37 | 显示全部楼层
原帖由 lzkd 于 2010-5-19 12:11 PM 发表


你这个不是已经出来了吗?最后再差一点就是。
你把那个算式整成
sqian = tonumber(sqian1)*tonumber(sqian2) + tonumber(sqian3)*tonumber(sqian4) + ......

就可以了


我就是这个想法,可我不会弄

你提的sqian1一直到sqian...是怎么来的啊?
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2010-5-19 16:12:35 | 显示全部楼层
  1. 上面我写的,只能--->sqian="3*10000000+7*1000000+8*100000+4*10000+6*1000+1*100+2*10+5"
复制代码


就是把你这个,拼出来的时候,加上那个函数,不就可以了?
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2010-5-19 16:13:24 | 显示全部楼层
看见n多人show,我也有点心痒了,等我回家也show一个。嘻。。。。看起来,很好玩的样子
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2010-5-19 16:14:20 | 显示全部楼层
我觉得用462都可以写得出来……
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2010-5-19 17:51:14 | 显示全部楼层
这个是从helllua里扒出来的.看大家都发,我也手痒,发一个玩玩
这个代码,不负责解答,看的明白就明白,看不明白就不明白

  1. _nums={}
  2. _nums["一"]=1
  3. _nums["二"]=2
  4. _nums["三"]=3
  5. _nums["四"]=4
  6. _nums["五"]=5
  7. _nums["六"]=6
  8. _nums["七"]=7
  9. _nums["八"]=8
  10. _nums["九"]=9

  11. ctonum=function(str)
  12. if (#str % 2) ==1 then
  13.   return 0
  14. end
  15. result=0
  16. wan=1
  17. unit=1
  18. for i=#str -2 ,0,-2 do
  19.   char=string.sub(str,i+1,i+2)
  20.   if (char=="十") then
  21.    unit=10*wan
  22.    if (i==0) then
  23.     result=result+unit
  24.    elseif _nums[string.sub(str,i-1,i)]==nil then
  25.     result=result+unit
  26.    end
  27.   elseif (char=="百") then
  28.    unit=100*wan
  29.   elseif (char=="千") then
  30.    unit=1000*wan
  31.   elseif (char=="万") then
  32.    unit=10000*wan
  33.    wan=10000
  34.   else
  35.    if _nums[char]~=nil then
  36.     result=result+_nums[char]*unit
  37.    end
  38.   end
  39. end
  40. return result
  41. end
  42. itemnumre=rex.new("(((零|一|二|三|四|五|六|七|八|九|十|百|千|万)*)(位|支|颗|个|把|只|粒|张|枚|件|柄|根|块|文|两|碗|滴)){0,1}(.*)")

复制代码
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2010-5-19 18:05:42 | 显示全部楼层
lzkd这个狠啊,呵呵,看不是太懂,慢慢看了
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2010-5-19 18:16:50 | 显示全部楼层
原帖由 dgda 于 2010-5-19 06:05 PM 发表
lzkd这个狠啊,呵呵,看不是太懂,慢慢看了


主要是我自己也不懂,呵呵,见笑了.
不过,算法这个东西,我还没本事说清楚,偶是文科生来的
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2010-5-19 19:14:18 | 显示全部楼层
论坛里搜索到了mapper以前弄的lua的代码了

太强了,搞了半天,我做了个无用功,呵呵

mapper的代码可用,可我怎么把算出来的数字传回mush用呢?
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-11-24 07:54 PM , Processed in 0.009587 second(s), 12 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表