Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  PTC Creo Elements/Programmierung
  Blogartikel: Flache Hierarchien

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Creo
  
HPE ProLiant Summer Academy 2025 in Linz, eine Veranstaltung am 11.09.2025
Autor Thema:  Blogartikel: Flache Hierarchien (1080 mal gelesen)
clausb
Ehrenmitglied V.I.P. h.c.



Sehen Sie sich das Profil von clausb an!   Senden Sie eine Private Message an clausb  Schreiben Sie einen Gästebucheintrag für clausb

Beiträge: 2914
Registriert: 20.12.2000

Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.

erstellt am: 05. Apr. 2015 18:27    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Nach seeeehr langer Zeit mal wieder ein Blog-Artikel von mir, der wenigstens zum Teil etwas mit Lisp-Programmierung in CoCreate Modeling zu tun hat:

http://www.clausbrod.de/Blog/DefinePrivatePublic20150404FlacheHierarchien

Es geht um einen Vergleich algorithmischer Varianten, wie man eine Baugruppenstruktur abläuft und in eine unverschachtelte Liste flachklopft. Wahrscheinlich nur für die wenigsten direkt anwendbar, aber wer weiss das schon so genau ;-)

------------------
CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

AlexG
Mitglied



Sehen Sie sich das Profil von AlexG an!   Senden Sie eine Private Message an AlexG  Schreiben Sie einen Gästebucheintrag für AlexG

Beiträge: 133
Registriert: 05.04.2013

CP/M; 6510@0,985249 MHz; 64KB RAM; 20KB ROM; MOS 6569

erstellt am: 07. Apr. 2015 10:31    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für clausb 10 Unities + Antwort hilfreich

░░░░░░░░░░░░▄▄
░░░░░░░░░░░█░░█
░░░░░░░░░░░█░░█
░░░░░░░░░░█░░░█
░░░░░░░░░█░░░░█
███████▄▄█░░░░░██████▄
▓▓▓▓▓▓█░░░░░░░░░░░░░░█
▓▓▓▓▓▓█░░░░░░░░░░░░░░█
▓▓▓▓▓▓█░░░░░░░░░░░░░░█
▓▓▓▓▓▓█░░░░░░░░░░░░░░█
▓▓▓▓▓▓█░░░░░░░░░░░░░░█
▓▓▓▓▓▓█████░░░░░░░░░█
██████▀░░░░▀▀██████▀

Like!

Der Vollständigkeit halber anbei noch eine weitere (nicht so elegante) Variante:

Code:
(defun flatten (orig-list)
    (if (eql orig-list nil)
        nil
        (let ((elem (car orig-list)) (rest-list (cdr orig-list)))
            (if (listp elem)
                (append (flatten elem) (flatten rest-list))
                (append (cons elem nil) (flatten rest-list))))))

Quelle: 99-lisp-problems


Oder als Variante mit loop:

Code:
(defun flatten (l)
  (cond ((null l) nil)
        ((atom l) (list l))
        (t (loop for a in l appending (flatten a)))))

Gruß Alex

------------------
Computer sind unbrauchbar. Sie können nur Fragen beantworten.
Pablo Picasso, Maler

[Diese Nachricht wurde von AlexG am 07. Apr. 2015 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

clausb
Ehrenmitglied V.I.P. h.c.



Sehen Sie sich das Profil von clausb an!   Senden Sie eine Private Message an clausb  Schreiben Sie einen Gästebucheintrag für clausb

Beiträge: 2914
Registriert: 20.12.2000

Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.

erstellt am: 07. Apr. 2015 23:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke Alex!

Deine zweite Variante sieht für das konkrete Problem angepasst und ganz leicht optimiert dann so aus:

Code:

(defun flatten-loop(node)
  (cond
    ((null (node-children node)) (list node))
    (t (cons node (loop for n in (node-children node)
                        nconcing (flatten-loop n))))))

Auf jeden Fall schon mal gut zu lesen, finde ich.

Die Performanceergebnisse sind eher gemischt. Ich werde noch ein paar Tests fahren und die Ergebnisse dann dem Blogartikel hinzufügen. Dankeschön nochmals!


------------------
CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/

[Diese Nachricht wurde von clausb am 08. Apr. 2015 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2025 CAD.de | Impressum | Datenschutz