2011-12-11 84 views
2

我在尋找兩個相等長度的列表,並返回列表不相等的所有索引列表。例如,如果我放入("orange" "yellow" "green" "green")("orange" "green" "yellow" "green"),我期望返回(1 2)((假設列表索引從0開始在方案中))。在列表中的所有索引處檢查是否相等

我應該怎麼辦?

+0

這功課嗎?到目前爲止你做了什麼? - 先顯示一些努力!另一件事,你的例子與你寫的內容相矛盾:(0 3)是列表中的元素彼此相等的索引 –

+0

這不完全是家庭作業。這個問題本身沒有分配。我正在試圖編寫一個程序來做到這一點,以便解決一些分配給作業的東西。我不知道如何做到這一點,這就是爲什麼我問我該怎麼做。如果你沒有什麼可以幫助解決這個問題,你不需要評論。 – user1023010

回答

1

我就給你需要做什麼的總體思路,我會讓你找出細節 - 我不想破壞你的家庭作業:

(define (unequal-indexes lst1 lst2) 
    (unequal-aux lst1 lst2 XXX1)) 

(define (unequal-aux l1 l2 idx) 
    (cond ((null? l1) 
     XXX2) 
     ((equal? (car l1) (car l2)) 
     XXX3) 
     (else 
     XXX4))) 

第一,你必須意識到你需要一種方法來跟蹤你所處的索引。爲此,我定義了一個輔助程序unequal-aux,它從主程序unequal-indexes中調用。在上面的代碼中,填充在毛坯:

  • XXX1:什麼是最初的指數?
  • XXX2:如果列表爲空,應該返回什麼?記住,我們想要返回索引列表
  • XXX3:如果兩個列表中的當前元素都相等,會發生什麼?提示:遞歸必須繼續兩個表,索引必須遞增,但我們沒有一個元素器添加到正在興建
  • XXX4名單:如果兩個列出當前元素會發生什麼不同?提示:遞歸必須繼續這兩個列表,並且索引必須遞增,這次我們添加一個元素到正在構建的列表 - 哪個元素?我們現在走

當然的指數,現在你必須知道,一個列表由cons建立每個元素-ing到列表中的其餘部分,直到我們到達空(NULL)名單。