| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY wird von NVIDIA zum Händler des Jahres gewählt – zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: Lisp Aufgaben (1438 mal gelesen)
|
fhbhmh Mitglied
Beiträge: 2 Registriert: 02.01.2010
|
erstellt am: 02. Jan. 2010 18:01 <-- editieren / zitieren --> Unities abgeben:
hi ich habe ein paar lisp hasuaufgaben bekommen in die ich überhaupt nicht einsteige und wollt fragen ob man mir helfen könnte bin im lisp kurs grad mal auf level 4 und das ist mir eindeutig zu hoch 1. Einfache Zahlenreihen (4 Punkte): Das Programm wird hier mit einfachen Zahlenreihen getestet. Einfach meint hierbei, dass die selbe Operation (; =;+;; x2) immer wieder wiederholt wird. Ein Beispiel wäre die Reihe: 1 4 7 10 : : :. Hier wird in jedem Schritt +3 durchgeführt. Das Programm soll in der Lage sein, das zu erkennen und die nächsten 10 Elemente entsprechend aufzubauen. Es werden hier zum Testen immer nur Reihen benutzt, die eine der oben genannten Operationen für 4 Elemente wiederholen. Eine Beispielausgabe könnte so aussehen (die Eingabe wird in dieser Form sein): 1 ( Numbers ’(4 8 16 32)) 2 -> (64 128 256 512 1024 2048 4096 8192 16384 32768) 2. Zahlenreihen mit History (6 Punkte): Bei den Tests für diese Stufe können die Operatoren gemischt vorkommen. D.h. das Programm darf sich nicht nur einen Einzelschritt anschauen, sondern muss sich eine Sequenz von Operatoranwendungen anschauen. Ein Beispiel wäre die Reihe: 1 3 2 4 3 5 : : :. Hier wird immer zuerst +2 und dann 1 ausgeführt. Ein Beispielaufruf könnte so aussehen: 1 ( Numbers ’(0 1 3 6 7 9 12)) 2 -> (13 15 18 19 21 24 25 27 30 31)
• Substitutionsanalogien (6 Punkte): Die Ausgangsanalogie bleibt gleich: 2 dreibuchstabige Strings mit maximal einer Änderung. Das Programm soll jetzt zusätzlich die Substitution und das Erkennen einer Buchstabengruppe beherrschen. Wie etwa bei der Analogie: abc ! abd :: llmmnn ! llmmoo. Hier wurde die rechteste Gruppe von Buchstaben als äquivalent zu c aufgefasst und deshalb wurde die Gruppe von Buchstaben durch eine Nachfolgergruppe ersetzt. Ein Beispielaufruf könnte so aussehen: 1 ( Analogy ’(( abc )( abd )( rssttt ))) 2 -> ( rssuuu ) • Kognitive Modellierung (4 Punkte): Hierbei gilt es auch wieder das Programm zu vermenschlichen. Als Hilfe gibt es hier wieder die Ergebnisse des Miniversuches. Solche Analogien werden von unterschiedlichen Menschen auf unterschiedliche Weise gelöst. Auf abc ! abd :: lmn !?? könnte man sich die Lösung lmo (Regel: Rechtester Buchstabe wird durch seinen Nachfolger ersetzt) vorstellen, aber auch die Lösung lmd wäre valide (Regel: Rechtester Buchstabe wird durch d ersetzt). Natürlich sind solche Regeln unterschiedlich wahrscheinlich. Deshalb soll das Programm um Präferenzen erweitert werden. Das heißt, dass das Programm nicht immer die gleiche Ausgabe hat, sondern nur eine Präferenz für die Ausgabe und auch andere valide (vielleicht aber auch nicht so wahrscheinliche) Lösungen produzieren kann.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 02. Jan. 2010 19:33 <-- editieren / zitieren --> Unities abgeben: Nur für fhbhmh
Hi und herzlich willkommen auf cad.de! Ob du die gewünschte Hilfe ohne Eigeninitiative erhältst, wage ich zu bezweifeln. Zudem - da es sich um eine Hausaufgabe/Studienarbeit handelt, bei der du sicher auch alle Quellen angibst(musst)... . Und der Lerneffekt geht doch auch gegen Null. Aber als Hilfestellung (es sollten auch schon einige Aufgaben gelöst sein ) schau mal hieroder als Buch („Anhängsel“ als E-Book) oder einfach mal die Forensuche bemühen. In dem Sinne ein frohes und gesundes neues Jahr. ------------------ Mfg Heiko Elefantenjagd in Afrika "... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..." (www.uni-leipzig.de/~rotheh/elefant.htm) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 03. Jan. 2010 07:36 <-- editieren / zitieren --> Unities abgeben: Nur für fhbhmh
|
fhbhmh Mitglied
Beiträge: 2 Registriert: 02.01.2010
|
erstellt am: 03. Jan. 2010 12:31 <-- editieren / zitieren --> Unities abgeben:
ich versuch ja das "zeug" zu lernen muss aber von grund auf die programmiersprache lernen und mach das über lisp curse elma kann uch schon recursive aufgaben (stolz strotz) bin bisher jedoch nicht auf vergleichbare aufgaben gestoßen trotzdem schon mal danke das überhaupt jmd zurück geschrieben hat und auch die Tippsw in welche Richtung die Aufgaben gehn sind bestimmt hilfreich. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
neurosis Mitglied dipl.ing.
Beiträge: 224 Registriert: 22.08.2006
|
erstellt am: 03. Jan. 2010 15:33 <-- editieren / zitieren --> Unities abgeben: Nur für fhbhmh
hallo fhbhmh, als erstes solltest du dir gedanken machen, wie deine algorithmen im allgemeinen ausschauen sollen (stichwort pseudocode). wenn du dann bei der umsetzung in lispcode probleme hast, einfach mal deine ansaetze posten. algorithmen / ansaetze fuer diese problemstellungen sollte es auch schon in anderen sprachen geben (pascal, c, ...). einfach mal suchen. gruss marco ------------------ Marco Heuer www.arc-aachen.de Airport Office Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 05. Jan. 2010 09:19 <-- editieren / zitieren --> Unities abgeben: Nur für fhbhmh
Hallo fhbhmh, weil ich selber nach den Ferien erst einmal wieder 'reinkommen' muss, habe ich die Aufgabe mal zum Aufwärmen genommen. Der folgende Code löst die erste Aufgabe, vielleicht hilft dir das einen Ansatz für die anderen Aufgaben zu entwickeln.
Code:
(defun numbers (INPUT ERGANZ / operand op_val) ;;; INPUT Zahlenliste (1 2 3 4) ;;; ERGANZ Anzahl der Elemente der Ergebnisliste (defun INT2REAL (Z)(* Z 1.0)) ;-> erstmal Reel-Zahlen basteln (setq INPUT (mapcar 'INT2REAL INPUT)) ;<- erstmal Reel-Zahlen basteln ;-> Prüfung welche Operation durchgeführt wurde, Operand und Wert des Operanden wrmitteln (setq operand (cond ((apply '=(mapcar '- (cdr INPUT) INPUT)) ;plus (setq op_val (- (cadr INPUT)(car INPUT))) '+ ) ((apply '=(mapcar '+ (cdr INPUT) INPUT)) ;minus (setq op_val (+ (cadr INPUT)(car INPUT))) '- ) ((apply '=(mapcar '* (cdr INPUT) INPUT)) ;durch (setq op_val (* (cadr INPUT)(car INPUT))) '/ ) ((apply '=(mapcar '/ (cdr INPUT) INPUT)) ;mal (setq op_val (/ (cadr INPUT)(car INPUT))) '* ) ) ) ;<- Prüfung welche Operation durchgeführt wurde, Operand und Wert des Operanden wrmitteln ;-> Aufbau der Ergebnisliste ;-> Umkehren von Zahlenliste, damit immer das erste Element zur Berechnung des neuen Elements herangezogen werden kann (schneller Listenaufbau) (setq INPUT (reverse INPUT)) ;<- Umkehren von Zahlenliste, damit immer das erste Element zur Berechnung des neuen Elements herangezogen werden kann (schneller Listenaufbau) (if operand; nur wenn die Zahlenreihe gültige Elemente enthält (while (<(length INPUT)ERGANZ) (setq INPUT (cons ((eval operand) (car INPUT) op_val) INPUT)) ) ) ;<- Aufbau der Ergebnisliste ;-> Umkehrung der Zahlenliste rückgängig machen (reverse INPUT);ERGEBNIS der Function ;<- Umkehrung der Zahlenliste rückgängig machen ) ;Bsp: Addition (princ(numbers '(1 4 7 10) 10)) (terpri) ;Bsp: Subtraktion (princ(numbers '(10 8 6 4) 10)) (terpri) ;Bsp Division (princ(numbers '(128 64 32 16) 10)) (terpri) ;Bsp Multiplikation (princ(numbers '(1 2 4 8) 10))
Aber Vorsicht, der Code fängt keine Fehler ab, wenn zum Bsp, die Input-Zahlenreihe eine Division durch Null verursachen würde. Grüße Holger
------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 05. Jan. 2010 09:25 <-- editieren / zitieren --> Unities abgeben: Nur für fhbhmh
|