发牌
问题
四个人打扑克,用一副扑克牌,抽掉大小王,剩余 52 张牌,洗牌后平分给四个人,每人 13 张。现在用 A、B、C、D 表示扑克牌花色,例如 A8 表示黑桃 8,BK 表示红桃 K,请写一个程序实现发牌过程,输出 4 个序列。
思路
大致思路:首先将 52 个数字使用随机数排序,将数分成 4 组,调用子程序,将当前数字作为参数传入,在子程序中计算该数字对应的牌,返回一张由花色和数字组成的牌,此过程即为发牌过程。
-
将 52 个数字按随机顺序打乱
-
将 52 个数分成 4 组
-
将每组内容排序,循环调用子程序,将数字传入子程序,返回由花色和数字组成的牌
代码
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 | 返回一张完整的牌 |
英文版