Onderwerpen

Schotel

Use it or lose it en lambda

Deze week leer je twee dingen. Het eerste is use it or lose it: bij elk element van een lijst probeer je twee keuzes uit, het element gebruiken of het laten liggen. Dat zijn twee recursieve aanroepen, en hun uitkomsten combineer je tot het antwoord. Zo los je problemen op waarbij je vooraf niet weet welke keuze de goede is, zoals een bedrag precies betalen met de munten in je portemonnee. Het tweede is een functie als argument: je geeft een functie mee aan een andere functie, bijvoorbeeld aan sorted met key=, om te zeggen waarop ze moet sorteren. Een kleine functie schrijf je daarvoor ter plekke op, als lambda-functie met lambda.

Het eerste college gaat over use it or lose it, met het wisselgeld en de knapzak. Dat heb je nodig voor het eerste deel van de opstap, voor de basis over algoritmen, voor de extra over de periodieke tshirt en voor het werkcollege, waarin je uitrekent met hoeveel munten je een bedrag betaalt. De extra over het pijlenpad probeert ook keuzes uit, maar met een recursieve aanroep in een lus over de keuzes, zoals in het werkcollege van week 3. Het tweede college gaat over sorted, max en min met key=, over lambda, en over een eigen functie met een functieparameter. Dat heb je nodig voor de andere twee delen van de opstap en voor de basis over lambda. Caesar op orde herhaalt de stof van beide colleges.

Aan het eind van de week kun je bij een probleem met keuzes beide keuzes recursief uitproberen en de beste kiezen, en kun je een functie meegeven als argument, als bestaande functie, als eigen functie of als lambda-functie.

Waar je vandaan komt

In week 3 leerde je recursie: een basisgeval, een recursief geval met de recursieve aanroep, en een frame op de stack voor elke aanroep. Daar had elk recursief geval één recursieve aanroep. Het tweede college sloot af met de vraag of je met munten van 20, 50 en 50 cent precies 70 of 80 cent kunt betalen; die vraag beantwoordt het eerste college van deze week. largest en best_word uit week 3 kozen het beste element uit een lijst. In week 2 leerde je list comprehensions, en de extra-opgave sloot af met een vooruitblik op sorted(totals, key=totals.get). Het tweede college legt uit hoe dat werkt.