오늘 밤은 카드 게임의 밤입니다! 당신은 딜러이며 당신의 임무는 플레이어에게 카드를 처리하는 프로그램을 작성하는 것입니다.
다양한 카드와 플레이어 수를 감안할 때 각 플레이어의 카드를 한 손으로 나눠야합니다.
규칙
프로그램은 A0이 아닌 양의 정수뿐만 아니라 비어 있지 않은 배열을받습니다 n. 그런 다음 배열을 n손 으로 나눕니다 . 줄의 길이가 n남은 카드 로 나눌 수없는 경우 가능한 한 균등하게 분배해야합니다.
- 인 경우 요소로만
n==1배열의 배열을 반환해야합니다.A 경우
n의 길이보다 큰A, 당신은 모든 손과 빈 손을 반환해야합니다. 경우n = 4와array A = [1,2,3], 당신은 반환해야[[1],[2],[3]]하거나[[1],[2],[3],[]]. 비어 있거나 정의되지 않았거나 null 인 빈손을 자유롭게 처리 할 수 있습니다.배열은 숫자가 아닌 모든 유형을 포함 할 수 있습니다.
처리하는 동안 배열 순서를 변경해서는 안됩니다. 예를 들어
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)
이것은 code-golf 이므로 각 언어의 최단 바이트가 승자가됩니다.
chau giang에 의해 어레이 에서 청크 생성 에서 영감을 얻음
0됩니까?
