【发布时间】:2013-12-29 18:53:28
【问题描述】:
我创建了一个数据结构,用于表示标准牌组(52 张牌,没有小丑)中的扑克牌(不确定是否正确)。每张牌都有黑桃、红心、方块或梅花花色之一,以及 A、2、3、4、5、6、7、8、9、10、J、Q、K 等等级之一:
datatype suit = spades | hearts | diamonds | clubs
datatype rank = ace | king | queen | jack | ten | nine | eight | seven | six | five | four | three | two
type playing_card = suit * rank
下一步是编写一个函数greaterCard,它对我刚刚在上面声明的新数据类型进行操作。该函数应以两张扑克牌作为参数。如果第一张卡的值高于第二张卡,则该函数应返回true,否则返回false。王牌被认为是最高的等级,其次是国王、王后、杰克、10、9、...、2。如果两张牌的等级相同,花色的顺序如下:黑桃 > 红心 > 梅花 > 方块。
首先我做了两个子函数,这样每个等级和花色都以整数的形式得到一个值,这样我以后就可以比较这些整数来判断一张牌是否大于另一张牌:
fun value_of_rank rank =
case rank of
ace => 14
| king => 13
| queen => 12
| jack => 11
| ten => 10
| nine => 9
...
| two => 2
还有:
fun value_of_suit suit =
case suit of
spades => 4
| hearts => 3
| diamonds => 2
| clubs => 1
我该如何从这里开始,还有更好的方法吗?
【问题讨论】: