Przejdź do głównej treści

Sortowanie list względem różnych kolumn

Opis.

 

 

 

Polecenie do uruchomienia skryptu LISP: Sort

 

Kod źródłowy z opisem

 

;;; Sortowanie list względem różnych kolumn
;;; zwcad.pl
;;; Polecenie do uruchomienia skryptu LISP: Sort
;;; Opis: https://www.zwcad.pl/materialy-edukacyjne/kurs-lisp/przyklady-lisp/178-sortowanie-list-wzgledem-roznych-kolumn.html
(vl-load-com) 
; Przykładowe dane do testowania
(setq Dane (list (list 2 "Grzegorz" "Brzęczyszczykiewicz" "Chrząszczyrzewoszyce")
(list 1 "Józef" "Szwejk" "Praga")
(list 3 "Władysław" "Kargul" "Krużewniki" )
(list 0 "Kazimierz" "Pawlak" "Krużewniki" )
(list 5 "Jan" "Kania" "Kraków")
(list 4 "Moryc" "Haber" "Wiedeń" )
(list 6 "Hudej" "ich weiss nicht" "Praga")
))
(defun C:Sort ( / resp Sorted )
;----------------------------------------------------------
; funkcja sortuje elementy dwópoziomowej listy względem kryterium wybranego przez Użytkownika
; Argumenty: Dane: Lista list zawierających wartości liczbowe i tekstowe
; Wynik: nil
;----------------------------------------------------------
(setq resp(GetOption "Numer Imię nAzwisko Miejsce" (strcat "\n" "Wybierz kryterium" ":Numer/Imię/nAzwisko/Miejsce:") )) ; Wybór kryterium sortowania
(setq resp(cond ((= resp "NUMER") 0)((= resp "IMIĘ") 1)((= resp "NAZWISKO") 2) ((= resp "MIEJSCE") 3)))
(setq Sorted(vl-sort Dane '(lambda (%1 %2)(< (nth resp %1) (nth resp %2) ) ) ) )
(LISTprint Sorted )
nil
)
(defun LISTprint (Lista / %)
;----------------------------------------------------------
; funkcja wyświetla listę wiersz po wierszu
; Argumenty: Lista list zawierających wartości liczbowe i tekstowe
; Wynik: nil
;----------------------------------------------------------
(print Lista )
(foreach % Lista
(print % )
)
)
(defun GetOption (InitStr KWordStr / Wynik ans )
(setq Wynik nil)
(initget 1 InitStr )
(setq ans(vl-catch-all-apply 'getkword (list KWordStr )))
(if (not(vl-catch-all-error-p ans))
(progn
(if ans (progn
(setq Wynik (strcase ans))
))
)
)
Wynik
)
br /

 

Wykonanie w ZWCAD 2023

 

Lista tagów: LISP Przykłady LISP

// ZWCAD: dymki słownika – szerokość 500 px i przeliczenie rozmiaru po wczytaniu obrazka (bez paska przewijania) jQuery(function ($) { if (!$.tooltipster) return; // obrazek w dymku wczytuje się po otwarciu – wtedy dymek trzeba zmierzyć jeszcze raz $.tooltipster.on('ready', function (e) { var instance = e.instance; $(e.tooltip).find('img').each(function () { if (!this.complete) { $(this).one('load', function () { instance.reposition(); }); } }); }); // SEO Glossary ustawia maxWidth: 400 – zmieniamy na 500 po jego inicjalizacji setTimeout(function () { $('.tooltipstered').each(function () { try { $(this).tooltipster('option', 'maxWidth', 500); } catch (err) {} }); }, 0); });