l 问题
四个人打扑克,用一副扑克牌,抽掉大小王,剩余52张牌,洗牌后平分给四个人,每人13张。现在用A、B、C、D表示扑克牌花色,例如A8表示黑桃8,BK表示红桃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 结果