Dies ist eine alte Version des Dokuments!


  1. Der Agent baut einen Block, dreht sich nach links, baut 2 Blöcke, dreht sich nach links, baut 3 Blöcke… bis 6 Blöcke. Es entsteht eine linksdrehende Spirale. Wenn er aussen angekommen ist, baut er 10 Blöcke gerade aus und baut dann erneut eine Spirale - insgesamt 4 Mal. Erst wenn die Funktion baueSpirale() aufgerufen wird, beginnt er mit dem Bau, nicht bei der Definition der Funktion.
  2. <Code ausführen>
  3. agent.set_assist(PLACE_ON_MOVE, True) # bauen während er bewegt
    agent.set_assist(DESTROY_OBSTACLES,True) # Hindernisse autom. zerstören
    
    def baueSpirale(richtung):
       for zahl in range(1,7):  # zahl läuft von 1 bis 6
           agent.move(FORWARD,zahl)
           agent.turn(richtung)
         
    for i in range(4): # i läuft von 0 bis 3
        baueSpirale(LEFT)
        agent.move(FORWARD,10)
      
  1. Solange n grösser ist als 1 ruft die Funktion sich selbst auf, mit jeweils einem um 2 verkleinerten Argument. Zunächst wird rec1(10) aufgerufen. Dies zeichnet ein Quadrat der Grösse 10×10, danach teleportiert sich der Agent um 1 nach oben, 1 nach Osten und 1 nach Süden. Danach wird dieselbe Funktion aufgerufen mit dem Argument 8 und es wird ein Quadrat der Grösse 8×8 gezeichnet etc. bis 2×2 und wenn rec(0) aufgerufen wird, bricht das Programm ab. Es entsteht eine Pyramide.
  2. Die zweite Funktion rec2 ruft sich zweimal selber auf die verwendet nicht doppelt so viel Speicher, sondern exponentiell mehr Speicher. Am besten stellt man sich dies an einem Baumdiagramm vor: rec2(30,4) ruft rec2(29,6) und rec2(31,5) auf und diese beiden rufen jeweils wieder rec2 zweimal auf. Dies führt zu einem sehr hohen Speicherverbrauch.
  • ef/loesungen_beispiele.1663588841.txt.gz
  • Zuletzt geändert: 2022/09/19 14:00
  • von lehmannr