Сегодня вечер карточной игры! Вы - дилер, и ваша задача - написать программу для раздачи карт игрокам.
Учитывая массив карт и количество игроков, вам нужно разделить массив карт в руки для каждого игрока.
правила
Ваша программа получит непустой массив 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
?Ответы:
05AB1E ,
31 байтСохранено 2 байта благодаря Аднану
Попробуйте онлайн! или как тестовый набор
объяснение
Делает именно то, что требует задача
источник
ι
n=7
, но это приемлемый формат вывода. Я полностью пропустил это встроенное: /R ,
4625 байтПопробуйте онлайн!
split
sA
в группы, определенные1:n
, перерабатывая,1:n
пока не совпадет длина сA
.источник
Perl 6 ,
3324 байтаПопробуйте онлайн!
Блок кода с анонимным карри, который принимает число и возвращает любую лямбду, которая берет список и возвращает список списков. Это принимает второй вариант, когда задано число, превышающее длину списков, например,
f(4)([1,2,3])
возвращает[[1],[2],[3]]
Объяснение:
источник
Wolfram Language (Mathematica) , 28 байт
Попробуйте онлайн!
источник
Japt, 2 байта
Принимает массив в качестве первого ввода.
Попытайся
источник
Python 2 , 37 байт
Код:
Попробуйте онлайн!
источник
Желе ,
62 байтаПопробуйте онлайн!
Спасибо @JonathanAllan за сохранение 4 байта
источник
sZ
работает?J ,
13,11,10, 9 байтовПопробуйте онлайн!
как (предыдущее объяснение, в основном то же самое)
источник
Древесный уголь , 9 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Принимает входные данные в порядке
[n, A]
и выводит каждое значение в отдельной строке, а каждая стрелка с двойным интервалом от предыдущей. Объяснение:источник
Haskell , 39 байт
Примечание:
Data.Lists
это из списков сторонних библиотек , которых нет в Stackage и, следовательно, они не будут отображаться в Google.источник
Data.Lists
кажется, не существует. Я бы предположил, что вы имели в видуData.List
, но это не содержитchunksOf
.chunksOf
только кажется появляется с подписьюInt -> Text -> [Text]
. 1lists
пакете.split
пакете и реэкспортируетсяlists
пакетом. Существуют версииchunksOf
для списков, текста, последовательностей и, возможно, других вещей.Котлин ,
535149 байтовСтарое, неправильное решение работало только для делителей длины массива. Я уверен, что это может быть в гольфе.
Попробуйте онлайн!
источник
n
не является делителем длины спискаJavaScript (Node.js) , 51 байт
Попробуйте онлайн!
JavaScript (Node.js) , 53 байта
Попробуйте онлайн!
источник
APL + WIN 26 или 31 байт
Если отдельные стрелки могут быть представлены в виде столбцов двумерной матрицы, то 26 байтов, если массив массивов, добавляют 5 байтов.
Попробуйте онлайн! Wetesy of Dyalog Classic
или
Попробуйте онлайн! Предоставлено Dyalog Classic
Объяснение:
приглашение ← ⎕ для набора карточек
((l ← ⌈ (⍴a) ÷ n) × n ← ⎕) ↑ запросить целое число, дополнить нулями до заданных четных рук
(l, n) ⍴ создать 2D матрицу с каждым столбцом, представляющим каждую руку
⊂ [1] при необходимости преобразовать во вложенный вектор - массив массивов APL
источник
TSQL, 44 байта
Попробуйте это
источник
MathGolf , 9 байт
Попробуйте онлайн!
объяснение
источник
Java (JDK) , 90 байт
Попробуйте онлайн!
Спасибо Оливье Грегуар за лямбду и лучшее приращение во время итерации.
источник
Рубин, 81 байт
Попробуйте онлайн
источник
each_with_index
это довольно дорого по сравнению с инкрементным счетчиком, вmap{[]}
основном делает то же самое, что вашmap(&:dup)
трюк, анонимный Proc и т. д., что может уменьшить ваш код до 59 байт. Попробуйте онлайн! ТакжеPHP ,
858382 байтаПопробуйте онлайн!
Это будет не самая короткая запись, но я подумал, что было бы интересно попробовать сделать это, используя встроенные функции PHP-массивов. Результат: долго.
Выход
источник
print_flat
вас можно просто сделатьjson_encode
песочницу - на самом деле не измените, просто подумал, что упомяну это, ура!Wolfram Language (Mathematica) , 25 байтов
Попробуйте онлайн!
источник
;; ;;
- это просто фрагмент, примерно эквивалентный питону: :
; это получает кусочки каждого;;
не было;
лол. смотрел на это "wth isi ; ; ; ; #
"C # (интерактивный компилятор Visual C #) , 43 байта
Попробуйте онлайн!
источник
[1,2,3], 4
должен вывести[[1],[2],[3]]
. Вы раздаете 3 карты 4 игрокам. Я обновлю основной вопрос.C (gcc), 5 байтов
Флаг компилятора
-Df=
(требуется начальный пробел) выполняет спецификацию.f(n_cards,n_hands,card_ptr)
оценивает указатель на список рук.объяснение
В C распространенной практикой является реализация списков списков в виде одного чередуемого массива, когда число списков остается постоянным, но все списки могут быть расширены. Например, в этом случае раздачи карт чаще добавляется в каждую руку больше карт, чем добавляется больше рук, поэтому было бы разумно реализовать список рук как чередующийся список. По совпадению, «колода» является таким списком, и поэтому мы возвращаем параметр без изменений.
Этот вызов, вероятно, должен был быть изолирован.
источник
Perl 5
-la
,6656 байтПопробуйте онлайн!
источник