我有一个代表这样的单项式的结构:
(M coefficient monomial-degree vars)
所以下面的单项式3 * x * y ^ 2应该表示如下:
(M 3 3 ((V 1 X) (V 2 Y)))
现在,我有一个具有这种结构的单项式列表,例如:
((M 3 3 ((V 1 X) (V 2 Y))) (M 2 1 ((V 1 X))))
我要做的是按照以下规则对单项式列表进行排序:
1-sort单项式首先是通过增加单项度
2 - 如果两个单项式具有相同的单项度,则按它们的变量对它们进行排序。这意味着首先考虑他们的变量并按字母顺序对它们进行排序,如果它们具有相同的变量,我应该通过考虑它们的变量程度对它们进行排序,并用一个有序的顺序对它们进行排序。
因此,考虑到上面所示的例子,结果应为:
((M 2 1 ((V 1 X))) (M 3 3 ((V 1 X) (V 2 Y))))
现在让我们考虑具有相同变量/度数的三个单项式:
((M 2 2 ((V 1 A) (V 1 C))) (M 3 2 ((V 2 A))) (M 1 2 ((V 1 A) (V 1 B))))
结果应为:
((M 1 2 ((V 1 A) (V 1 B))) (M 2 2 ((V 1 A) (V 1 C))) (M 3 2 ((V 1 A))))
所以在第一种情况下,我使用像这样的排序函数来按单项式进行排序:
(sort (copy-seq lista) #'< :key #'third)
但我不确定如何对单项式具有相同的单项度进行排序。 我考虑过自定义排序功能,但我不确定应该如何实现它。