问题标签 [difference-lists]

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.

0 投票
1 回答
27 浏览

python - 差异检查器,输入文件名而不是说明文件

所以我有这段代码,如果我指定一个要比较的特定文件,它基本上可以正常工作:但是一旦我创建一个变量以允许用户输入文件名,然后比较我得到以下错误。

这是我目前的代码。

我得到的错误是:

我基本上希望允许用户再次说明要比较的文件,因为它们总是有不同的名称并且是“通配符”

我究竟做错了什么?我的逻辑完全不正常吗?还是我呆滞的眼睛漏掉了一些小东西。

编辑

我正在运行的确切代码是:

正如您所注意到的,如果我将文件名设置为standard.txt并且new.txt代码可以完美执行,但是当我尝试添加自己的变量时,它会崩溃。

0 投票
3 回答
144 浏览

list - 在差异列表上执行成员检查,但是如何?

我试图回答另一个问题(虽然是错误的),这导致了一个关于“差异列表”(或“列表差异”的问题,这似乎是一个更合适的名称,除非“Escherian Construction”不是首选)

我们有一个完整的基础元素列表obj(X,Y)(包括基础XY基础)。obj(X,_)在从前到后遍历列表时,我们只想保留X尚未遇到的第一个。那些“第一个元素”必须按照出现的顺序出现在结果中。

让我们通过测试用例来说明问题:

现在,这很容易使用过滤、list prepend 和 来实现reverse/2,但是使用差异列表list append呢?

但是,我无法使seen/2谓词起作用。它检查是否obj(A,_)已经在差异列表中。但是这个谓词的正确终止是什么?

更新

使用 Paulo 的代码片段:

因此,在这种情况下,术语等价或不等价是解决方案!

我们现在通过了所有的测试。

0 投票
2 回答
92 浏览

prolog - 在 Prolog 中使用差异列表附加元素的问题

我在这个答案中找到了这个 Prolog 代码,它使用差异列表实现了一个队列:

做这样的事情它按预期工作:

我得到

如果我观察Q这个片段的价值,也很有趣:

我得到:

我想应该是这样的,因为差异导致空列表,所以它们有点等价。

问题是,在命令之后

我不能重用Q创建一个Q__,例如:

因为绑定queue_last(queue(X, Q, [L|Q0]), L, queue(s(X), Q, Q0)).失败。

我怎么解决这个问题 ?有一些解决方法吗?(总是使用差异列表)

0 投票
2 回答
110 浏览

recursion - 使用差异列表快速序列化 BST

背景

我在业余时间研究 ML 编程的 Ullmans Elements 。最终目标是自学ML 中的 Andrew Appels 现代编译器实现

在 Elements of ML 中,Ullman 描述了差异列表:

LISP 程序员有一个技巧称为差异列表,其中通过保留作为函数的额外参数的列表来更有效地操作列表,该列表以某种方式表示您已经完成的工作。这个想法出现在许多不同的应用中;

Ullman 使用reverse差异列表技术作为示例。这是一个在 O(n^2) 中运行的慢速函数。

使用差异列表的速度更快


我的问题

我有这种二叉搜索树 (BST) 数据类型。

一个以预购方式收集元素列表的简单解决方案是

但 Ullman 指出 @ 运算符很慢,并在练习 6.3.5 中建议我preOrder使用差异列表来实现。

经过一番挠头后,我想出了这个功能:

它预先输出元素。它会在后序中评估树!而且代码比天真的代码更丑陋preOrder


现有技术

我尝试在 ML 编程中搜索对差异列表的引用,并找到了John Hughes 的原始文章,该文章描述了如何使用差异列表进行反向操作。

我还在 Haskell 中找到了Matthew Brecknells 差异列表博客文章以及示例。他区分了使用累加器(如 Ullmans 反向示例)和为差异列表创建新类型。他还展示了一种树木压平机。但是我很难理解 Haskell 代码,并且希望在标准 ML 中进行类似的公开。美国广播公司


问题

  • 如何实现一个函数来实际评估树并预先收集元素?遍历后是否必须反转列表?还是有什么其他技巧?

  • 我如何推广这种技术以适用于中序和后序遍历?

  • 为 BST 算法使用差异列表的惯用方式是什么?

0 投票
3 回答
91 浏览

r - 如何比较字符串列表和输出不匹配的字符串数?

我有一个清单:

我想将每个字符串与列表中的每个其他字符串进行比较,我使用以下命令:

但是,我想根据位置输出字符差异(而不是字符匹配)的数量:

例如"tggc"与字符串比较时"gcgt"应该输出为3.