问题标签 [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.
python - 差异检查器,输入文件名而不是说明文件
所以我有这段代码,如果我指定一个要比较的特定文件,它基本上可以正常工作:但是一旦我创建一个变量以允许用户输入文件名,然后比较我得到以下错误。
这是我目前的代码。
我得到的错误是:
我基本上希望允许用户再次说明要比较的文件,因为它们总是有不同的名称并且是“通配符”
我究竟做错了什么?我的逻辑完全不正常吗?还是我呆滞的眼睛漏掉了一些小东西。
编辑
我正在运行的确切代码是:
正如您所注意到的,如果我将文件名设置为standard.txt
并且new.txt
代码可以完美执行,但是当我尝试添加自己的变量时,它会崩溃。
list - 在差异列表上执行成员检查,但是如何?
我试图回答另一个问题(虽然是错误的),这导致了一个关于“差异列表”(或“列表差异”的问题,这似乎是一个更合适的名称,除非“Escherian Construction”不是首选)
我们有一个完整的基础元素列表obj(X,Y)
(包括基础X
和Y
基础)。obj(X,_)
在从前到后遍历列表时,我们只想保留X
尚未遇到的第一个。那些“第一个元素”必须按照出现的顺序出现在结果中。
让我们通过测试用例来说明问题:
现在,这很容易使用过滤、list prepend 和 来实现reverse/2
,但是使用差异列表和list append呢?
但是,我无法使seen/2
谓词起作用。它检查是否obj(A,_)
已经在差异列表中。但是这个谓词的正确终止是什么?
更新
使用 Paulo 的代码片段:
因此,在这种情况下,术语等价或不等价是解决方案!
我们现在通过了所有的测试。
prolog - 在 Prolog 中使用差异列表附加元素的问题
我在这个答案中找到了这个 Prolog 代码,它使用差异列表实现了一个队列:
做这样的事情它按预期工作:
我得到
如果我观察Q
这个片段的价值,也很有趣:
我得到:
我想应该是这样的,因为差异导致空列表,所以它们有点等价。
问题是,在命令之后
我不能重用Q
创建一个Q__
,例如:
因为绑定queue_last(queue(X, Q, [L|Q0]), L, queue(s(X), Q, Q0)).
失败。
我怎么解决这个问题 ?有一些解决方法吗?(总是使用差异列表)
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 算法使用差异列表的惯用方式是什么?
r - 如何比较字符串列表和输出不匹配的字符串数?
我有一个清单:
我想将每个字符串与列表中的每个其他字符串进行比较,我使用以下命令:
但是,我想根据位置输出字符差异(而不是字符匹配)的数量:
例如"tggc"
与字符串比较时"gcgt"
应该输出为3
.