Malam ini adalah malam permainan kartu! Anda adalah dealer dan tugas Anda adalah menulis program untuk memberikan kartu kepada para pemain.
Diberikan berbagai kartu dan jumlah pemain, Anda perlu membagi array kartu menjadi satu tangan untuk setiap pemain.
Aturan
Program Anda akan menerima larik non-kosong A
, serta bilangan bulat positif tidak nol n
. Array kemudian harus dibagi menjadi n
tangan. Jika panjang tali tidak dapat dibagi oleh n
kartu sisa di akhir harus dibagikan serata mungkin.
- Jika
n==1
, Anda harus mengembalikan array denganA
karena hanya elemen Jika
n
lebih besar dari panjangnyaA
, Anda harus mengembalikan setiap tangan dan tangan kosong. jikan = 4
danarray A = [1,2,3]
, Anda harus kembali[[1],[2],[3]]
atau[[1],[2],[3],[]]
. Anda bebas menangani tangan kosong dengan kosong, tidak terdefinisi atau nol.Array dapat berisi jenis apa saja dan bukan angka.
Anda seharusnya tidak mengubah urutan array saat berhadapan. Sebagai contoh
if n = 2
danA= [1,2,3]
, hasil apa pun alih-alih[[1,3],[2]]
akan tidak valid.
Uji Kasus
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],[]]
Program Demo
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)
Ini adalah kode-golf , sehingga Anda byte terpendek dari setiap bahasa akan menjadi pemenangnya.
Terinspirasi dari Buat potongan dari array oleh chau giang
0
?