Bu gece kart oyunu gecesi! Siz dağıtıcısınız ve göreviniz kartları oyunculara dağıtmak için bir program yazmak.
Bir dizi kart ve oyuncu sayısı göz önüne alındığında, kart dizisini her oyuncu için bir ele bölmeniz gerekir.
kurallar
Programınız boş olmayan bir dizi Ave sıfır olmayan bir pozitif tam sayı alır n. Dizi daha sonra nellere bölünmelidir . Dizenin uzunluğu n, sonunda kalan kartlarla bölünemezse , mümkün olduğunca eşit dağıtılmalıdır.
- Bir öğe
n==1dizisiniAtek öğe olduğu için döndürmeniz gerekir Eğer
nuzunluğundan daha büyüktürA, her el ve boş eli dönmek gerekir. eğern = 4vearray A = [1,2,3], dönmelisiniz[[1],[2],[3]]veya[[1],[2],[3],[]]. Boş eli boş, undefined veya null ile idare etmekte özgürsünüz.Dizi, sayı yerine herhangi bir tür içerebilir.
İşlem sırasında dizinin sırasını değiştirmemelisiniz. Örneğin
if n = 2veA= [1,2,3]bunun yerine herhangi bir sonuç[[1,3],[2]]geçersiz olacaktır.
Test Durumları
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 Programı
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)
Bu kod golf , bu yüzden her dilin en kısa bayt kazanan olacak.
Esinlenen chau giang tarafından diziden parçalar oluşturun
0?
