Göm menyn

Seminarium 4 - Experimentering

Kapitel som ska ha lästs

Uppgift: Tuple

  1. Vad gör funktionen?
  2. Var och hur använder funktionen sig av datatypen tuple?

Uppgift: Dubbelrekursion

  1. Skriv en funktion som går igenom en lista och dess underlistor och returnerar elementet med det största värdet. tips: gör en fallanalys
  2. I vilken ordning kommer element besökas i sekvensen [0, [7, [1, 27], 2], 3]?
  3. Vilken ändring behöver göras för att ändra ordningen elementen besöks?

Uppgift: Descendants

Ett sätt att lagra grafer på är med hjälp av dictionaries, detta gör vi i den givna koden (variabeln graph innehåller vår graf). I vår dictionary är nycklar namn på personer, och dess värden är personens barn. 'Charles': ['Bill', 'Steve'] betyder alltså att Charles har barnen Bill och Steve. Grafen bildar ett släktträd.

  1. Rita upp grafen på ett papper.
  2. is_descendant går igenom (traverserar) grafen utifrån en viss person tills den hittar personen den letar efter. Om personen ej hittas kommer alla tillgängliga personer gås igenom. Vilka personer kommer besökas, och i vilken ordning, vid anropet is_descendant(graph, "Herbert", "Linus").
  3. Har vi tillräckliga basfall för funktionen alltid kommer att terminera? Motivera.
  4. Om du vill att alla personer i grafen ska besökas, vilken existerande släktrelation ska undersökas? (finns endast 1).

Uppgift: Oldest branch

I denna uppgiften vill vi ha mer information om personerna än bara deras barn, vi vill hålla koll på hur gammal en person blev/är. För detta syfte är det perfekt att använda tupler. Vi använder fortfarande namn som nyckel i vår dictionary, men värdet är nu en tuple på formen (children, age). "Charles" har nu värdet (["Bill", "Steve"], 73) där Bill och Steve är barnen och 73 är Charles ålder i år.

  1. Skriv en oldest_branch funktion som tar in en graf och en person, och ger tillbaka den summan av åldrar i den äldsta familjegrenen som härstammar från den givna personen.

Körexempel:

Anropet med Ada blir 323 då det är den sammanlagda åldern med Ada, Herbert, Grace, Linus, Edsger.


Sidansvarig: Peter Dalenius
Senast uppdaterad: 2016-08-17