Del F: Iterativa konstruktioner
Exempel F1
Skriv en funktion vänd som vänder på en lista.
Använd dig av någon av Common Lisps iterativa konstruktioner
(t.ex. loop, do). Du ska givetvis inte
används den inbyggda funktionen reverse. Exempel:
CL-USER(9): (vänd '(a b c d)) (D C B A)
Exempel F2
Skriv en variant av vänd från exempel F1 som kan
vända på alla nivåer, dvs även underlistor. Gör det utan att använda
rekursion! Exempel:
CL-USER(12): (vänd-alla '(a (b c) d (e (f g)) h)) (H ((G F) E) D (C B) A)
Exempel F3
Skriv en funktion finns-tal? som tar reda på om det
finns minst ett element i en rak lista som är ett tal. Funktionen ska
använda sig av some för att utföra upprepningen.
Exempel F4
Skriv en iterativ funktion summera-listor som summerar
elementen i två lika långa raka listor. Elementen ska summeras parvis
och en ny lista med summorna ska returneras. Exempel:
CL-USER(14): (summera-listor '(1 2 3) '(10 22 11)) (11 24 14)
Exempel F5
Skriv en iterativ funktion palindrom? som kontrollerar
om en sträng är ett palindrom (dvs om den är likadan oavsett om man
läser framifrån eller bakifrån). Du kan använda funktionen
length för att ta reda på längden av en sträng samt
funktionen (char sträng n) för att hämta
ut tecken n ur strängen. Första tecknet i strängen har position
0. Exempel:
CL-USER(50): (palindrom? "anna") T CL-USER(51): (palindrom? "1991") T CL-USER(52): (palindrom? "annas") NIL
Sidansvarig: Peter Dalenius
Senast uppdaterad: 2004-11-08
