Dzięki społeczności PPCG Mikołajowi udało się uporządkować prezenty w odpowiedniej kolejności, aby przenieść się do doku transportowego. Niestety znaki doku transportowego są zepsute, więc nie wie, gdzie położyć wszystkie prezenty! Wszystkie prezenty są pogrupowane razem, a nie według ich zakresów, co według Świętego Mikołaja byłoby lepszym pomysłem.
Teraz, biorąc pod uwagę prezenty w posortowanej kolejności, określ wszystkie możliwe konfiguracje minimalnego zakresu, które spowodowałyby, że teraźniejszość byłaby w prawidłowej kolejności. Oznacza to, że znajdź wszystkie konfiguracje o minimalnym zakresie, tak aby sortowanie prezentów zgodnie z algorytmem w Wyzwaniu nr 5 nie zmieniło kolejności.
Wyzwanie
Konfiguracja minimalnego zakresu to lista zakresów, dzięki czemu każdy z nich jest tak mały, jak to możliwe. Oznacza to, że jeśli wyznaczony jest zakres obejmujący określony podzbiór prezentów, wówczas minimalny i maksymalny zakres musi być taki sam jak w tym podzbiorze. Innymi słowy, zmniejszenie dowolnego zakresu w osłonie spowodowałoby, że przestałby być osłoną.
Wyzwaniem jest znalezienie wszystkich możliwych konfiguracji minimalnego zakresu, które miałyby zastosowanie do obecnych rozmiarów. Weźmy przykład:[3, 1, 2, 5, 4, 7, 6]
Istnieje trywialny przypadek, który polega na objęciu całej obecnej konfiguracji. W takim przypadku [[1, 7]]
byłoby rozwiązaniem.
Dla przykładów z unikalnymi elementami, innym trywialnym przypadkiem byłby [[3], [1], [2], [5], [4], [7], [6]]
(ponieważ zakresów nie trzeba porządkować).
W tym przykładzie również to widzimy [[1, 3], [4, 7]]
i [[1, 3], [4, 5], [6, 7]]
działałoby, a także [[1, 3], [5], [4], [6, 7]]
i [[1, 3], [4, 5], [7], [6]]
.
Ostateczna odpowiedź na [3, 1, 2, 5, 4, 7, 6]
byłoby [[[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]]]
.
Specyfikacja formatowania
Dane wejściowe zostaną podane w postaci płaskiej listy dodatnich liczb całkowitych w rozsądnym obsługiwanym zakresie liczbowym Twojego języka w dowolnym rozsądnym formacie. Dane wejściowe mogą zawierać zduplikowane elementy. Dane wyjściowe należy podać jako trójwymiarową listę liczb całkowitych dodatnich w dowolnym rozsądnym formacie.
Każdy zakres na wyjściu (który znajduje się na drugiej warstwie) może być reprezentowany jako [min, max]
, [num]
jeśli jest to zakres pojedynczej wartości, lub jako cały zakres, ale format wyjściowy musi być spójny. Podaj, czy chcesz użyć nieco innego rozsądnego formatu wyjściowego.
Zduplikowane wartości muszą być objęte jednym zakresem danych wyjściowych; to znaczy, żadne dwa zakresy na wyjściu nie mogą się pokrywać.
Twoje rozwiązanie może zwrócić zakresy w dowolnej kolejności i nie musi to być deterministyczne.
Zasady
- Obowiązują standardowe luki
- To jest golf-golf więc wygrywa najkrótsza odpowiedź w bajtach
- Żadna odpowiedź nie zostanie zaakceptowana
Przypadek testowy dla listy ze zduplikowanymi elementami:
2 3 2 4 -> [[[2, 3], [4]], [[2, 4]]]
Wdrożenie referencyjne
Nagłówek jest linkiem.
Uwaga: Inspirację do tej serii wyzwań czerpałem z Advent Of Code . Nie mam powiązań z tą stroną
Możesz zobaczyć listę wszystkich wyzwań w serii, patrząc na sekcję „Połączone” pierwszego wyzwania tutaj .
Miłej gry w golfa!
źródło