今夜はカードゲームの夜です!あなたはディーラーであり、あなたの仕事はカードをプレーヤーに配るプログラムを書くことです。
カードの配列とプレーヤーの数を考えると、各プレーヤーのカードの配列を手に分割する必要があります。
ルール
プログラムは、空ではない配列Aとゼロ以外の正の整数を受け取りnます。配列は次に分割する必要がありますn手。文字列の長さがn残りのカードで割り切れない場合は、最後にカードをできるだけ均等に分配する必要があります。
- の場合
n==1、配列の配列を返す必要がありますA唯一の要素で 場合
nの長さよりも大きい場合Aは、すべての手と空の手を返却する必要があります。場合n = 4とarray A = [1,2,3]、あなたは返す必要があります[[1],[2],[3]]か[[1],[2],[3],[]]。空、未定義、またはnullの空のハンドを自由に処理できます。配列には、数値ではなく任意の型を含めることができます。
処理中に配列の順序を変更しないでください。たとえば、
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)
これはcode-golfなので、各言語の最短バイトが勝者になります。
chau giangによる配列からのチャンクの作成から着想
0か?
