Racket 程序的问题 - 无法为程序的解决方案提供更多代码,该解决方案提供了一个列表的子集与另一个列表的子集
Issues with Racket program - unable to come up with further code for the program's solution that comes up with subset of one list compared to another
我是一名刚开始学习代码的编码员,我已经开始了数周的 Racket 之旅。我正在实现一个名为 my-subset 的函数?它有两个参数 lst1 和 lst2,当 lst1 的每个元素都是 lst2 的成员时 return 为真。在这种情况下,空列表被视为所有其他列表的子集。对于这个函数,我不想使用内置的子集函数。
这是我自己写的一些代码,我一直无法完成代码,希望得到一些帮助。第一个函数是一个辅助函数,它将某个值与列表中的每个元素进行比较。第二个函数是实际的子集函数,我在 cond 之后的部分遇到了麻烦,因为我不知道如何编写没有子集的情况,我必须 return 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
的子集。
我是一名刚开始学习代码的编码员,我已经开始了数周的 Racket 之旅。我正在实现一个名为 my-subset 的函数?它有两个参数 lst1 和 lst2,当 lst1 的每个元素都是 lst2 的成员时 return 为真。在这种情况下,空列表被视为所有其他列表的子集。对于这个函数,我不想使用内置的子集函数。
这是我自己写的一些代码,我一直无法完成代码,希望得到一些帮助。第一个函数是一个辅助函数,它将某个值与列表中的每个元素进行比较。第二个函数是实际的子集函数,我在 cond 之后的部分遇到了麻烦,因为我不知道如何编写没有子集的情况,我必须 return 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
的子集。