所以,我有表結構如下:保留表結構與用Lisp
(defparameter *list* '( ((2 2 2) (0.1))
((5 5 5) (0.4))
((1 1 1) (1.2))
((3 3 3) (3.4))
((4 4 4) (4.5)))
我想對它進行排序它因此,這裏是返回
'(((1 1 1) (1.2))
((2 2 2) (0.1))
((3 3 3) (3.4))
((4 4 4) (4.5)))
輸出我嘗試:
(sort *list*
#'(lambda (a b)
(< (squared a '(0 0 0))
(squared b '(0 0 0))))
:key #'first)
凡平方發生在兩個列表,並計算每個元件的距離平方和對其求和(即(平方'(1 2 3)'(0 3 5))=> 48))
我按照子列表'(###)的第一個元素對列表進行排序並計算距離從'(0 0 0)開始,然後按該距離排序。
但我嘗試將輸出以下=>((1) (1 1 1) (2) (3) (2 2 2) (4) (5) (3 3 3) (4 4 4) (5 5 5))
如何排序方式「(###),而且還保存列表結構?還使用Common Lisp!
謝謝!
編輯
我已經鍵入lisp錯誤,但正確地進入此論壇。我已鍵入列表作爲以下
(defparameter 列表「((2×2 2)(0.1) (5 5 5)(0.4) (111)(1.2) (3 3 3) (3.4) (4 4 4)(4.5)))