list - Racket 程序的问题 - 无法为程序的解决方案提供更多代码,该解决方案提供一个列表的子集与另一个相比
问题描述
我是一名刚刚开始学习代码的程序员,我的 Racket 之旅还有几周的时间。我正在实现一个名为 my-subset 的函数?它有两个参数 lst1 和 lst2,仅当 lst1 的每个元素都是 lst2 的成员时才返回 true。在这种情况下,空列表被认为是所有其他列表的子集。对于这个函数,我不想使用内置的子集函数。
这是我个人编写的一些代码,我无法完成代码,希望得到一些帮助。第一个函数是一个辅助函数,它将某个值与列表中的每个元素进行比较。第二个函数是实际的子集函数,我在 cond 之后的部分遇到问题,因为我不知道如何编写没有子集的情况,我必须返回 false。我正在将 lst 1 中的值与 lst 2 中的每个值进行比较。
(define (member x lst)
(cond [(empty? lst) #f]
[(equal? x (first lst)) #t]
[else (member x (rest lst))]))
(define (my-subset? lst1 lst2)
(cond [(empty? lst1) #t]
[(member (first lst1)(list lst2)) #t]
[else (my-subset? (rest lst1) (list lst2))]))
解决方案
您非常接近解决方案:
(define (member x lst)
(cond
[(empty? lst) #f]
[(equal? x (first lst)) #t]
[else (member x (rest lst))]))
(define (my-subset? lst1 lst2)
(cond
[(empty? lst1) #t]
[(member (first lst1) lst2) (my-subset? (rest lst1) lst2)]
[else #f]))
也就是说,如果 的第一个元素lst1
是 的成员lst2
,那么
如果 的其余元素也是 的一部分,那么lst1
它就是 的子集。lst2
lst1
lst2
推荐阅读
- javascript - 在我的打字稿文件中正确引用 (javascript) jquery 插件
- visual-studio - Jenkins Ms Build Error dot net core application
- python - Python保存到映射的共享驱动器错误
- sql - 如果结果中有多个条目,则计数为 1?
- html - Can't get rotated text aligned in Bootstrap 4 Grid
- appium - 如何验证本机应用链接并返回应用
- java - 如何将字段的名称应用于 ArrayList,然后向该 ArrayList 添加一些内容
- sql - Oracle SQL:检查条目是否存在,如果不存在则返回
- vba - 将 ComboBox 配置为只读:有办法吗?
- memory-leaks - 卡夫卡内存泄漏