0

コンピューター サイエンスのクラスで 2 つの問題について助けが必要です。問題は以下です。

  1. すべてを含む関数を作成しますか? これは、数値の 2 つのリストを消費し、最初のリストに 2 番目のリストのすべての要素が含まれている場合は true を返し、そうでない場合は false を返します。簡単にするために、どちらのリストにも同じ要素が複数回含まれていないと仮定します。

  2. 2 つの数値リストを取り、両方のリストに含まれるすべての要素のリストを返す関数 common-elements を作成します。

番号1については、これまでのところ次のコードがあります。

(define (contains-all? lon lon2)     
 (cond        
 [(and (empty? lon) (empty? lon2)) true]       
 [(or (empty? lon) (empty? lon2)) false       
 [(equal? (first lon) (first lon2)) (contains-all? (rest lon) (rest lon2))]    
 [else false]))

私のチェックは次のとおりです。

(check-expect (contains-all? empty empty) true)
(check-expect (contains-all? empty (list 1 2 3)) false)    
(check-expect (contains-all? (list 1 2 3) empty) false)    
(check-expect (contains-all? (list 1 2 3) (list 3 2 1)) true)    
(check-expect (contains-all? (list 1 2 4 6 8) (list 6 8 4)) true)    
(check-expect (contains-all? (list 1 2 8 6) (list 1 2 6 4)) false)

私はいくつかのチェックが失敗することを知っており、それが私が助けを必要としているものです.

問題2については、これまでのところ

(define (common-elements lon lon2)      
(cond        
[(and (empty? lon) (empty? lon2)) empty]        
[(or (empty? lon) (empty? lon2)) empty]        
[(equal? (first lon) (first lon2))         
(cons (first lon) (common-elements (rest lon) (rest lon2)))]        
[(not (equal? (first lon) (first lon2))) (common-elements (first lon) (first lon2))]        
;[else (common-elements (first lon) (rest lon2))]))    

チェックの期待値は次のとおりです。

(check-expect (common-elements empty empty) empty)    
(check-expect (common-elements empty (list 1 2)) empty)    
(check-expect (common-elements (list 1 2) empty) empty)    
(check-expect (common-elements (list 1 2 3) (list 1 2 4)) (list 1 2))    
(check-expect (common-elements (list 3 2 1) (list 2 1)) (list 2 1))

2番にも同じ問題があり、助けが必要です。

4

1 に答える 1