Exempel
(maxx '(3 2 1)) ==> 3
(maxx '(1)) ==> 1
Funktionen descending-p[l], där l är en lista av minst två numeriska atomer avgör om elementen i l är i strängt minskande ordning.
Exempel
(descending-p '(3 2 1)) ==> T
(descendig-p '(3 1 2)) ==> NIL
Funktionen reverse-all[l], där l är en lista, returnerar en lista som innehåller samma element som l, men i "motsatt" ordning. Även dellistor till l ska förändras på samma sätt.
Exempel
(reverse-all '(a b c)) ==> (c b a)
(reverse-all '(a (b c) d e)) ==> (e d (c b) a)
Definiera en funktion summa[l,m] där l och
m är listor av tal. I m finns inga
dubletter. Funktionen returnerar en lista, vars element kan vara
antingen atomen NEJ
eller listor av listor innehållande
exakt 2 tal. Den returnerade listan är av samma längd som
l. Både l och m innehåller minst ett tal vardera.
Talparen (dvs listorna av längden 2) i den resulterande listan innehåller tal valda ur m. Summan av talen i varje par i dellistorna i den resulterande listan ska vara de respektive talen ur l. Om ett tal i l inte kan räknas fram av talen ur m ska i stället atomen NEJ
vara med på denna plats i den resulterande listan. Talen ur m får användas flera gånger.
Notera att om paret (x y)
finns med i listan ska även (y x)
finnas med. Ordningsföljder mellan element i listorna spelar ingen roll, utöver att ordningen mellan dellistorna i den resulterande listan ska överensstämma med l.
Exempel
(summa '(10 20 5 2) '(5 1 9)) ==> (((5 5) (1 9) (9 1)) NEJ NEJ ((1 1)))
Dina lösningar ska spegla god programmeringssed för funktionella språk. Således kan fungerande program, som ej är en bild av ett funktionellt synsätt, komma att underkännas. Du bör speciellt undvika tekniker med "räknare" eller "ackumulerande parametrar", om dessa ej är nödvändiga för uppgiftslösningen.
Anders Berglund office + 46 (18) 471 31 67 Information Technology mobile + 46 (70) 425 02 11 Department of Computer Systems fax, dept + 46 (18) 55 02 25 P.O. Box 325 S-751 05 Uppsala Sweden e-mail: Anders.Berglund@docs.uu.se