Завдяки спільноті 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 . Я не маю приналежності до цього сайту
Ви можете переглянути список усіх викликів у серії, переглянувши розділ "Пов'язані" першого виклику тут .
Щасливого гольфу!