发牌

阅读(1412) 标签: 发牌, 随机数, 循环, sort, rand, group, func, mid,

l  问题

四个人打扑克,用一副扑克牌,抽掉大小王,剩余52张牌,洗牌后平分给四个人,每人13张。现在用ABCD表示扑克牌花色,例如A8表示黑桃8BK表示红桃K,请写一个程序实现发牌过程,输出4个序列。

l  思路

大致思路:首先将52个数字使用随机数排序,将数分成4组,调用子程序,将当前数字作为参数传入,在子程序中计算该数字对应的牌,返回一张由花色和数字组成的牌,此过程即为发牌过程。

1.  52个数字按随机顺序打乱

2.  52个数分成4

3.  将每组内容排序,循环调用子程序,将数字传入子程序,返回由花色和数字组成的牌

l  代码

 

A

B

 

1

=52.sort(rand())

 

洗牌

2

=A1.group( (#-1)\13)

 

将牌分成4

3

=A2.(~.sort().(func(A5,~)))

 

调用子程序返回结果

4

 

 

 

5

func

=mid("KA234567890JQ",1+A5%13,1)

获得牌的大小

6

 

=mid("ABCD", (A5-1)\13+1,1)

获得牌的类型

7

 

return B6+B5

返回一张完整的牌

 

l  结果