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
沒錯。開始谷歌搜索「方案集比較」或「方案集相等」的東西。 :-) –