Hi Leute!
Hab von einer anderen Aufgabe _gehört_. Versuche sie mal zu formulieren. (Zur Info: Ich selber hab noch nicht geschrieben.)
Aufgabe:
Schreibe eine Prozedur mit einem Parameter. Der Parameter soll eine Liste sein. Prüfe, ob sie von der Form (Zahl Symbol Zahl Symbol usw....) ist. Wenn nicht, gibt die Prozedur #f zurück.
Falls richtig, soll eine neue Liste erzeugt werden, in der ein Symbol in der Anzahl der Zahl vor Ihm, vorkommt.
Bsp:
Aus '(2 u 4 t 1 b 0 k 1 q)
wird: (u u t t t t b q)
Bemerkung: eine Symbol kann auch eine Zahl sein.
Eine mögliche Lösung (könnte bestimmt besser sein):
|
Source code
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
(define (kl-aufg liste)
(define (check l)
(if (not (null? l)) (and (number? (car l)) (check (cddr l)))))
(define (make-new-list l)
(if (null? l) '()
(if (= 0 (car l)) (make-new-list (cddr l))
(cons (cadr l) (make-new-list (cons (- (car l) 1) (cdr l)))))))
(if (check liste)
(make-new-list liste)
#f))
(kl-aufg '(5 f 7 g 1 h 3 j))
(kl-aufg '())
(kl-aufg '(g h 45 2g 7))
|
[irgendwie klappt das mit dem Einrücken hier nicht so ganz ... hmm .. sieht so etwas unübersichtlich aus]
Viel Spass damit .. Fehler bitte sofort korrigieren .. *gg*
Ciao