哈斯克尔山脉地图库

发布于 2024-09-26 20:55:03 字数 195 浏览 0 评论 0原文

是否有 Haskell 库允许我拥有从范围到值的映射? (最好有点效率。)

let myRangeMap = RangeMap [(range 1 3, "foo"),(range 2 7, "bar"),(range 9 12, "baz")]
in  rangeValues 2
==> ["foo","bar"]

Is there a Haskell library that allows me to have a Map from ranges to values? (Preferable somewhat efficient.)

let myRangeMap = RangeMap [(range 1 3, "foo"),(range 2 7, "bar"),(range 9 12, "baz")]
in  rangeValues 2
==> ["foo","bar"]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

凉城已无爱 2024-10-03 20:55:03

我编写了一个库来以重叠的间隔进行搜索,因为现有的库不符合我的需求。我认为它可能有一个比 SegmentTree 更平易近人的界面:

https:// www.chr-breitkopf.de/comp/IntervalMap/index.html

它也可以在 Hackage 上找到:https://hackage.haskell.org/package/IntervalMap

I've written a library to search in overlapping intervals because the existing ones did not fit my needs. I think it may have a more approachable interface than for example SegmentTree:

https://www.chr-breitkopf.de/comp/IntervalMap/index.html

It's also available on Hackage: https://hackage.haskell.org/package/IntervalMap

魂ガ小子 2024-10-03 20:55:03

此任务称为对一组间隔进行刺探查询。其有效的数据结构称为(一维)线段树

SegmentTree 包 提供了此数据结构的实现,但不幸的是我不知道如何使用它。 (我觉得这个包的接口没有提供正确的抽象级别。)

This task is called a stabbing query on a set of intervals. An efficient data structure for it is called (one-dimensional) segment tree.

The SegmentTree package provides an implementation of this data structure, but unfortunately I cannot figure out how to use it. (I feel that the interface of this package does not provide the right level of abstraction.)

忆依然 2024-10-03 20:55:03

也许 rangemin 可以满足您的需求?

好的旧Data.Map(及其更高效的Data.IntMap表兄弟)有一个函数

splitLookup :: Ord k => k -> Map k a -> (Map k a, Maybe a, Map k a)

,可以将映射拆分为小于/大于给定键的键的子映射。这可用于某些类型的范围搜索。

Perhaps the rangemin library does what you want?

Good old Data.Map (and its more efficient Data.IntMap cousin) has a function

splitLookup :: Ord k => k -> Map k a -> (Map k a, Maybe a, Map k a)

which splits a map into submaps of keys less than / greater than a given key. This can be used for certain kinds of range searching.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文