-3

リスト((1 4 5)5(6 2 5))と別のリスト(5 1 3 7 5(9 2 4))がある場合、最初のリストの項目を比較して表示するプロシージャを作成する必要があります。彼らが2番目にいる場合。たとえば、(1 4 5)は(​​5 1 3 7 5(9 2 3))に0回出現します。5はこのリストに2回表示され、(9 2 4)は0回表示されます。したがって、リストは(0 2 0)を返します

2つのリストを取得するスキームプロシージャの頻度を作成するのに助けが必要です。1つ目は各コンポーネントを比較するもので、2つ目は最初のリストの出現回数をカウントするものです。プロシージャは、発生のリストを返す必要があります。

これまでのところ、2つの手順を実行するように言われています。1つは各アイテムの発生をカウントし(カウンター)、もう1つはリストでそれを追跡します(頻度)。私はこれまでにこれを行いました:

(define (counter ele lst)

 `(cond ((null? lst)  `                          
       '()) 
        `((equal? ele lst)`                
            `(+ 1 (counter ele (cdr lst))))`    
        `(else`
        `(counter ele (cdr lst)))))`          

(define (frequency els lst)

 `(if (null? els)` 
      `'()`
      `(cons <???>`
      `(frequency <???> lst))))`

頻度プロシージャをどうするか、そしてそれからカウンタプロシージャを呼び出す方法がわかりません

ありがとう!

4

1 に答える 1

1

このようなものには、ペアのようなものを使用する必要がありますか? リストのリストであるツリーを操作するためです。

たとえば、(list (list 1 2) 3 4) の car は list 1 2 になります。つまり、値を比較しようとするとエラーが発生します。比較できるようにするには、葉 (個々の番号) をペアから分離する必要があります。

于 2012-11-06T18:04:13.813 に答える