我想自己发明一种新的扑克游戏。在
我需要比较扑克牌的价值。在
在这个游戏中,黑桃(Relational passable),黑桃(Heart)和钻石(Diamond,Relationship passable,ex:Spade>;Club,Heart>;Diaomd),有一个特殊规则,钻石胜过黑桃(但仍然比心和棍棒弱)。在
我想用S,H,C,d来代替a,b,C,d
到目前为止,有两个玩家需要比较他们的牌,如果他们的牌有相同的头,那么数值较大的一个(代表A到K)获胜。在
但对我来说,我只想一个笨拙的方法来实现这个比较。那是为了排除可能性。在
比如:
如果A的卡是s,如果B的卡是s,H,C,D怎么办
如果A的卡是H,如果B的卡是s,H,C,D怎么办
如果A的卡是C,如果B的卡是s,H,C,D怎么办
如果A的卡是D,如果B的卡是s,H,C,D怎么办
所以我需要做16次比较。虽然我发现我可以用所有相同的颜色做同样的比较,比如S对S,D对D,但是我还是需要做13次比较。在
有没有更好的方法来做这个比较,或者这已经是最好的方法了?在
为什么不用分数(权重)来标记这些呢?在
其思想是为每种类型的卡片分配分数并计算它们以进行比较。在
例如
假设卡片从[3,4,5,…,J,Q,K,A,2]从小到大。在
然后你可以给它赋值,比如[101001000…]。在
还有黑桃,红桃,梅花,钻石,也给它赋值,比如黑桃是4,红桃是3,梅花是2,钻石是1。在
所以当你有两张牌时:
黑桃3和钻石4,黑桃3的得分为1+4=5,钻石4的得分为10+1=11,因此钻石4>;黑桃3。在
或者
黑桃3和梅花3,黑桃3得到5,梅花4得到1+2=3,因此黑桃3>;梅花3。在
这是一个使用lookup table的方法,它具有两个维。它可以在最小条件下用于解决两个不同套件之间的排序问题,因为它考虑范围内的两个套件。在
也就是说,考虑一个矩阵,其中列表示一张卡片,而行表示另一张卡片
其中的值为w=赢,l=输,0=平局。在
然后可以查看特定行和列的值来确定哪张牌获胜。例如
^{pr2}$通过将S、H、C、D转换为索引0、1、2、3,可以用列表/数组简单地实现这一点。它只需要一次查找(如果每个维度都有一个,则需要两个查找)来确定两个套件之间的结果。在
由于结果是3个不同值中的一个,因此只需要两个比较(最大值):
此外,通过简单地替换w->;(+1)和l->;(-1),得到了适合于[sort]排序函数的结果。在
实现上述目标应该是一个实际的,而且希望不是乏味的练习。在
我不确定你是否需要做16个比较。在
让我们看看我是否明白了: 假设只有两个玩家,如你所说,a和b的数值相等。。。 让我们看看……你可以按以下顺序写控制语句:
是这样吗? 我忘了其他人吗?在
相关问题 更多 >
编程相关推荐