Mam problem z zadaniem:
Napisz funkcję łączącą dwie podane listy.
Elementy w liście wyjściowej mają występować naprzemiennie.
Zwróć szczególną uwagę na optymalność złożoności obliczeniowej i pamięciowej.
Przykład:
wywołanie:
polacz [5;4;3;2] [1;2;3;4;5;6];;
wynik :
[5;1;4;2;3;3;2;4;5;6]
Udało mi się stworzyć jedynie coś takiego ale to po prostu łączy 2 listy i nie wiem jak to zmodyfikować żeby dodało raz głowę z jednej listy raz z drugiej.
Kod: Zaznacz cały
let rec flatten listOfLists =
if listOfLists = [] then []
else List.hd listOfLists @ flatten (List.tl listOfLists);;