Отсортировать список со списками по возрастанию - Lisp

Узнай цену своей работы

Формулировка задачи:

Добрый день, подскажите пожалуйста: Как отсортировать список с подсписками по возрастанию? Например при:
`(  (d e 2)   (e c 3) (b c 1) (c d 4) (a b 5)  (a z 6) (c a 2) (b d 3 ) )
Должно получиться что-то типо такого:
`( (b c 1) (d e 2) (c a 2) (b d 3 ) (e c 3) (c d 4) (a b 5) (a z 6) )

Решение задачи: «Отсортировать список со списками по возрастанию»

textual
Листинг программы
(defun vsort (lst)
  (if (null lst) nil
      (let ((min (car lst)))
         (dolist (i (cdr lst) t)
            (when (< (caddr i) (caddr min)) (setq min i)))
            (cons min (vsort (removef min lst))))))
 
==> VSORT
 
(vsort '((d e 2) (e c 3) (b c 1) (c d 4) (a b 5)  (a z 6) (c a 2) (b d 3 )))
 
==> ((B C 1) (D E 2) (C A 2) (E C 3) (B D 3) (C D 4) (A B 5) (A Z 6))

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.231 из 5
Похожие ответы