序号 | 标题 | 作者 | 发表时间 | 费用 | 订购数 | 操作 |
---|
曾经有一个颇为流行的小游戏,名称已无法考证,我们姑且把它叫做“尔虞我诈”。游戏规则是这样的:有N人参加比赛,每两人进行一场游戏(因此共进行N*(N-1)/2场游戏),每场游戏分十轮,在每轮中,两人同时说出“TRADE”和“CHEAT”其中之一,如果两人都“TRADE”,各得一分,如果两人都“CHEAT”,各扣一分,如果一个“TRADE”,一个“CHEAT”,则CHEAT的那个人得2分,TRADE的扣2分。每人得的N-1场分数的总和为该人的最后得分,看谁的得分最高。当然,在比赛之前每人的得分为0。如何才能取胜呢?人们设计了很多战术,可以用以下的“战术语言”来描述:
<program> ::= <statement>.
<statement> ::= <command> | <ifstat>
<ifstat> ::= IF <condition> THEN <statement> ELSE <statement>
<condition> ::= <cond> | <cond> <op> <condition>
<op> ::= AND | OR
<cond> ::= <memory> {= | #} {<command> | NULL}
<memory> ::= {MY | YOUR} LAST {1 | 2}
<command> ::= TRADE | CHEAT
#的意思是“不等于”,NULL的意思是空,不存在。
空格可以在任何地方出现。
例如:
CHEAT.
和
IFYOURLAST2=NULLTHENTRADEELSEIFYOURLAST1=TRADETHENTRADEELSECHEAT.
是两个合法的战术语言程序。
编程模拟给定程序间的游戏情况。