|  |  | 
|  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | 
|  |  | 
|  | PNY: der unverzichtbare Partner für umfassende KI-Lösungen von Workstations bis zu Edge Computing und KI-Cluster-Bereitstellung, eine Pressemitteilung 
 | 
| Autor | Thema:  Listenerweiterung (940 mal gelesen) | 
 | Rolf Lauer Mitglied
 
 
  
 
      Beiträge: 11Registriert: 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üßeRolf
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | Ex-Mitglied |  | 
 | archtools Mitglied
 
 
     
 
      Beiträge: 1059Registriert: 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üßeRolf
 
 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: 11Registriert: 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 |