2012-11-06 92 views
-3

如果你有一個清單((1 4 5)5(6 2 5)),和另一個清單(5 1 3 7 5(9 2 4)),我需要編寫一個程序來比較第一個列表,並看看他們是否在第二。例如,(1 4 5)在(5 1 3 7 5(9 2 3))中出現0次。 5在該列表中出現2次,並且(9 2 4)出現0次。所以列表將返回(0 2 0)比較列表中的項目?方案

我需要幫助編寫一個計劃程序頻率,它需要兩個列表,第一個是每個組件比較的程序頻率,第二個是計算第一個列表的出現。該過程應該返回出現的列表。

到目前爲止,我已被告知要製作兩個程序,一個用於統計每個項目的出現次數(計數器),另一個用於記錄列表(頻率)中的出現次數(計數器)。我到目前爲止已經做到了這一點:

(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))))` 

我不知道該怎麼與頻率的程序是什麼,以及如何從它調用的程序計數器

謝謝!

+0

可能重複的[比較列表中的項目](http://stackoverflow.com/questions/13233232/comparing-items-in-a-list) –

+1

我不能相信這一點。上次你發佈這個問題時,我給你提供瞭解決這個問題的所有必要提示,而且你還沒有盡力嘗試!你剛剛發佈了_我自己的答案_希望別人填補你的空白! –

+0

你已經或多或少地用英文描述了什麼應該填補空白。你的下一個任務不會因爲你通過這一個作弊而變得更輕鬆。 – molbdnilo

回答

1

對於這樣的事情,你將不得不使用類似對的東西?因爲你使用列表清單的樹木。

例如(列表(列表1 2)3 4)的車將成爲列表1 2.這意味着如果您嘗試比較值,您將得到一個錯誤。您需要從對中分離葉子(單個數字)以便能夠進行比較。