Сегодня вечер карточной игры! Вы - дилер, и ваша задача - написать программу для раздачи карт игрокам.
Учитывая массив карт и количество игроков, вам нужно разделить массив карт в руки для каждого игрока.
правила
Ваша программа получит непустой массив 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)
Это код-гольф , поэтому победителем будут самые короткие байты каждого языка.
Вдохновленный из Создать куски из массива с помощью Чау Жанг
0 ?
