• kth.se
  • Studentwebben
  • Intranät
  • kth.se
  • Studentwebben
  • Intranät
Logga in
DD1320/DD1326 HT22
Labb 5: Rekursion, breddenförstsökning del 2
Hoppa över till innehåll
Översikt
  • Logga in
  • Översikt
  • Kalender
  • Inkorg
  • Historik
  • Hjälp
Stäng
  • Min översikt
  • DD1320/DD1326 HT22
  • Uppgifter
  • Labb 5: Rekursion, breddenförstsökning del 2
  • Startsida
  • Kursöversikt
  • Moduler
  • Uppgifter
  • Course Evaluation

Labb 5: Rekursion, breddenförstsökning del 2

  • Inlämningsdatum 30 sep 2022 av 18:00
  • Poäng 10
  • Lämnar in en filuppladdning
  • Filtyper py
Mål Läs i kursboken

Rekursion, nästlade noder. Denna laboration är en fortsättning på förra labben. Repetera Föreläsning 3, Övning 4

Kapitel 5.1 - 5.6 Links to an external site.

20190705_152505.jpg

□ Förberedande uppgifter

Här är en rekursiv funktion för utskrift av en lista:

def utskrift(lista):
    if len(lista) > 0:
        print(lista[0])
utskrift(lista[1:])
  1. Provkör funktionen med listan [1,2,3,4,5]
  2. Rita Stack Frames (enligt boken kap 5.5 Links to an external site. och 5.6 Links to an external site. ) för att visa hur rekursionen fungerar.
  3. Byt plats på print-satsen och det rekursiva anropet (så att print-satsen hamnar sist i funktionen).
  4. Provkör igen
  5. Rita Stack Frames och förklara resultatet.

□ Förbättra söt-sur

Det tråkiga med programmet från förra labben är att det bara talar om att det finns en lösning. För att programmet ska kunna skriva ut alla ord på vägen mellan söt och sur måste varje ord kunna peka på sin förälder. Vi inför en ParentNode för att hålla reda på både ordet och dess förälder.

class ParentNode:
    def __init__(self, word, parent = None):
        self.word = word
        self.parent = parent


Huvudprogrammet ska skapa ett ParentNode-objekt och lägga in startordet (som word-attribut). Det som sätts in i kön och plockas ut ur kön är nu inte längre ord utan ParentNode. Det betyder att du måste ändra en del i funktionen makechildren från förra labben.

När makechildren finner slutordet ska den skriva ut hela kedjan genom ett anrop writechain(slutordsnod). Metoden writechain() ska skrivas rekursivt, så att man får ut kedjan med slutordet sist.

Om kön töms utan att någon lösning påträffats bör programmet meddela att det är omöjligt. Och när en lösning skrivits ut bör programmet avbryta körningen. Ett sätt att göra det är att definiera en egen Exception:

class SolutionFound(Exception):
    pass

och göra raise SolutionFound när lösningen hittats.

Betyg

Denna labb kan endast ge betyg E. Du måste lämna in den och redovisa den i tid för att få göra labbarna för högre betyg i period 2.

Redovisning

Labben lämnas in indivuellt med "Lämna in uppgift"-knappen högst upp på sidan, och ska redovisas muntligt av bägge gruppmedlemmarna. Skriv gruppmedlemmarnas namn i kommentarsfältet!

Vid redovisningen ska du kunna

  • visa upp och redogöra för de förberedande uppgifterna ovan,
  • rita och förklara skillnaden i datastrukturen jämfört med förra labben,
  • visa hur utskriften av lösningen fungerar med din rekursiva funktion

Ingen Kattis-inlämning för denna labb!

1664553600 09/30/2022 06:00pm
Inkludera en beskrivning
Ytterligare kommentarer:
Maxresultat för gradering till > poäng
Inkludera en bedömningstitel

Matris

Hitta matris
Inkludera en titel
Hitta en matris
Titel
Du har redan bedömt studenter med den här matrisen. Större ändringar kan påverka resultaten för deras uppgifter.
 
 
 
 
 
 
 
     
Det går inte att ändra en matris efter att du börjat använda den.  
Titel
Kriterier Bedömningar Poäng
Det här kriteriet är länkat till ett lärandemål Beskrivning av kriterium
tröskel: 5 poäng
Redigera beskrivning av kriterium Ta bort kriterium rad
5 till >0 poäng Full poäng blank
0 till >0 poäng Inga poäng blank_2
Det här området kommer användas av utvärderaren för kommentarer relaterade till det här kriteriet.
poäng
  / 5 poäng
--
Ytterligare kommentarer
Det här kriteriet är länkat till ett lärandemål Beskrivning av kriterium
tröskel: 5 poäng
Redigera beskrivning av kriterium Ta bort kriterium rad
5 till >0 poäng Full poäng blank
0 till >0 poäng Inga poäng blank_2
Det här området kommer användas av utvärderaren för kommentarer relaterade till det här kriteriet.
poäng
  / 5 poäng
--
Ytterligare kommentarer
Poängsumma: 5 av 5
Föregående
Nästa
Labb 4: Grafer, breddenförstsökning del 1 Labb 6: Sökning och sortering