Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Problem mit mapcar

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 Autodesk Produkte
Autor Thema:  Problem mit mapcar (490 mal gelesen)
AB
Mitglied



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

Beiträge: 255
Registriert: 24.05.2002

Mechanical Desktop 6
AutoCAD 2002

erstellt am: 26. Mai. 2003 15: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

Jetzt habe ich ein Problem mit mapcar:                            (setq Vektor '(
              ((12 11 10) (9 8 7))    ; 1. Liste
              ((6 5 4)(3 2 1))        ; 2. Liste
              )
)     

Jetzt sollen von den ersten x-y-z-Koordinaten aus der ersten Liste die ersten x-y-z-Koordinaten der zweiten Liste abgezogen werden und von den zweiten x-y-z-Koordinaten aus der ersten Liste, die zweiten ,...
                            (12 11 10)        (9 8 7)
                            -( 6  5  4)  und  -(3 2 1)
                            => ((6 6 6)(6 6 6))

Ich komme aber leider nur so weit:
mapcar '- (caar Vektor)(caadr Vektor))
(6 6 6)
Die zweiten Teile der Liste werden nicht mehr berechnet.

Wie lautet die Funktion richtig? Ich komme einfach nicht drauf


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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 26. Mai. 2003 15:37    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 AB 10 Unities + Antwort hilfreich

Hallo Andrea,

dann eben hier ;-)

So sollte es gehen:
(mapcar '(lambda (L1 L2)
   (mapcar '- l1 l2)
   )
(list '(10 9 8) '(7 6 5))
(list '(1 2 3) '(4 5 6))
)
->((9 7 5) (3 1 -1))

Bei Fragen ...

Grüße Holger


------------------
Holger Brischke
CADlon - Lisp over night!
Neue Tool's im Free-&Download
Zugang zum Download schon gesichert?

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

mapcar
Mitglied
CADmin



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

Beiträge: 1250
Registriert: 20.05.2002

Time flies like an arrow, fruit flies like a banana (Groucho Marx)

erstellt am: 27. Mai. 2003 00:44    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 AB 10 Unities + Antwort hilfreich

Probleme mit mapcar?

Zu später Stunde nochetwas Verwirrung stiftend: Holger, bei deiner Methode muss das Argument (Vektor) umgestellt werden.

Mit mapcar muss aber wirklich keiner einer Problem haben! *grien*

Code:

(setq v
'( ((12 11 10) ( 9  8  7))
    (( 6  5  4) ( 3  2  1))
  )
)

(apply'(lambda(u v)(mapcar'(lambda(u v)(mapcar'- u v))u v))v)
=> ((6 6 6)(6 6 6))


OK, ich gebe zu, ein bisschen gemein sieht das schon aus... Aber ein gutes Beispiel für Namespaces!

Gruss, mapcar

------------------
Meine AutoLisp-Seiten
Meine private Homepage
Mein Angriff auf dein Zwerchfell
Mein Lexikon der Fotografie
Mein gereimtes Gesülze
Meine Überzeugung...

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 27. Mai. 2003 08:30    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 AB 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von mapcar:
Probleme mit mapcar?
Mit mapcar muss aber wirklich keiner einer Problem haben! *grien*
[/code]
[/B]

Hallo mapcar,

stimmt! - aber bei der Ergründung deiner Lösungen (manchmal) schon *grins*.

Grüße Holger


------------------
Holger Brischke
CADlon - Lisp over night!
Neue Tool's im Free-&Download
Zugang zum Download schon gesichert?

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

Dea
Mitglied



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

Beiträge: 155
Registriert: 23.10.2002

ACAD 2006, ACAD 2007
ADT 2006 sp1

erstellt am: 23. Jun. 2003 13:37    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 AB 10 Unities + Antwort hilfreich

Eine späte Nachfrage noch zur Lösung (vorher bin ich nicht zum Durcharbeiten gekommen): Warum werden überall die gleichen Variablennamen genommen? Ich habe herumprobiert und mir ist

(apply '(lambda (a b) (mapcar '(lambda (c d) (mapcar '- c d))a b)) v)

dann leichter verständlich vorgekommen und es funktioniert auch. Da meine Lisp-Kenntnisse nicht so riesig sind weiss ich nicht ob die vielen u's und v's vielleicht doch einen Vorteil haben und wenn ja welchen?

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 23. Jun. 2003 14:45    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 AB 10 Unities + Antwort hilfreich

Hallo Dea,

du kannst natürlich so viele Variablen vereinbaren, wie du gern möchtest. Schneller macht's das aber nicht.
In diesem Fall gehts auch mit den 2en, da die Lambda-Funktion einen eigenen Namensraum hat. Warum also mit verschiedenen Variablen noch mehr Verwirrung stiften  .

Bei Fragen ...

Grüße Holger

------------------
Holger Brischke
CADlon - Lisp over night!
4 Neue Tool's im FreeDownload(gesamt 33)!?

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



Auszubildenden Technischer Systemplaner - Versorgungs- und Ausrüstungstechnik (m/w/d)

Von Industriebetrieb, Forschungszentrum, Krankenhaus, Büroimmobilie und Hochschule bis zur Elbphilharmonie oder Antarktisstation: Die über 300 Ingenieure der M&P Gruppe sorgen für zukunftsweisende Energiesysteme, modernste gebäudetechnische Anlagen und innovative Gebäudedigitalisierung!

Im Geschäftsfeld Engineering erarbeiten unsere Ingenieurteams modernste Designlösungen für Energie- und Gebäudetechnik in allen relevanten Branchen und Institutionen....

Anzeige ansehenGebäude-, Versorgungs-, Sicherheitstechnik
mapcar
Mitglied
CADmin



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

Beiträge: 1250
Registriert: 20.05.2002

Time flies like an arrow, fruit flies like a banana (Groucho Marx)

erstellt am: 24. Jun. 2003 11:12    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 AB 10 Unities + Antwort hilfreich

Da gebe ich Dea eigentlich Recht: Natürlich war das wieder ein Anflug meines schrägen Humors, dass ich da überall die gleichen Namen verwendet habe. Es sollte ja ein Beispiel für Namensräume sein. Wesentlich ist nur: in dieser Zeile gibt es fünf verschiedene Variablen, wovon eine schon aus einem übergeordneten Namensraum übernommen wird. Deas Variante ist tatsächlich besser lesbar.

Gruss, Axel

------------------

Meine AutoLisp-Seiten
Meine private Homepage
Mein Angriff auf dein Zwerchfell
Mein Lexikon der Fotografie
Mein gereimtes Gesülze
Meine Überzeugung...

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)2023 CAD.de | Impressum | Datenschutz