gpt4 book ai didi

f# - 如何在 F# 中将整数列表转换为这些整数的矩阵

转载 作者:行者123 更新时间:2023-12-04 14:09:04 26 4
gpt4 key购买 nike

我弄湿了我的 F#eet 并且很难理解简单的概念。请帮助我解决这个问题,而不是家庭作业!

假设我有一个列表 [1;2;3;4]
如何将其转换为列表元素的所有可能组合的列表:
[(1,2);(1,3);(1,4);(2,3);(2,4);(3,4)] ?

我想出了什么:

 let tuples=
let lst=[1;2;3;4]
List.map (fun i->(i,i)) lst

显然这给出了错误的结果,但如何进行呢?我是否只需要使用在 C# 中编写此代码的嵌套 for 循环方法?

最佳答案

您可以使用递归来实现这一点,我相信这被称为“缺点模式”

open NUnit.Framework
open Swensen.Unquote

let convert input =
let rec loop remain acc =
match remain with
| x :: xs ->
let combos = xs |> List.map (fun i -> (x,i))
loop xs (acc@combos)
| x -> acc

loop input []

[<Test>]
let TheTest () =
let actual = convert [1;2;3;4]
let expected = [(1,2);(1,3);(1,4);(2,3);(2,4);(3,4)]
test <@ expected = actual @>

关于f# - 如何在 F# 中将整数列表转换为这些整数的矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47400663/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com