gpt4 book ai didi

algorithm - 计算列表列表中元素的数量

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

我必须在标准 ML 中调整现有代码,但我现在遇到了一个问题。

我有一个函数返回一个元素列表(我们称它们为节点(或世界))

val worlds = listNodes()

对于每个 world,我都有一个函数 fun listSuccessors w r,它返回每个世界的后继者数量。

我的问题是:如何获取全局的继任者数量?

在伪代码中,我想要这样的东西:

worlds <--  listNodes ()
solution <-- 0

foreach w in worlds do
solution <-- solution + (length (listSuccessors w))
end foreach

return solution

但不幸的是我不知道该怎么做:/

这里是现有的功能:

fun listSuccessors w r =
let
val succs =
case Dynarraydict.get (nodes, Node.getId w)
of ROOT (_, _, succs) => succs
| _ => Exn.unexpArg "Nodestore.listSuccessors.succs"
in
List.mapPartial (fn (n, r', _) => if r = r' then SOME (getNode n) else NONE) succs
end

fun listNodes () = Dynarraydict.foldr (fn (_, ROOT item, ys) => (#1 item)::ys | (_, _, ys) => ys) nil nodes  

预先感谢您的帮助:/不幸的是,我是标准 ML 的初学者,因此理解如何操作列表列表非常复杂。 :/

最佳答案

一些提示:使用 List.fold 和 List.length 对列表的大小求和。在 1 行中你应该能够实现你的伪代码。它应该是这样的:

List.fold (fun acc x -> acc+List.length x) 0 your_list_of_list.

关于algorithm - 计算列表列表中元素的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33563845/

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