![]() |
![]() |
#1 |
黄金会员
![]() ![]() ![]() ![]() 注册: 03年08月26日
帖子: 350
声望力: 25
声望:
33
![]() 积分:10
精华:4
现金:2两梁山币
资产:6064两梁山币
致谢数: 0
获感谢文章数:0
获会员感谢数:0 |
机器对诗谈(两个trigger来对诗)
多数玩家天生白痴,悟性奇低。好在literate不用4倍切磋,可以对诗来升级。 跟探春对诗的机器比较好做,但是跟她对诗比较麻烦一点,要经常花钱买枕头去睡觉。跟茶博士对诗的机器就比较难做点,但不需要睡觉。咱们就来谈谈茶博士对诗机器的制作,其实,非常简单,一共就需要唐诗三百首一本和两个trigger。 唐诗三百首放在zmud目录下,在zmud中输入#file 1 poem.txt,准备工作就完成了。 第一个trigger是: ^{> 茶|茶}博士提笔在墙上写道:(%x)$ poem=%1; length=%len(@poem); #var word1 %copy(@poem,1,2); #var word2 %copy(@poem,3,2); #var word3 %copy(@poem,5,2); #var word4 %copy(@poem,7,2); #var word5 %copy(@poem,9,2); #var word6 %copy(@poem,11,2); #var word7 %copy(@poem,13,2); #var word8 %copy(@poem,15,2); #var word9 %copy(@poem,17,2); #var word10 %copy(@poem,19,2); #var word11 %copy(@poem,21,2); #var word12 %copy(@poem,23,2); #var word13 %copy(@poem,25,2); #var word14 %copy(@poem,27,2); #var list %grep(1,"@word1"); #T+ chaboshi; #forall @list {#sh 茶博士 %i 茶博士} 解释一下,poem为出的题目,length为题目里的长度(一个字的长度为2)。word1~word14为题目里的每个字。list为唐诗三百首里所有包含第一个字(word1)的诗句的集合。有时候这个集合比较大,也可以检查word1是否为比较平常的字,如:一,天,海等等,如果为这些字,就用word2。 具体命令:#if (%ismember(@word1,"一|天|海|...")) {#var list %grep(1,"@word2")} {#var list %grep(1,"@word1")}; 后面#T+ chaboshi 打开class chaboshi。#forall @list {#sh 茶博士 %i 茶博士}:在屏幕显示list里所有的诗句。 下面是第二个trigger:请设定这个trigger的class为chaboshi 茶博士%s(%x)%s(%x)%s茶博士 poem1=%1;poem2=%2;#var temp @poem1@poem2; #if (@length=10 and %ismember(0,"%pos(@word1,"@poem1")|%pos(@word2,"@poem1")|%pos(@word3,"@poem1")|%pos(@word4,"@poem1")|%pos(@word5,"@poem1")")=0) {#T- chaboshi;answer @poem1}; #if (@length=10 and %ismember(0,"%pos(@word1,"@poem2")|%pos(@word2,"@poem2")|%pos(@word3,"@poem2")|%pos(@word4,"@poem2")|%pos(@word5,"@poem2")")=0) {#T- chaboshi;answer @poem2}; #if (@length=14 and %ismember(0,"%pos(@word1,"@poem1")|%pos(@word2,"@poem1")|%pos(@word3,"@poem1")|%pos(@word4,"@poem1")|%pos(@word5,"@poem1")|%pos(@word6,"@poem1")|%pos(@word7,"@poem1")")=0) {#T- chaboshi;answer @poem1}; #if (@length=14 and %ismember(0,"%pos(@word1,"@poem2")|%pos(@word2,"@poem2")|%pos(@word3,"@poem2")|%pos(@word4,"@poem2")|%pos(@word5,"@poem2")|%pos(@word6,"@poem2")|%pos(@word7,"@poem2")")=0) {#T- chaboshi;answer @poem2}; #if (@length=20 and %ismember(0,"%pos(@word1,"@temp")|%pos(@word2,"@temp")|%pos(@word3,"@temp")|%pos(@word4,"@temp")|%pos(@word5,"@temp")|%pos(@word6,"@temp")|%pos(@word7,"@temp")|%pos(@word8,"@temp")|%pos(@word9,"@temp")|%pos(@word10,"@temp")")=0) {#T- chaboshi;answer @temp}; #if (@length=28 and %ismember(0,"%pos(@word1,"@temp")|%pos(@word2,"@temp")|%pos(@word3,"@temp")|%pos(@word4,"@temp")|%pos(@word5,"@temp")|%pos(@word6,"@temp")|%pos(@word7,"@temp")|%pos(@word8,"@temp")|%pos(@word9,"@temp")|%pos(@word10,"@temp")|%pos(@word11,"@temp")|%pos(@word12,"@temp")|%pos(@word13,"@temp")|%pos(@word14,"@temp")")=0) {#T- chaboshi;answer @temp} 解释一下,茶博士出的诗句一般为7个字、10个字或者14个字。少数情况为5个字,更少数情况为其它字数(这个本机器无法对出,其实一般不会碰到这种情况)。 我们先检查字数对不对,字数对了,再看是不是题目里的每个字都在诗句里,如果都在,那就是这句诗了,answer吧。 |
![]()
悄悄的我来了,没有人在意。 在热闹的西游世界,我独守自己一方天空。 在超慢的网速下,顽强的默默的生存。 |
|
![]() |
![]() |
![]() |
#2 |
中级会员
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 注册: 04年01月24日
来自: 万寿山福地
帖子: 978
声望力: 31
声望:
10
![]() 现金:122两梁山币
资产:3653两梁山币
致谢数: 0
获感谢文章数:0
获会员感谢数:0 |
『阅』
|
![]() |
|
![]() |
![]() |
![]() |
#3 |
黄金会员
![]() ![]() ![]() ![]() 注册: 03年08月26日
帖子: 350
声望力: 25
声望:
33
![]() 积分:10
精华:4
现金:2两梁山币
资产:6064两梁山币
致谢数: 0
获感谢文章数:0
获会员感谢数:0 |
灌水也不能这样啊!
|
![]() |
![]() |
![]() |
#4 |
中级会员
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 注册: 04年08月27日
来自: 上海
帖子: 329
声望力: 24
声望:
10
![]() 现金:908两梁山币
资产:65362两梁山币
致谢数: 0
获感谢文章数:0
获会员感谢数:0 |
只看字数,不论对的工整不工整?
|
![]()
一头饿狼,修炼了有八百多年道行,她通身上下透着一股仙气。
|
|
![]() |
![]() |
![]() |
#5 |
中级会员
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 注册: 04年01月24日
来自: 万寿山福地
帖子: 978
声望力: 31
声望:
10
![]() 现金:122两梁山币
资产:3653两梁山币
致谢数: 0
获感谢文章数:0
获会员感谢数:0 |
好吧,那我也贴一个对诗的
一个trigger哦: #file 1 poem.txt (poem.txt就是唐诗) {茶博士提笔在墙上写道:(*)} quest=%1 buffer=%grep( 1, %left( @quest, 2)) buffer=%replace( @buffer, " ", "") #FORALL @buffer {buf=%i qst=@quest patt="" #while (%len( @buf)>0) {patt=@patt|%left( @buf, 2) buf=%delete( @buf, 1, 2)} match=1 #while (%len( @qst)>0) {#if (%ismember( %left( @qst, 2), @patt)==0) {match=0 qst=""} qst=%delete( @qst, 1, 2)} #if (@match==1) {buffer=%i answer @buffer buf=%left( @buffer, %len( @quest)) answer @buf buffer=%delete( @buffer, 1, %len( @buf)) answer @buffer}} |
![]() |
![]() |
![]() |
#6 |
黄金会员
![]() ![]() ![]() ![]() 注册: 03年08月26日
帖子: 350
声望力: 25
声望:
33
![]() 积分:10
精华:4
现金:2两梁山币
资产:6064两梁山币
致谢数: 0
获感谢文章数:0
获会员感谢数:0 |
给解释下解题思路如何?
|
![]() |
![]() |
![]() |
#7 |
黄金会员
![]() ![]() ![]() ![]() 注册: 03年08月26日
帖子: 350
声望力: 25
声望:
33
![]() 积分:10
精华:4
现金:2两梁山币
资产:6064两梁山币
致谢数: 0
获感谢文章数:0
获会员感谢数:0 |
我觉得rikku的对诗不错,但后面answer的时候还要修改修改。
后面一下子answer了三种情况,当然也包括正确的那一句。 但是,answer的错误句子太多的话,会晕倒的。 不信你到茶博士跟前 #30 answer 哈哈哈 试试,我保证你晕倒! 之所以要answer三句,是因为这个机器前面没有考虑出的题目是出现在前半句,还是后半句,还是全句都要,因此只能三种情况都answer。 #forall里面包含的内容的太多了,虽然代码较少,但是实际计算量相当于以上代码×包含第一个字的诗句总数,平均代码量为:以上代码×20。当然对于这么小的一个机器,根本算不了什么。 这个机器不错,给了我一些想法。 |
![]() |
![]() |
![]() |
#8 |
中级会员
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 注册: 04年02月17日
来自: 马帮
帖子: 164
声望力: 23
声望:
10
![]() 现金:58两梁山币
资产:182两梁山币
致谢数: 0
获感谢文章数:0
获会员感谢数:0 |
晕倒情况基本上可以不考虑,需要对诗的时候等待时长的气血、精神足够回答7,8回的了。
|
![]() |
![]() |
![]() |
#9 |
中级会员
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 注册: 04年01月24日
来自: 万寿山福地
帖子: 978
声望力: 31
声望:
10
![]() 现金:122两梁山币
资产:3653两梁山币
致谢数: 0
获感谢文章数:0
获会员感谢数:0 |
邓老说过要实践
这个机器很少出现answer超过3个 而且如果能对诗对到晕倒都没升级。。。。。 还是先练功吧。。。。。。。 |
![]() |
![]() |
![]() |
#10 |
黄金会员
![]() ![]() ![]() ![]() 注册: 03年08月26日
帖子: 350
声望力: 25
声望:
33
![]() 积分:10
精华:4
现金:2两梁山币
资产:6064两梁山币
致谢数: 0
获感谢文章数:0
获会员感谢数:0 |
那就没问题了。这个对诗除了升级literate,也没有别的作用了。给的奖励太少了。 不过,对诗错误超过一定的次数就要晕倒,不一定需要精神<0。 |
![]() |
![]() |