gpt4 book ai didi

algorithm - 在 F# 中计算排列

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:21:52 26 4
gpt4 key购买 nike

受此启发questionanswer ,如何在 F# 中创建通用排列算法? Google 对此没有给出任何有用的答案。

编辑:我在下面提供了我的最佳答案,但我怀疑 Tomas 的答案更好(当然更短!)

最佳答案

你也可以这样写:

let rec permutations list taken = 
seq { if Set.count taken = List.length list then yield [] else
for l in list do
if not (Set.contains l taken) then
for perm in permutations list (Set.add l taken) do
yield l::perm }

“list”参数包含您要排列的所有数字,“taken”是一个包含已使用数字的集合。当所有数字都被取走时,该函数返回空列表。否则,它将遍历所有仍然可用的数字,获取剩余数字的所有可能排列(递归地使用“排列”)并在返回之前将当前数字附加到每个数字(l::perm)。

要运行它,您将给它一个空集,因为开头没有使用任何数字:

permutations [1;2;3] Set.empty;;

关于algorithm - 在 F# 中计算排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/286427/

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