Сегодня вечер карточной игры! Вы - дилер, и ваша задача - написать программу для раздачи карт игрокам.
Учитывая массив карт и количество игроков, вам нужно разделить массив карт в руки для каждого игрока.
правила
Ваша программа получит непустой массив 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
?