2012-04-26 47 views
1

訂購取決於要素的順序列表,我有一個列表CLISP:在另一個

(SetQ L '(1 j 3 k 4 h 5 n 6 w)) 

我要做一個功能令,有一個清單,「N」在進入原子,它必須檢查該列表中的每個原子被包含在列表L和命令他們根據在列表L中指定的順序,如果原子不在列表L,那麼結果將顯示

(Defun Order lst) 

(SetQ L2'(w o 5 j 3)) 

的一部分,我想要驗證這:

(Order L2) 

結果應該返回:

+1

這應該被標記爲「家庭作業」?另外,你有什麼嘗試? – Inaimathi 2012-04-26 13:48:01

回答

3

提示:

早些時候,你問這個問題:

CLISP : Check if two elements are in order one after another in a list

,因爲它可以被用作該功能相關的問題在調用標準Lisp函數sort時的比較函數。

Lisp函數intersection可以生成一個列表,其中只包含出現在另一個列表中的那些元素。這是一個設置操作,所以它可以壓縮重複;另一種方法是使用remove-if-not,其中測試謂詞是一個lambda函數,它使用member來表達「刪除不是該列表的所有元素」的想法。