Python-Stack-Implementierung für Labyrinthnavigation mit Bewertung (feste Kapazität)Python

Python-Programme
Anonymous
 Python-Stack-Implementierung für Labyrinthnavigation mit Bewertung (feste Kapazität)

Post by Anonymous »

Ich bin ein Universitätsstudent und arbeite an einem Data Structures-Labor zur Simulation der Labyrinthnavigation mithilfe eines Stapels mit begrenztem Speicher.
Der Stapel muss eine feste Kapazität von 25 Zügen haben, und die Bewegungsregeln sind:
  • Vorwärts bewegen → Schieben (Richtung) → +10 Punkte
  • Dead-End → pop() → –5 Punkte
  • Aktuelle Position → peek/top
  • Versuche zu schieben, wenn der Stapel voll ist → Überlauf (–20 Punkte)
  • Versuche zu platzen, wenn der Stapel leer ist → Unterlauf
  • Ausgang erreicht → +50 Punkte
Beispiellicher Bewegungsablauf:

Code: Select all

push("Left")
push("Right")
pop()          # dead-end
push("Forward")
push("Left")
push(...)      # beyond stack capacity → test overflow
pop repeatedly # return to start
Wobei ich Hilfe benötige:
  • Stack-Implementierung mit einer Python-Liste (keine integrierten Stack-Bibliotheken)
  • Umgang mit Überlauf, Unterlauf und Bewertung
  • Drucken von Stack-Inhalten und Bewertung nach jedem move
Fehlender Code:

Ich habe mit der Definition einer Stack-Klasse begonnen, bin mir aber nicht sicher, wie ich Scoring- und Voll/Leer-Bedingungen richtig anwenden soll.

Code: Select all

class Stack:
def __init__(self, capacity=25):
self.items = []
self.capacity = capacity
self.score = 0

def push(self, direction):
# I am not sure how to handle scoring and overflow here
if len(self.items) < self.capacity:
self.items.append(direction)
# self.score += 10  → not sure if this is correct
else:
# Should I use return, print, or raise error here?
# self.score -= 20
pass

def pop(self):
# Confused about underflow and scoring
if len(self.items) > 0:
direction = self.items.pop()
# self.score -= 5
return direction
else:
# Stack is empty → underflow
return None

def peek(self):
if len(self.items) > 0:
return self.items[-1]
return None  # not sure if this is correct

# Not sure how to simulate the movement sequence correctly
maze_moves = ["Left", "Right", "dead-end", "Forward", "Left"]

# I want to simulate push/pop based on this list, but confused on logic
stack = Stack()
for move in maze_moves:
if move == "dead-end":
stack.pop()
else:
stack.push(move)

print(stack.items, stack.score)
Ich bin nicht sicher, ob ich die Bewertung und den Überlauf/Unterlauf innerhalb der Methoden richtig verwalte. Ich möchte die Regeln richtig anwenden (+10 Push, –5 Pop, –20 Overflow). Kann mir jemand helfen, diese Implementierung zu korrigieren und Schritt für Schritt zeigen, wie man das Labyrinth-Beispiel richtig simuliert?
Bevorzugte Sprache: Python

Danke!

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post