;checks to see if two sets (represented as lists) are equal

(define (setsEqual? S1 S2)
(cond
 ( (null? (cdr S1)) (in_member S1 S2))
 ( (in_member (car S1) S2) (setsEqual? (cdr S1) S2))
 (else false)))

;checks for an element in the list
(define (in_member x list)
(cond
 ( (eq? x (car list)) true)
 ( (null? list) false)
 (else (in_member x (cdr list)))))

似乎找不到找到这种工作的基本案例。 任何帮助表示赞赏!

===============>>#1 票数:3

什么是套装? (这是一个列表-好的,什么是列表?)这是一个提示:“ list”有两种变体: '() (aka null ,aka empty )和那些用cons制成的变量。 您的函数应遵循它们消耗的数据的结构。 你没有。

我建议阅读“ 如何设计程序” (在线提供文本)。 它将教您解决此类问题的“设计秘诀”。 粗略的概述是:半正式地描述您的数据(回答列表是什么? ),制定示例和测试; 使用您对数据的描述来创建用于处理此类数据的模板 最后,填写模板。 关键是模板由数据定义确定。 它是可重用的,并且为特定功能填写模板通常可以在几秒钟内完成-如果您已经正确创建了模板和示例。

HtDP第9章专门讨论处理列表。 这将对in_member有所帮助。 第17章讨论处理多个复杂参数(例如,一次处理两个列表)。 另一个提示:如果我正在编写此函数,则将利用以下有关集合的事实:如果两个集合是另一个集合的子集,则两个集合相等。

  ask by translate from so

未解决问题?本站智能推荐:

3回复

递归比较两组相等性?

对于一般的编程人员来说,我是一个很陌生的人,正在尝试构造一个将两个集合作为输入的函数,例如可以包含其他集合(a(bc)de(fg(h)),(abc(def)),并返回它们是否相等。如果正在帮助我,我正在研究计划,但实际上我只是想像一下如何做到这一点。在此先感谢您的帮助
2回复

方案中的“任意精度数的乘法”

以下是我已经研究了几天的代码。 我遇到的问题是由于某种原因在我打电话时: 返回是: 它应该输出的答案是 当我打电话时: 输出为: 哪个是对的。 我已多次调试代码,但似乎无法找出问题所在(顺便说一句,我知道我编写的“删除-清空”函数很可能是不必要的)
1回复

如何从方案中的两个集合中获得并集?

在我之前的交集( 如何从方案中的两个列表中获取对的交集? )的续篇中,我编写了一个小代码,用于沿同一行进行并集。 输出应类似于:(union'(((1 2)(2 1))'((1 3)(3 4)))-'((1 5)(2 1)(3 4))。 但是,我的程序的输出不完全是我想要的。 我认为我的递
2回复

如何从方案中的两个列表中取对交叉?

我正在使用The little schemer中的脚本来获得两个集合的交集。 但是我在“成员”处收到未绑定的标识符错误,任何人都可以告诉它怎么了: 我上面缺少此功能: 另外,我想将两个列表相交:'(((1 2)(2 7))'((1 3)(4 5))='((1 5)),关于如何处
2回复

方案:检测列表中的重复元素

R6RS或Chez Scheme v7.9.4是否具有库函数来检查列表是否包含重复元素? 或者,是否具有集合的任何内置功能(允许重复元素)? 到目前为止,我只能在这里找到一个例子。 问题在于它实际上并不是Chez Scheme库的一部分。 虽然我可以编写自己的版本,但我更倾向于使
2回复

找不到此代码有什么问题(方案)[关闭]

我正在编写一个以线性时间运行的过程,该过程返回不属于这两个集合的任何数字。 我当前的代码是 不断出现的问题是,当运行此功能时,例如通过任意测试用例(set-diff '(1 5 7 9) '(1 7 8 9 10)) ; (5) (set-diff '(1 5 7 9) '(1 7
2回复

由部分集合组成的方案集合

嗨,我正在尝试定义一个函数,该函数应从该集合的各个部分组成一个集合。 应该定义为:P(A)= P(A- {x})U {{x} UB}对于属于P(A- {X})的所有B,其中X属于A。 一个测试将是: ('(abc)部分=>((abc)(ab)(ac)(a)(bc)(b)(
1回复

方案:为什么要“设定!” 修改“ let”的局部变量?

我已经搜索了一段时间,但找不到正确的问题,因此将其发布。 我希望尚未发布。 我明白了什么! 放手 ,但我不明白为什么要设置! 可以修改let的局部变量并永久保留该值。 例如: 如果我们多次评估(计数) ,我们将看到结果是 ... 等等。 但是,据我了解, cont
1回复

方案-如何返回无穷套的交集?

我正在尝试编写一个将对无限数量的集合起作用的函数,而不是仅需要两个集合的普通交集函数。 但是,我编写了一个普通的交集函数(仅需要2套),如下所示: 我有一个损坏的交集函数,试图将无穷多个集合用作称为“交集*”的参数。 当前看起来像这样: 其中参数“ r”是其余参数。 但
2回复

检查列表中的所有元素在方案中是否相同

定义一个递归过程“全零?” 它接受一个位列表,并且仅当该列表仅包含零时才返回#t。 我们用单词“ oil”中的第一个和第三个小写字母表示零和一个位。 到目前为止,我有 但是它返回的变量全零? 没有约束。 我在做错什么,甚至在正确的轨道上吗?