Heute Abend ist Kartenspielabend! Sie sind der Dealer und Ihre Aufgabe ist es, ein Programm zu schreiben, mit dem die Karten an die Spieler ausgegeben werden.
Bei einem vorgegebenen Kartenfeld und der Anzahl der Spieler müssen Sie das Kartenfeld für jeden Spieler in eine Hand aufteilen.
Regeln
Ihr Programm erhält ein nicht leeres Array A
sowie eine positive Ganzzahl ungleich Null n
. Das Array sollte dann in n
Hände aufgeteilt werden. Wenn die Länge der Zeichenfolge durch n
keine verbleibenden Karten am Ende teilbar ist, sollte so gleichmäßig wie möglich verteilt werden.
- In diesem Fall
n==1
müssen Sie ein Array mit ArrayA
als einziges Element zurückgeben Wenn
n
größer als die Länge von istA
, müssen Sie jede Hand und eine leere Hand zurückgeben. wennn = 4
undarray A = [1,2,3]
, solltest du[[1],[2],[3]]
oder zurückgeben[[1],[2],[3],[]]
. Es steht Ihnen frei, die leere Hand mit leer, undefiniert oder null zu behandeln.Das Array kann einen beliebigen Typ anstelle einer Zahl enthalten.
Sie sollten die Reihenfolge des Arrays während des Handels nicht ändern. Zum Beispiel
if n = 2
undA= [1,2,3]
jedes Ergebnis[[1,3],[2]]
ist ungültig.
Testfälle
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],[]]
Demo-Programm
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)
Dies ist Code-Golf , so dass Sie die kürzesten Bytes jeder Sprache gewinnen.
Inspiriert von Create chunks from array von chau giang
0
?