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
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
- 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
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)
Bevorzugte Sprache: Python
Danke!
Mobile version