Hi alle,
Ja ich sags gleich es handelt sich um eine "Hausaufgabe" deswegen suche ich nicht eine Loseung sondern nur einen Denkanstoss in die richtige richtung meine Kollegen und ich hanegen seit ner Woche an dem Problem und kriegens net hin :-(.
Wir sollen eine schem efunktion schreiben
funktion(l) (l ist eine Liste)
die sich folgendermassen benimmt
funktion ’(a b c d e)) ergibt (b c d e a)
funktion ’(e a b c d)) ergibt (a b c d e)
Das ganze soll nur eine funktion verwenden und sollte rekursiv erfolgen
um das ganze noch etwas netter zu machen duerfen wir "append" und "last" nicht verwenden
Ich habe schon jede Menge versucht aber ich weis nicht wie ichs shcaffe dass, das erste element nur einmal an das ende gebracht wird. Ich nehme an das ist wohl einer der base cases. Aber ich komm einfach net drauf wie ichs machen soll. Meine funktion dreht irgendwie das ganze immer nur um
Meine idee im moment ist das gazne einfach immer eins nach links zu schieben
also im prinzip cons( ([letztes element] liste)
Nur weis ich grar nicht wie ich an dieses Element rankommen soll bzw wie ich die liste manipulieren kann
Ich sag nochmal ich suche hier keine Loesung sondern nur einen Denkanstoss in die richtige Richtung.
Im moment sieht mein code so aus
[code:1]
(define x (list 'a 'b 'c))
(define funktion
(lambda (l)
(cond ((null? l) (l))
((null? (cdr l)) (car l))
(else (cons (funktion (cdr l)) l)))))
[/code:1]
Bin fuer saemtliche Hinweise dankbar
Ja ich sags gleich es handelt sich um eine "Hausaufgabe" deswegen suche ich nicht eine Loseung sondern nur einen Denkanstoss in die richtige richtung meine Kollegen und ich hanegen seit ner Woche an dem Problem und kriegens net hin :-(.
Wir sollen eine schem efunktion schreiben
funktion(l) (l ist eine Liste)
die sich folgendermassen benimmt
funktion ’(a b c d e)) ergibt (b c d e a)
funktion ’(e a b c d)) ergibt (a b c d e)
Das ganze soll nur eine funktion verwenden und sollte rekursiv erfolgen
um das ganze noch etwas netter zu machen duerfen wir "append" und "last" nicht verwenden
Ich habe schon jede Menge versucht aber ich weis nicht wie ichs shcaffe dass, das erste element nur einmal an das ende gebracht wird. Ich nehme an das ist wohl einer der base cases. Aber ich komm einfach net drauf wie ichs machen soll. Meine funktion dreht irgendwie das ganze immer nur um

Meine idee im moment ist das gazne einfach immer eins nach links zu schieben
also im prinzip cons( ([letztes element] liste)
Nur weis ich grar nicht wie ich an dieses Element rankommen soll bzw wie ich die liste manipulieren kann
Ich sag nochmal ich suche hier keine Loesung sondern nur einen Denkanstoss in die richtige Richtung.
Im moment sieht mein code so aus
[code:1]
(define x (list 'a 'b 'c))
(define funktion
(lambda (l)
(cond ((null? l) (l))
((null? (cdr l)) (car l))
(else (cons (funktion (cdr l)) l)))))
[/code:1]
Bin fuer saemtliche Hinweise dankbar
