W poniższych zadaniach istotne jest posortowanie odpowiednich list:
Napisz procedurę słupki : int list → int
, która dla danej listy początkowych wysokości słupków
obliczy minimalną liczbę uderzeń młotka potrzebnych do wyrównania wysokości słupków.
elementy : α list → int list → α list
, która dla list [x1;x2;…,xn] itrójkąt : int list → bool
, która dla danej listy [x1;x2;…;xn] dodatnich liczb Podaj złożoność czasową i pamięciową swojego rozwiązania.
(Uwaga: Jeżeli liczby całkowite mają ograniczony zakres, to można to zadanie rozwiązać w stałym czasie.)
przedział : int list → int → int
, która dla danej listy [x_1;\dots; x_n], oraz dla liczby całkowitej Przykład: przedział [2; -2; 5; -1; 11; 8; 4; 5; 8; 7] 2 = 6
.
Rozwiązania
przekładaniec
, której wynikiem jest taka permutacja [x_{p_1}; x_{p_2}; \dots; x_{p_n}] danej listy,pierwsze : int list → int list
, która zwróci taką jej spójną podlistę, że: