1

我有一个清单

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

我必须做一个函数 Order,它在入口处有一个带有“n”个原子的列表,它必须检查该列表的每个原子是否包含在列表 L 中,并根据列表 L 中指定的顺序对它们进行排序,如果原子不是列表 L 的一部分,然后将显示结果

(Defun Order lst)

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

我想验证这一点:

(Order L2)

结果应该返回:

(J 3 5 W)
4

1 回答 1

3

提示:

之前,你问过这个问题:

CLISP :检查两个元素是否在列表中依次排列

这个函数与问题有关,因为它可以在调用标准 Lisp 函数时用作比较函数sort

Lisp 函数intersection可以生成一个列表,该列表仅包含一个列表中出现在另一个列表中的那些元素。这是一个集合操作,所以它可能会挤压重复;另一种方法是使用remove-if-not测试谓词是一个 lambda 函数,用于member表达“删除该列表中不属于该列表的所有元素”的想法。

于 2012-04-26T16:26:42.030 回答