Source code |
|
1 2 3 4 5 6 |
(define (square x)(* x x)) (define (deep-square l) (cond ((null? l)'()) ((pair? (car l)) (cons (deep-square (car l))(deep-square (cdr l)))) (else (cons (square (car l)) (deep-square (cdr l)))))) |
Tip2: Was ist denn die Aufgabe? Bzw. wo ist der Link zum Aufgabenblatt? Dann können dir vielleicht auch Leute helfen, die gerade nicht Scheme hören.
Source code |
|
1 2 |
(deep-square '(2 3 (4 . 5))) (4 9 (16 . 25)) |
Kleiner Tipp: Verwende anstelle des cons mal ein append.
This post has been edited 2 times, last edit by "Panoramix" (Dec 2nd 2009, 8:28pm)
Tip2: Was ist denn die Aufgabe? Bzw. wo ist der Link zum Aufgabenblatt? Dann können dir vielleicht auch Leute helfen, die gerade nicht Scheme hören.
Ich rate mal ... Es soll wohl in einer verschachtelten Liste oder einem ähnlichen Konstrukt jedes Element quadriert werden:
Kleiner Tipp: Verwende anstelle des cons mal ein append.
This post has been edited 1 times, last edit by "Bastian" (Dec 2nd 2009, 9:15pm)
Ich dachte immer null und pair wären genau das Gegenteilig. Müssten die 2 Bedingungen da nicht den selben Wahrheitswert liefern?
Source code |
|
1 2 3 4 |
(null? 1) #f (pair? 1) #f |
Quoted
(pair? v)
Returns #t if v is a pair, #f otherwise.
(null? v)
Returns #t if v is the empty list, #f otherwise.
Dies ist in der Tat eine Prozedur, die dir bei Aufgabe 1 helfen kann, jedoch nicht bei a) sondern bei b) nach leichtem Modifizieren...wie du siehst multipliziert die Prozedur die gesamte Liste mit einem Faktor ohne die Struktur zu verändern...musst jetzt die Prozedur so verändern dass nicht nur Multiplizieren sondern auch andere Prozeduren möglich sind (wie in der Beispielausgabe mit sqrt).aber zu 1 hab ich nur das hier gefunden, was passen könnte:
[codefile](define (scale-tree tree factor)
(cond ((null? tree) '())
((not (pair? tree)) (* tree factor))
(else (cons (scale-tree (car tree) factor)
(scale-tree (cdr tree) factor)))))
[/codefile]
ich glaub damit könnte man das lösen, allerdings bin ich verwirrt von "null?" und "not pair?". Ich dachte immer null und pair wären genau das Gegenteilig. Müssten die 2 Bedingungen da nicht den selben Wahrheitswert liefern?
This post has been edited 2 times, last edit by "mar1k" (Dec 2nd 2009, 11:17pm)
In der Vorlesung wurde eine Prozedur die genau das tut (also das entschachteln einer verschachtelten Liste) bereits mal gezeigt (bzw eine mögliche Implementierung), bloß wurde sie für einen (zumindest scheinbar) anderen Zweck benutzt...schau mal bei Kapitel 2 (Teil 1) nach. Der Name der Prozedur ist aber gaaanz anders
Deswegen habe ich auch nicht gesagt dass die Lösung in Zeile 2496 steht (z.B.), sondern auf ein ganzes Kapitel des Vorlesungsskripts hingewiesen. Das gibt ihm (wie ich finde) eine Gelegenheit, sich nochmal durch die Vorlesung durchzuarbeiten, und somit nicht nur durch Zufall auf eine richtige Prozedur zu kommen sondern auch zu sehen in welchem Telgebiet des Stoffs sich die Lösung befindet.In der Vorlesung wurde eine Prozedur die genau das tut (also das entschachteln einer verschachtelten Liste) bereits mal gezeigt (bzw eine mögliche Implementierung), bloß wurde sie für einen (zumindest scheinbar) anderen Zweck benutzt...schau mal bei Kapitel 2 (Teil 1) nach. Der Name der Prozedur ist aber gaaanz anders
Das Vorgehen halte ich irgendwie für wenig sinnvoll. Es geht doch darum, zu verstehen, die Aufgabenstellung zu verstehen und selbständig zu lösen. In der Prüfung sagt einem schließlich auch niemand "guck mal hier, da steht die Lösung schon"...