คืนนี้เป็นคืนการ์ดเกม! คุณเป็นตัวแทนจำหน่ายและงานของคุณคือการเขียนโปรแกรมเพื่อแจกไพ่ให้ผู้เล่น
เมื่อมีอาร์เรย์ของการ์ดและจำนวนของผู้เล่นคุณจะต้องแบ่งไพ่ออกเป็นมือสำหรับผู้เล่นแต่ละคน
กฎระเบียบ
โปรแกรมของคุณจะได้รับอาเรย์ไม่ว่างเปล่าเช่นเดียวกับที่ไม่ใช่ศูนย์จำนวนเต็มบวกA
n
อาเรย์จะถูกแบ่งออกเป็นn
สองส่วน หากความยาวของสตริงไม่สามารถหารด้วยn
การ์ดที่เหลือใด ๆ ในตอนท้ายควรแจกจ่ายให้เท่า ๆ กัน
- หาก
n==1
คุณจะต้องส่งกลับอาร์เรย์ของอาร์เรย์ด้วยA
เนื่องจากเป็นองค์ประกอบเท่านั้น หาก
n
มากกว่าความยาวA
คุณจะต้องกลับมือทุกครั้งและมือเปล่า ถ้าn = 4
และarray A = [1,2,3]
คุณควรจะกลับหรือ[[1],[2],[3]]
[[1],[2],[3],[]]
คุณมีอิสระในการจัดการมือเปล่าด้วยเปล่า, ไม่ได้กำหนดหรือเป็นโมฆะอาร์เรย์สามารถมีชนิดใดก็ได้แทนที่จะเป็นตัวเลข
คุณไม่ควรเปลี่ยนลำดับของอาเรย์ขณะทำการซื้อขาย ตัวอย่างเช่น
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)
นี่คือโค้ดกอล์ฟดังนั้นคุณจึงไบต์สั้นที่สุดของแต่ละภาษาจะเป็นผู้ชนะ
แรงบันดาลใจจากสร้างชิ้นจากอาร์เรย์โดยchau giang
0
?