Rozważ jednowymiarową sekwencję liczb w ustalonym zakresie, tj
[1, 2, 4, 6, 8, 0, 2, 7, 3] in range [0, 10⟩
Ciągle rosnący wykres * ** to linia, która łączy wszystkie punkty w tej sekwencji od lewej do prawej i zawsze idzie w górę lub utrzymuje poziom. W razie potrzeby linia owija się od góry do dołu i stamtąd idzie w górę, aby osiągnąć następny punkt.
Celem tego wyzwania jest podzielenie sekwencji na różne podsekwencje, z których wszystkie nie maleją, tak aby po wykreśleniu razem z ograniczoną osią pionową utworzyły one stale rosnący wykres. Odbywa się to poprzez dodanie punktu na końcu jednej podsekwencji i na początku następnej podsekwencji, tak aby kąt linii przecinającej górną granicę był wyrównany z linią przecinającą dolną granicę i dwoma punktami przecięcia mają tę samą współrzędną poziomą. Powyższy przykład dałby następujące dane wyjściowe:
[1, 2, 4, 6, 8, 10]
[-2, 0, 2, 7, 13]
[-3, 3]
Odpowiedni wykres będzie wyglądał następująco: A z rozszerzoną osią dla lepszego widoku: Wymaganym wynikiem jest lista podsekwencji, które tworzą części stale rosnącego wykresu. Robienie fabuły nie jest wymagane, ale zapewni ci punkty bonusowe;). Wynik musi w jakiś sposób wyraźnie oddzielić podsekwencje.
Notatki
- Zakres będzie zawsze miał zero jako lewą (włącznie) granicę, a prawa granica będzie liczbą całkowitą N.
- Sekwencja nigdy nie będzie zawierać wartości, które nie mieszczą się w zakresie.
- Pierwsza podsekwencja nie ma na początku dodatkowego punktu.
- Ostatni podsekwencja nie ma na końcu dodatkowego punktu.
- Nie jest wymagane podawanie początkowych wskaźników, które byłyby wymagane do wykreślenia podsekwencji.
Przypadki testowe
Input: [0, 2, 4, 6, 1, 3, 5, 0], 7
Output: [0, 2, 4, 6, 8], [-1, 1, 3, 5, 7], [-2, 0]
Input: [1, 1, 2, 3, 5, 8, 3, 1], 10
Output: [1, 1, 2, 3, 5, 8, 13],[-2, 3, 11],[-7, 1]
Input: [5, 4, 3, 2, 1], 10
Output: [5, 14],[-5, 4, 13],[-6, 3, 12],[-7, 2, 11],[-8, 1]
Input: [0, 1, 4, 9, 16, 15, 0], 17
Output: [0, 1, 4, 9, 16, 32], [-1, 15, 17], [-2, 0]
Punktacja
To jest code-golf, wygrywa najkrótszy kod w bajtach.
* Nie rzeczywisty żargon ** Tak naprawdę, jak wskazał @ngm, powinien się nazywać „Zawsze nie malejącym wykresem”, ale brzmi to mniej imponująco.