Благодаря сообществу PPCG Санта сумел отсортировать свои подарки в правильном порядке для перемещения в транспортный док. К сожалению, дорожные указатели сломаны, поэтому он не знает, куда положить все подарки! Все подарки сгруппированы вместе, а не по их диапазонам, что, как признает Санта, было бы лучшей идеей.
Теперь, учитывая подарки в отсортированном порядке, определите все возможные конфигурации минимального диапазона, которые привели бы к тому, что настоящее будет в правильном порядке. То есть найдите все конфигурации с минимальным диапазоном, чтобы сортировка подарков в соответствии с алгоритмом из Задачи № 5 не изменила бы порядок.
Вызов
Минимальная конфигурация диапазона - это список диапазонов, каждый из которых настолько мал, насколько это возможно. То есть, если диапазон предназначен для охвата определенного подмножества подарков, то минимум и максимум диапазона должны быть такими же, как у подмножества. Другими словами, сокращение любого диапазона в обложке сделало бы его уже не обложкой.
Задача состоит в том, чтобы найти все возможные конфигурации минимального диапазона, которые бы соответствовали существующим размерам. Давайте возьмем пример:[3, 1, 2, 5, 4, 7, 6]
Существует тривиальный случай, который заключается в том, чтобы взять диапазон всей существующей конфигурации. В этом случае [[1, 7]]
было бы решение.
Для примеров с уникальными элементами еще один тривиальный случай [[3], [1], [2], [5], [4], [7], [6]]
(потому что диапазоны не нужно упорядочивать).
Для этого примера мы также видим, что [[1, 3], [4, 7]]
и [[1, 3], [4, 5], [6, 7]]
будет работать, а также [[1, 3], [5], [4], [6, 7]]
и [[1, 3], [4, 5], [7], [6]]
.
Окончательный ответ [3, 1, 2, 5, 4, 7, 6]
будет [[[3], [1], [2], [5], [4], [7], [6]], [[3], [1], [2], [5], [4], [6, 7]], [[3], [1], [2], [4, 5], [7], [6]], [[3], [1], [2], [4, 5], [6, 7]], [[3], [1], [2], [4, 7]], [[3], [1, 2], [5], [4], [7], [6]], [[3], [1, 2], [5], [4], [6, 7]], [[3], [1, 2], [4, 5], [7], [6]], [[3], [1, 2], [4, 5], [6, 7]], [[3], [1, 2], [4, 7]], [[1, 3], [5], [4], [7], [6]], [[1, 3], [5], [4], [6, 7]], [[1, 3], [4, 5], [7], [6]], [[1, 3], [4, 5], [6, 7]], [[1, 3], [4, 7]], [[1, 5], [7], [6]], [[1, 5], [6, 7]], [[1, 7]]]
.
Спецификации форматирования
Входные данные будут представлены в виде простого списка натуральных чисел в пределах разумного поддерживаемого диапазона номеров вашего языка в любом приемлемом формате. Входные данные могут содержать дубликаты элементов. Выходные данные должны быть представлены в виде трехмерного списка натуральных чисел в любом приемлемом формате.
Каждый диапазон в вашем выводе (который находится на втором слое) может быть представлен как [min, max]
, [num]
если это диапазон с одним значением, или как весь диапазон, но ваш формат вывода должен быть согласованным. Пожалуйста, укажите, если вы хотите использовать немного другой разумный формат вывода.
Дублирующиеся значения должны быть покрыты одним диапазоном в выходных данных; то есть никакие два диапазона на выходе не могут иметь никакого перекрытия.
Ваше решение может возвращать диапазоны в любом порядке, и это не должно быть детерминированным.
правила
- Применяются стандартные лазейки
- Это Код-гольф поэтому самый короткий ответ в байтах выигрывает
- Ответ не будет принят
Тест-кейс для списка с дублирующимися элементами:
2 3 2 4 -> [[[2, 3], [4]], [[2, 4]]]
Реализация эталона
В заголовке есть ссылка.
Примечание: я черпал вдохновение для этой серии испытаний из Advent Of Code . У меня нет связи с этим сайтом
Вы можете увидеть список всех испытаний в серии, посмотрев раздел «Связанные» первой задачи здесь .
Удачного игры в гольф!
источник