问题标签 [zipper]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
clojure - 向量压缩谓词库,如 Clojure 中的 data.zip.xml?
我使用 data.zip.xml 取得了巨大的成功,但我发现我需要同样的矢量树。
在为矢量压缩拉链创建等效的 data.zip.xml 之前,我认为最好看看是否已经存在某些东西。
scala - 迭代更新 scalaz 树
我有一个路径列表:
我想在 scalaz 树中表示它:
结果:
我TreeLoc
从http://eed3si9n.com/learning-scalaz/Tree.html读到了一些内容,但使用左/右或子索引似乎很乏味。我想像做这样的事情:
看起来我可以使用find
and setTree
ormodifyTree
但这似乎效率很低。
clojure - Clojure 拉链路径功能不完整?
编辑#2:这整个问题和探索都是基于我错过了拉链的基本概念;从特定节点的角度来看,它们代表了数据结构中的透视图。因此,拉链始终是一对当前节点以及从该节点的角度来看树的其余部分的样子。我最初试图从拉链中生成一个全新的结构,而拉链本身就是我所需要的,一直以来。我将把这一切留给后代,希望其他人得到它的帮助(或者它可以作为对任何继任者的警告!)。
原始问题:
我正在尝试使用拉链来操纵树木。具体问题是我需要在运行时在任意树中匹配任意标准的两个节点之间生成路由。
我想我可以使用该函数通过调用当前位置path
来获取到某个位置的路线。path
但是返回的路径似乎省略了到达那里所需的最后一步。
例如:
给出5
,但是
给
这不是同一个位置(它缺少最后三个步骤的效果,down right right
)。
看起来 path 函数只能将您带到树中的父位置,而忽略您与实际位置之间的任何兄弟姐妹。
我错过了path
功能的重点吗?我假设给定一棵树和一条路径,将路径应用于树会将您带到路径的原始位置,而不是部分存在。
更新:我使用以下函数定义来编译从起始位置到结束位置的节点路径:
与@Mark Fisher 的聊天深受影响,谢谢!
clojure - 计算树数据结构的深度 - clojure
我正在尝试实现一种算法来通过 Clojure Zippers 找到序列表达式的深度。
这就是我解释要转换为树数据结构的序列的方式。有没有直接的方法可以通过 Zipper 库计算(从给定的例子中计算的深度为 2)?
任何建议,将不胜感激!
clojure - Clojure平面序列成树
我有以下向量, [-1 1 2 -1 3 0 -1 2 -1 4 0 3 0 0]
代表树[[1 2 [3] [2 [4] 3]]]
其中 -1 开始一个新分支,0 结束它。如何将原始向量转换为可用的树状 clojure 结构(嵌套向量、嵌套映射)?我认为clojure.zip/zipper
可能会这样做,但我不确定如何构建这些函数 args。
data-structures - 如何在结构中移动元素,可能使用拉链?
我有这个结构:
我正在尝试编写一种算法来在向量中移动和元素。例如在最后一个元素中,它的children
向量具有:
我的函数应该搜索特定的嵌套地图 - 比如说,找到它是10
其b
属性值的地图。我会定位{"a" {"b" 10 "c" 10} "children" []}
。一旦我找到它,我需要用向量改变它的位置。让我们假设,这children
将变成:
使用 Zipper,我能够遍历并定位嵌套地图,但不确定如何在矢量内移动它。
这是我的拉链的创建方式:
algorithm - 是否可以编写通用算法来使用 Zippers 更新嵌套(无论嵌套程度如何)数据结构中的元素?
上周,我试图用 Zippers 编写一个算法来更新嵌套数据结构中的特定元素,How to move an element within a structure, possible with zippers?
我的答案解决了该确切结构的问题,嵌套更多元素会破坏算法。
这让人想到,是否有可能用 Zippers 编写一个通用算法来更新嵌套数据结构中的特定数据(无论它是多么嵌套)?或者只有当您确切地知道您的步数时,才会使用拉链?
我需要理解这一点,正确地我试图让 Zippers 做一些不是 Zippers 被创建的事情。
algorithm - 为什么 Clojure 拉链实现使用与 Huet 的拉链不同的类型和数据结构?
我正在将Huet 的原始论文与Clojure 的实现进行比较,并试图找出做出这些更改的原因。我是 Clojure 新手,所以如果我对 Clojure 代码的解释有误,请纠正我。
在 Huet 的论文中,路径的类型是 (in Ocaml) Top | Node of tree list * path * tree list;;
。在 Clojure 中,有两个附加字段,pnodes
和changed?
. 这些领域的目的是什么?我是否相信l
并r
对应于 Huet 类型中的第一个和第三个条目,那ppath
是第二个?
Huet 的 zipper 始终使用链表(注意我说的是 Loc 类型本身,而不是 zipper 操作的数据结构),而在某些地方,例如l
,Clojure 实现使用向量。为什么要进行更改,以及对 Clojure 实现的时间复杂度有何影响?
android - 用于解锁屏幕的 Android 拉链动画
我目前正在制作 zip 动画来解锁 android 手机屏幕。更改背景图像是一项昂贵的任务,并且效果不流畅。我想要一个平滑的效果。请问有什么帮助吗?谢谢
haskell - 您如何在纯粹的功能上通过二维网格进行压缩?
例如,使用列表拉链,一个人能够穿过一维空间。是否有任何类似的优雅和有效的方式来编码通过二维网格行走(没有模式)的概念?