Сначала преобразуйте каждый элемент входного списка в список с таким количеством элементов. Чтобы преобразовать каждый элемент списка, используйте List.map
. Чтобы создать список с заданным количеством элементов, используйте List.replicate
:
let f lst =
lst
|> List.map (fun x -> List.replicate (x/5) x)
Давайте проверим это:
> f [5; 10]
[ [5]; [10; 10] ]
А затем все, что осталось сделать, это объединить все эти списки в большой список, используя List.concat
:
let f lst =
lst
|> List.map (fun x -> List.replicate (x/5) x)
|> List.concat
Или вы можете объединить map
и concat
вместе в collect
:
let f lst =
lst
|> List.collect (fun x -> List.replicate (x/5) x)