发牌

 

问题

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

思路

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

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

  2. 将 52 个数分成 4 组

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

代码

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 返回一张完整的牌

结果

imagepng