今晚是纸牌游戏之夜!您是发牌人,您的任务是编写一个程序以将牌分发给玩家。
给定纸牌阵列和玩家数量,您需要将每个玩家的纸牌阵列分成一手。
规则
您的程序将收到一个非空数组A
,以及一个非零正整数n
。然后应将阵列拆分为n
双手。如果字符串的长度不能被n
剩余的卡片所整除,则应尽可能均匀地分配。
- 如果为
n==1
,则您需要返回的数组,A
因为它是唯一元素 如果
n
大于的长度A
,则需要退回每手和空手。如果n = 4
和array A = [1,2,3]
,您应该返回[[1],[2],[3]]
或[[1],[2],[3],[]]
。您可以自由处理空,未定义或空值的空手。数组可以包含任何类型,而不是数字。
您不应在处理时更改数组的顺序。例如
if n = 2
和A= [1,2,3]
,任何结果而不是[[1,3],[2]]
无效的。
测试用例
n A Output
1 [1,2,3,4,5,6] [[1,2,3,4,5,6]]
2 [1,2,3,4,5,6] [[1,3,5],[2,4,6]]
3 [1,2,3,4,5,6] [[1,4],[2,5],[3,6]]
4 [1,2,3,4,5,6] [[1,5],[2,6],[3],[4]]
7 [1,2,3,4,5,6] [[1],[2],[3],[4],[5],[6]] // or [[1],[2],[3],[4],[5],[6],[]]
演示程序
def deal(cards, n):
i = 0
players = [[] for _ in range(n)]
for card in cards:
players[i % n].append(card)
i += 1
return players
hands = deal([1,2,3,4,5,6], 2)
print(hands)
这是代码高尔夫,因此每种语言的最短字节将成为赢家。
0
?