Благодаря сообществу PPCG, Санта сумел восстановить все свои подарки, и после конвейера, подарки теперь готовы к отправке в транспортные доки!
Каждый из транспортных доков Санта-Клауса вмещает только ряд существующих размеров, потому что транспортные сани специализированы для определенного размера (любой легче, и он будет расточительным, тяжелее, и сани не смогут справиться с грузом). Таким образом, он нуждается в вас, чтобы помочь ему взять его подарки и отсортировать их в правильные транспортные доки.
Вызов
Учитывая список и дальности дока транспорта, стабильно организуйте подарки в правильном порядке.
Давайте возьмем это для примера: подарки [5, 3, 8, 6, 2, 7]
и диапазоны стыковки [[1, 5] and [6, 10]]
.
Присутствующие 5
, 3
и 2
идти в первый док - станции и подарки 8
, 6
и 7
идти во второй док. Это может быть показано как [[5, 3, 2], [8, 6, 7]]
. Этот список будет ближе к сортировке, чем вход, но stably
означает, что в каждой док-станции порядок подарков должен быть таким же, как порядок ввода (в противном случае вы можете просто отсортировать весь список).
Ваш окончательный вывод для этого случая будет [5, 3, 2, 8, 6, 7]
(как плоский список).
Спецификации форматирования
Вам будет предоставлена ввод в виде плоского списка целых чисел и список диапазонов в любом приемлемом формате (например, диапазон для приведенного выше случая может быть задан как [[1, 5], [6, 10]]
, [1, 5, 6, 10]
или [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]
). Ваш вывод должен быть простым списком целых чисел в любом приемлемом формате.
Входные данные могут содержать повторяющиеся значения; в этом случае вам необходимо вернуть все их экземпляры. Все существующие размеры будут находиться в одном диапазоне размеров, и вы можете предположить, что диапазоны никогда не будут перекрываться. В диапазонах могут быть промежутки, если охватываются все существующие размеры.
правила
- Применяются стандартные лазейки
- Это Код-гольфпоэтому выигрывает самый короткий ответ в байтах
- Ответ не будет принят
- Вы можете предположить, что не будет пустых диапазонов (
[7, 4]
будет недействительным, потому что диапазоны увеличиваются)
Тестовые случаи
[1, 2, 3, 4, 5, 6, 7] ; [[1, 3], [4, 7]] => [1, 2, 3, 4, 5, 6, 7]
[1, 2, 3, 4, 5, 6, 7] ; [[4, 7], [1, 3]] => [4, 5, 6, 7, 1, 2, 3]
[7, 3, 5, 4, 6, 1, 2] ; [[1, 3], [4, 5], [6, 7]] => [3, 1, 2, 5, 4, 7, 6]
[4, 7, 6, 3, 5, 2, 1] ; [[1, 4], [5, 7]] => [4, 3, 2, 1, 7, 6, 5]
[1, 1, 3, 3, 6, 4, 7] ; [[1, 4], [6, 7]] => [1, 1, 3, 3, 4, 6, 7]
Примечание: я черпал вдохновение для этой серии испытаний из Advent Of Code . У меня нет связи с этим сайтом
Вы можете увидеть список всех испытаний в серии, посмотрев раздел «Связанные» первой задачи здесь .
источник
Ответы:
Haskell , 26 байтов
Попробуйте онлайн! Пример использования:
[1,2,3,4,5,6,7] # [[1,2,3],[4,5,6,7]]
доходность[1,2,3,4,5,6,7]
.источник
Желе , 4 байта
Попробуйте онлайн!
Принимает ввод как настоящий список, полный диапазон.
источник
fþF
работает и в Jelly, на 3 байта . Кредит идет на Аднана .Mathematica, 39 байт
-22 байта от JungHwan Мин.
-4 байта от Мартина
Попробуйте онлайн!
источник
Range
этого, просто взяв расширенные диапазоны в качестве входных данных.Pyth , 5 байт
Попробуй это здесь!
Pyth , 10 байт
Попробуй это здесь!
Как они работают
Сначала занимает доки со всеми целыми числами в диапазонах, а затем представляет подарки в новой строке.
источник
Python 2 ,
4946 байтспасибо @HyperNeutrino за -3 байта
Попробуйте онлайн!
Ungolfed
Попробуйте онлайн!
источник
05AB1E , 3 байта
Попробуйте онлайн! (спасибо Аднану за сообщение, что он
δ
существует, -1 байт)Как это работает
источник
€Ã˜
похоже, не работает.€Ã˜
неудачи в том, что онаÃ
принимает два аргумента и€
ожидает функцию с одним аргументом, поэтому она возвращает[[]]
вместо этого (я думаю, что это ошибка), поэтому затем˜
сгладится и вернется[]
.ε
Впрочем, работает по-другому. Для каждого элемента верхнего элемента он создает новый стек, а затем возвращает верх каждого нового стека, поэтому, когда в нем недостаточно элементов для функции, вместо этого он принимает неявный ввод.δØ
вы ищете?Retina ,
3736 байтПопробуйте онлайн! Вводит в виде списка подарков в первой строке и списка диапазонов во второй строке; ссылка содержит заголовок для разделения тестовых случаев в желаемый формат. Редактировать: 1 байт сохранен благодаря @MartinEnder. Объяснение: Первый этап сопоставляет подарки и находит соответствующий док. Подарки сортируются по подстроке от начала строки до
[
, тем самым группируя подарки по доку. Затем второй этап удаляет доки.источник
Подключить , 3 байта
Попробуйте онлайн!
Как это работает
источник
APL + WIN, 29 байт
Запрашивает ввод с экрана целых чисел и диапазонов. Целые числа как плоский список, а диапазоны как вложенный вектор, например, случай 3:
Объяснение:
источник
C ++, 127 байт
Возьмите входные данные в виде двух массивов, представленных парами указателей
[start, end)
.Попробуйте онлайн!
источник
[&](int a)->int{a=a>=
вместо того,[&](int a){return a>=
чтобы не сохранять байты. /#import<algorithm>
может быть#import<regex>
, хотя бы на TIO. Я обнаружил, что после исчерпывающего поиска («ручной двоичный поиск») все заголовки перечислены на этой странице, и этот самый короткий. / Также +1 от меня.J 15 байт
Принимает входные данные в качестве левого аргумента, а диапазоны - в качестве правого аргумента. Диапазоны являются коробочными списками полных диапазонов.
например, для первого диапазона:
Попробуйте онлайн!
объяснение
источник
J ,
2624 байта2 байта благодаря Коул
Как это работает:
Левый аргумент содержит диапазоны.
-&1 0"1@[
уменьшает нижнюю границу каждого диапазона на 1I."1]
проверяет, в каком диапазоне подходит каждый подарок1=
это в правильном диапазоне]<@#~
копии и коробки подарков, которые находятся в текущем ассортименте;
- никак (распаковка)Попробуйте онлайн!
источник
(0 4,:_3 _1) f _2 _1 0 1 2
)R ,
113485541 байтПредыдущая версия неправильно сортировала объекты, когда доки были не в порядке возрастания.
Попробуйте онлайн!
Берет
D
за список векторов диапазонов, т.list(4:7,1:3)
Е. Будет[[4, 7], [1, 3]]
.Вероятно, наивный ответ, который я должен был получить давным-давно; печатает на стандартный вывод.
источник
Japt , 6 байт
Попробуй это
объяснение
Неявный ввод массива
U
(представлены) и 2d-массиваV
(полные диапазоны). Сортируйте (ñ
) подарки, передавая их через функцию (@
), которая получает индекс первого элемента (b
),V
который содержит (ø
) текущий present (X
).источник
Python 2,
9785 байт-11 байт из ов
-1 байт от мистера Xcoder
Попробуйте онлайн!
Сортирует список, используя рекурсивную лямбду в качестве ключа. Объяснение в
ближайшее время ™ниже.Объяснение:
источник
Javascript ES6,
534745 байтПопробуйте онлайн!
источник
PowerShell , 37 байт
Попробуйте онлайн!
Воспринимается
$a
как буквальный массив подарков и$b
как массив массивов, каждый из которых является полным диапазоном (например,@(1,2,3,4,5)
вместо@(1,5)
). Затем мы перебираем каждый элемент$b
с|%{...}
. Внутри нам нужно установить помощника$i
в качестве текущего элемента, а затем использоватьWhere-Object
предложение против,$a
чтобы извлечь только те элементы, которые являются-in
текущим$b
массивом.Они остаются на конвейере и вывод неявный. Так как стандартное поведение
Write-Output
вставляет новую строку между элементами массива, это то, что мы получаем. Вот слегка измененная версия, которая-join
объединена через запятую вместо новой строки, чтобы показать различия.источник
Красный , 73 байта
Попробуйте онлайн!
источник
C # (.NET Core) , 50 + 18 байт
+18 байт от
Требуется коллекция подарков и коллекция массивов для доков.
Попробуйте онлайн!
источник
Пакет Windows (CMD),
9079 байтовИспользуйте формат конца строки LF. Каждый символ конца строки может быть посчитан как 1 байт.
Нет TIO (потому что TIO использует Linux)
Возьмите список из аргументов командной строки и диапазон от
stdin
.Например, если программа запущена (предположим, файл назван
r1.cmd
)и с
stdin
вводомпрограмма выведет в
stderr
формате(соответствует выходной последовательности
3 1 2 5 4 7 6
)Объяснение:
Разгруженный код (с включенным взаимодействием, если
true
передается в качестве аргумента 1; запрашивать списокstdin
, используйте,goto
чтобы избежать переполнения стека - на самом деле я только что попытался запустить скрипт, который вызывает себя более 70000 раз, не видя никаких проблем, поэтому я предполагаю, что это должно быть довольно безопасно):источник
(%*)
. Сделав это, вы можете затем использовать%0 %*
для перезапуска сценария после обработки каждого диапазона. (Я фактически закончил с большим количеством байтов, потому что я использовал вашу интерактивную версию с приятными штрихами&&
,exit/b
и вecho
качестве моей отправной точки.)%1
но кавычки"
делают пространство не работает как разделители, поэтому я в конечном итоге использоватьset /p
.$~1
Чисто , 59 байт
Попробуйте онлайн!
Принимает два списка, возвращает список.
источник
Wolfram Language (Mathematica) , 34 байта
Попробуйте онлайн!
этоFunction
оператор.Это безымянная карри функция, которая должна вызываться сначала со списком (расширенных) диапазонов дока, а затем со списком подарков. Например, если вы назначите функцию
f
:Список подарков просто отсортирован по позиции первого уровня значения в списке диапазонов дока. Нам нужно обернуть
SortBy
функцию в список, чтобы сделать сортировку стабильной.источник
Юлия 0,6 ,
3130 байтПопробуйте онлайн!
Переопределяет
%
оператор и отображает пересечение множества∩()
по докам,d
сохраняя порядок и кратность первого импульса, списка подарковp
.vcat
с расширением ввода до нескольких аргументов с помощью...
выравнивания результирующего вложенного массива.Edit, -1Byte: список понимания вместо
map()
.источник