zmud462部分实现更高版本函数%ismember,%numitems功能的alias
1。 对于string类型变量,可以用 %numwords来实现 %numitems的部分功能。 (全部功能是否能实现,我还不知道)例子:#var a {w|s|e|e|e|w|w|w|n|e}
#var e %numwords(@a,|)
#say @e
结果显示 是 10
2. %ismember函数,在462中只能判断逻辑真假,无法确定某个值在string中的位置,这与高级版本中的该函数不同。 在462中实现该功能可以用自身嵌套的alias:
#var fangxiang {n|e|nw|ne|nu|nd|eu|ed|u|enter|s|w|se|sw|sd|su|wd|wu|d|out}
#var q ne; // 给q 赋值ne
#var fangxiangnum 1;
#alias chazhaofangxiang {#var fangxiangzhi %word(@fangxiang,@fangxiangnum,|);
#if (@fangxiangnum<=20) {#if (@fangxiangzhi!=@q) {#add fangxiangnum
1;chazhaofangxiang} {#say @fangxiangnum}} {#say 查找失败} } 这个alias 查找
q代表的 ne ,在 fangxiang 列表里面的位置。 检查之后是4。
------------------------------------------------------------------------------------------------------------
关于462中的 %pos 函数,试验结果不理想 :
#var fangxiang {n|e|nw|ne|nu|nd|eu|ed|u|enter|s|w|se|sw|sd|su|wd|wu|d|out}
#var e %pos(eu,@fangxiang)
#say @e , 结果显示17,因为 "|" 在这个函数里面也被认做一个字符,所以用算法
(17+1)/2=9,证明,这个函数把u, 当作是eu 来认了。 (这个问题还要请高手来指点,如何解决)
-----------------------------------------------------------------------------------------------
462中,没有%item 函数, 需要用一些方法绕过去。比如:
#var a {w|s|e|e|e|w|w|w|n|e}
#var b 1
#var d %numwords(@a,|) // 这个是a中路径的步数。
#alias zou {#var c %word(@a,@b,|);
#if (@b<=@d) {#exec @c;
#wa 1000;
#add b 1;
zou} {wolf}}
打入zou,然后按回车,就能走完从扬州客栈到东大街,然后原路返回,还发个emote表情。呵呵
先试验了这几个。以后的慢慢玩。
[ 本帖最后由 hotel 于 2011-5-3 03:15 PM 编辑 ] 精品啊,居然用462实现list操作了 唯独不懂函数 zeze
这个不错,收藏一下 462如果能实现高级的函数,确实不错
不过,462在做朱熹的任务的时候,那个卡啊~~~~唉 再补充一个高版本函数 %delnitem 在462 的实现方法:
#var a {w|s|e|e|e|w|w|w|n|e}
#var b 4 // 假设要去掉第4项
#var c %numwords(@a,|)
#math d (@b-1)*2
#math e(@c-@b)*2-1
#var aa %left(@a,@d)
#var bb %rightback(@a,@e)
#var cc @aa@bb
#say @cc
在 462中试验过了,完成了对第4项,也就是那个 “e” 的剔除。
执行结果 : w|s|e|e|w|w|w|n|e 呵呵。 厉害 专业 如果是{e|ne|nw|sw|ed|wu|}之类每个路径是2个字母的怎么实现啊
页:
[1]