lehrkraefte:blc:informatik:glf25:labyrinthe:wegfindung

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
lehrkraefte:blc:informatik:glf25:labyrinthe:wegfindung [2026/02/16 07:58] – [Wegfindungsalgorithmen] Ivo Blöchligerlehrkraefte:blc:informatik:glf25:labyrinthe:wegfindung [2026/03/17 08:58] (current) – [Dictionary nach Markierungen] Ivo Blöchliger
Line 4: Line 4:
  
 <code txt> <code txt>
-aktuelle Position = Startposition +aktuelle Position = Startposition 
-Wiederhole: +Wiederhole: 
-  Alle Nachbarfelder betrachten +#   Alle Nachbarfelder der aktuellen Position betrachten 
-  wenn ein Nachbar mit 'Z' markiert ist: +#   wenn ein Nachbar mit 'Z' markiert ist: 
-    Beende mit "Fertig, Weg gefunden!" +#     Beende mit "Fertig, Weg gefunden!" 
-  wenn es einen unmarkierten Nachbar nb gibt: +#   wenn es einen unmarkierten Nachbar nb gibt: 
-    markiere aktuelle Position mit 'o' +#     markiere aktuelle Position mit 'o' 
-    aktuelle Position ist neu nb +#     aktuelle Position ist neu nb 
-  sonst: +#   sonst: 
-    aktuelles Feld mit 'X' markieren +#     aktuelles Feld mit 'X' markieren 
-    wenn es einen Nachbar nb mit 'o' markiert gibt: +#     wenn es einen Nachbar nb mit 'o' markiert gibt: 
-      aktuelles Feld ist neu nb +#       aktuelles Feld ist neu nb 
-    sonst: +#     sonst: 
-       Beende mit "Fertig, es gibt keinen Weg"+#        Beende mit "Fertig, es gibt keinen Weg"
 </code> </code>
 ===== Nützliche Code Schnipsel ===== ===== Nützliche Code Schnipsel =====
Line 61: Line 61:
  
  
 +==== Dictionary nach Markierungen ====
 +Idee: Für jede vorhandene Markierung um eine aktuelle Zelle generiert man eine Liste mit Zellen mit dieser Markierung, z.B.
 +''{'X':[a,b], '.':[c], 'S':[d]}'', .d.h. es gibt zwei Nachbarszellen a,b, die mit 'X' markiert sind, eine mit '.' und eine mit 'S'.
 +
 +<code python>
 +nachbarn = {}   # Leerer dictionary
 +aktuell = l[2,4]                    # eine Zelle des Labyrinths
 +for dir in range(4):                # Alle Richtungen durchgehen
 +    if aktuell.offen[dir]:          # Wand in die Richtung ist offen
 +        nb = aktuell.nachbar(dir)   # Nachbarszelle (oder None, wenn es diese nicht gibt)
 +        if nb!=None:                # Nur wenn es diese Zelle auch gibt (Mauern am Rand könnten auch offen sein)
 +            if nb.mark in nachbarn: # Markierung gibt es schon
 +                nachbarn[nb.mark].append(nb)        # Zur List hinzufügen
 +            else:
 +                nachbarn[nb.mark] = [nb]            # Sonst neue Liste mit einem Eintrag
 +                
 +</code>
 +==== Testen, ob ein Dictionary einen Schlüssel hat ====
 +<code python>
 +d = {"foo":2, "bar":17}
 +if "foo" in d:
 +   print("Schlüssel foo existiert")
 +if not "baz" in d:
 +   print("Schlüssel baz existiert nicht")
 +</code>
  
  • lehrkraefte/blc/informatik/glf25/labyrinthe/wegfindung.1771228729.txt.gz
  • Last modified: 2026/02/16 07:58
  • by Ivo Blöchliger