Uppgift 4: 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)))
Redovisning
För var och en av de fyra deluppgifterna ska du redovisa de steg som
beskrivs i Kia Hööks Arbetsmetodik för små program. Du kan, om
du vill, avstå från steg 5, abstrakt notation.
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: Room 1254 Department of Computer Systems E-mail: Anders.Berglund@docs.uu.se Box 325 Phone (work): +46 18 471 31 67 S-751 05 Uppsala Mobile phone: +46 70 425 02 11 Sweden Fax (work): +46 18 55 02 25