Hilfe bei PythonKara?

1 Antwort

Ich habe zwar noch nie mit Kara gearbeitet, aber ich würde das Problem eher mit Reihen und nicht mit Umdrehungen lösen. Das wäre um einiges einfacher, da Kara nur ein geringes Sensorraster hat und man nur schwer lokalisieren kann, wo man sich gerade befindet.

Ich habe für dich mal ein Beispielscript zusammengeschrieben.

def backwards():
    if kara.treeLeft() and kara.treeFront():
        return True
    for i in range(2):
        kara.turnLeft()
    while not kara.treeFront():
        kara.move()
    kara.turnRight()
    kara.move()
    kara.turnRight()
        
def row():
    while kara.onLeaf() and not kara.treeFront():
        kara.removeLeaf()
        kara.move()
    if kara.onLeaf():
        kara.removeLeaf()
   
kara.move()
kara.move()
kara.turnLeft()

for i in range(2):
    while not kara.treeFront():
      kara.move()
    kara.turnRight()
kara.turnRight()

end = False
while not end:
    row()
    end = backwards()

Es ist zwar nicht perfekt, aber du kannst vielleicht die Theorie dahinter verstehen (man kann bestimmt auch deine Methode verwenden, aber es ist schwieriger) und so auch dein eigenes Programm schreiben.

Ich hoffe ich konnte dir weiterhelfen und wenn du noch Fragen hast dann kannst du mich natürlich fragen.

LG

Woher ich das weiß:Hobby

Kongy69  13.10.2022, 10:22

Hallo ich habe auch so eine Aufgabe aber habe noch nicht so komplexe Schreibweisen hätten sie auch eine nicht so komplexe Lösung

LG und Vielen Dank schon mal

1
Hanibal545  13.10.2022, 13:48
@Kongy69

Was ich dir geschrieben habe ist jetzt auch nicht perfekt. Das ist nur ein Beispiel/Denkhilfe, wie man das Problem lösen könnte

1
Kongy69  13.10.2022, 12:30

Könnten sie mir vielleicht eine Lösung geben ?

1
Hanibal545  13.10.2022, 13:47
@Kongy69

Du kannst es auch ohne Funktionen und for-Schleifen lösen.

kara.move()
kara.move()
kara.turnLeft()

while not kara.treeFront():
  kara.move()
kara.turnRight()
    
while not kara.treeFront():
  kara.move()
kara.turnRight()
kara.turnRight()

end = False
while not end:
    while kara.onLeaf() and not kara.treeFront():
        kara.removeLeaf()
        kara.move()
    if kara.onLeaf():
        kara.removeLeaf()
   
    if kara.treeLeft() and kara.treeFront():
        break
    for i in range(2):
        kara.turnLeft()
    while not kara.treeFront():
        kara.move()
    kara.turnRight()
    kara.move()
    kara.turnRight()
0