| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | | | PNY präsentiert die neue NVIDIA RTX A400 und die A1000 Grafikkarte, eine Pressemitteilung
|
Autor
|
Thema: Listenerweiterung (798 mal gelesen)
|
Rolf Lauer Mitglied
Beiträge: 11 Registriert: 25.07.2008
|
erstellt am: 25. Jul. 2008 20:14 <-- editieren / zitieren --> Unities abgeben:
Hi miteinander, die Listenfunktionen sind gute Sachen. Ich weiss zum Beispiel, wie ich Listenelemente am Ende oder am Anfang einer bestehenden Liste einfügen kann. Wie es der Zufall will, habe ich in einem Lisp-Programm folgendes Problem gehabt: Ich habe eine Liste mit 30 Elementen. An der Stelle "a" (z.B. 3. oder 4.Stelle) sollen "b" Elemente (z.B. 4 Stück) eingefügt werden. Da habe ich gestockt. Wie kann ich mit einem Lisp-Code dieses Problem lösen? Viele Grüße Rolf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied | |
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 26. Jul. 2008 11:36 <-- editieren / zitieren --> Unities abgeben: Nur für Rolf Lauer
Zitat: Original erstellt von Rolf Lauer: Hi miteinander,die Listenfunktionen sind gute Sachen. Ich weiss zum Beispiel, wie ich Listenelemente am Ende oder am Anfang einer bestehenden Liste einfügen kann. Wie es der Zufall will, habe ich in einem Lisp-Programm folgendes Problem gehabt: Ich habe eine Liste mit 30 Elementen. An der Stelle "a" (z.B. 3. oder 4.Stelle) sollen "b" Elemente (z.B. 4 Stück) eingefügt werden. Da habe ich gestockt. Wie kann ich mit einem Lisp-Code dieses Problem lösen? Viele Grüße Rolf
Nun, da bastelst Du Dir eine auch sonst nützliche Funktion namens SPLIT, die eine Liste an der n-ten Stelle in zwei Listen aufsplittet, und hängst die Liste der dazwischen zu hängenden Liste mit APPEND rein. Aus dem Setgreif:
Code:
(defun split (lst idx / front) (repeat idx (setq front (cons (car lst) front) lst (cdr lst) ) ) (list (reverse front) lst) )
Wenn Du nun nach die 5. Stelle in einer Liste lst die Liste alst hängen willst, dann geht das einfach so:
Code:
(setq slst (split lst 5)) (append (car slst) alst (cadr slst))
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Rolf Lauer Mitglied
Beiträge: 11 Registriert: 25.07.2008
|
erstellt am: 26. Jul. 2008 20:42 <-- editieren / zitieren --> Unities abgeben:
Hallo Kollegen, mit dem Tipp der Befehle (member, subst) kam ich nicht so gut zurecht. Aber der Code mit der Funktion SPLIT hat das Problem restlos gelöst. Ich danke Euch beiden für die Unterstützung. Gruß Rolf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|