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 A
ve sıfır olmayan bir pozitif tam sayı alır n
. Dizi daha sonra n
ellere 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==1
dizisiniA
tek öğe olduğu için döndürmeniz gerekir Eğer
n
uzunluğundan daha büyüktürA
, her el ve boş eli dönmek gerekir. eğern = 4
vearray 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 = 2
veA= [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
?