List F#-从整数输入生成元组列表
我应该从整数输入返回一个元组列表。 例如: 输出'4应返回元组列表:List F#-从整数输入生成元组列表,list,f#,tuples,collect,List,F#,Tuples,Collect,我应该从整数输入返回一个元组列表。 例如: 输出'4应返回元组列表: [(1, 1); (2, 1); (2, 2); (3, 1); (3, 2); (3, 3); (4, 1); (4, 2); (4, 3); (4, 4)] 目前我正在 [(1, 1); (1, 2); (1, 3); (1, 4); (2, 1); (2, 2); (2, 3); (2, 4); (3, 1);(3, 2); (3, 3); (3, 4); (4, 1); (4, 2); (4, 3); (4,
[(1, 1);
(2, 1); (2, 2);
(3, 1); (3, 2); (3, 3);
(4, 1); (4, 2); (4, 3); (4, 4)]
目前我正在
[(1, 1); (1, 2); (1, 3); (1, 4);
(2, 1); (2, 2); (2, 3); (2, 4);
(3, 1);(3, 2); (3, 3); (3, 4);
(4, 1); (4, 2); (4, 3); (4, 4)]
到目前为止,我所拥有的:
let output' x =
let ls= [1..x]
ls |> List.collect (fun x ->[for i in ls -> x,i])
output' 4
我不知道如何获得所需的输出。任何帮助都将不胜感激 您可以添加一个过滤器:
...
|> List.filter (fun (a, b) -> a >= b)`
或
在F#中,它们主要处理序列,因此这里有一个序列驱动的惰性解决方案:
let output' max =
let getTuples x =
seq { 1 .. x }
|> Seq.map (fun y -> (x, y))
seq { 1 .. max }
|> Seq.map getTuples
如果需要列表,请将seq{1..x}
替换为[1..x]
。
它仍然比循环更实用
let output' max =
let getTuples x =
seq { 1 .. x }
|> Seq.map (fun y -> (x, y))
seq { 1 .. max }
|> Seq.map getTuples