gpt4 book ai didi

f# - 从 F# 中的序列中删除单个非唯一值

转载 作者:行者123 更新时间:2023-12-01 05:43:55 24 4
gpt4 key购买 nike

我在 F# 中有一个表示骰子的整数序列。

在所讨论的游戏中,玩家有一个骰子池,可以选择玩一个(受特定规则约束)并保留其余的。

例如,如果玩家掷出 6、6 和 4 并决定玩一个 6 点,有没有一种简单的方法可以返回一个只去掉一个 6 的序列?

Seq.filter (fun x -> x != 6) dice

删除所有的六,而不仅仅是一个。

最佳答案

对序列的非平凡操作很难处理,因为它们不支持模式匹配。我认为最简单的解决方案如下:

let filterFirst f s =
seq {
let filtered = ref false
for a in s do
if filtered.Value = false && f a then
filtered := true
else yield a
}

只要可变实现对客户端隐藏,它仍然是函数式的;)

关于f# - 从 F# 中的序列中删除单个非唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2705972/

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