1
我在寻找一个比较或检查2个列表是否相等的函数。方案:比较/检查2个列表是否相等
应该忽略顺序号和重复号...
我已经创建了一个检查,如果一个元素是另一个块列表的一部分功能,但我现在有一些问题与这一个。
这里就是我有
(define (ispart? x b)
(cond ((null? b) #f)
((= x (car b)) #t)
(else (ispart? x (cdr b)))))
(define (check=? c1 c2)
(define (verification-1 c1 c2)
(cond((null? c1)
#t)
((ispart? (car c1) c2) (check=? (cdr c1) c2))))
(define (verification-2 c1 c2)
(cond((null? c2)
#t)
((ispart? (car c2) c1) (check=? c1 (cdr c2)))))
(if (equal? (and verification-1 verification-2) #t)
#t
(#f)))
我遇到的条件主要是,我创建了第一个列表中的每个元素进行检查的问题,看它是否属于第二列表,然后检查为第二个列表的每个元素。如果任何元素检查失败,那么列表是不同的。
我也试过这一个,但它不会忽略重复的号码或号码顺序,因此(3 2 1)是(1 2 2 3)不同,我不希望这样的事情发生
(define (lists=? lst1 lst2)
(cond ((null? lst1) (null? lst2))
((null? lst2) #f)
((= (car lst1) (car lst2))
(lists=? (cdr lst1) (cdr lst2)))
(else #f)))
所以真的,你想要做的是检查两个_sets_是相等的。这些集合恰好用列表表示,但基本上你正在尝试进行一组比较。这可能会给你提示要搜索什么。 –
是的,我想检查一下,并忽略重复的数字和数字顺序...目前,我仍然对我得到的错误一无所知。 – spacing
没错。开始谷歌搜索“方案集比较”或“方案集相等”的东西。 :-) –