我的基本问题是我有一个表示多项式函数的列表列表,我想根据变量和指数对它们进行排序。
例如,变量'y'之前的变量'x'和变量'x ^ n-1'之前的变量'x ^ n'。
我有一个函数'merge',它带有以下输入:
(merge '((5 x 2)(3 x 2)(10 x 2)(15 x 2)(20 x 2)))
将导致此输出
(53 X 2)
53是系数,x是变量,2是指数。我可以按变量排序先得到所有的a然后是b然后是c等等但是我不知道如何在之后切换指数。
答案 0 :(得分:3)
如果您有两个排序标准,您可以先按次要排序,然后按主要标准进行稳定排序:
(stable-sort (sort polynomial #'< :key #'third)
#'string<
:key #'second)
(您可以将符号与string<
进行比较,因为符号是字符串指示符。)
如果您有一个更复杂的定义顺序的功能,请单独定义,例如:
(sort polynomial #'term<)
(defun term< (term0 term1)
(if (string= (second term0) (second term1))
(< (third term0) (third term1))
(string< (second term0) (second term1))))