Напишите функцию, которая реплицирует элементы в списке на основе второго списка, определяя, сколько раз элементы должны дублироваться.
Напишите функцию в Ocaml функциональным способом программирования с использованием списков.
Если функции библиотеки - могут использоваться только с O (1) вычислительной сложностью.
Например:
duplicate [5;6;7] [0;2;5;3];;
возвращает:
[6;6;7;7;7;7;7]
Код, который я изобрел до сих пор:
let duplicate (list1, list2)=
let rec read (list2, list1) =
if List.hd list2 = 0 then read (List.tl list2, List.tl list1) else print (List.hd list2, List.hd list1)
let rec print (acc, num) =
num :: (print (acc-1, num));;
- Прежде всего, он не компилируется, у меня "синтаксическая ошибка" ...
- Я не уверен в этих "вложенных" функциях.
- Я считаю, что сложность могла бы быть лучше.