Begrenzte Postfix-Arithmetik
Werte ein bis 100 Postfix-Token mit begrenzten Ganzzahlen und den Operatoren +, -, * und // aus.
def postfix_value(tokens):
tokens = tuple(tokens)
if not 1 <= len(tokens) <= 100:
raise ValueError("tokens.limit")
stack = []
for token in tokens:
if type(token) is int and abs(token) <= 1000000000:
stack.append(token)
continue
if type(token) is not str or token not in ("+", "-", "*", "//") or len(stack) < 2:
raise ValueError("token.invalid")
right, left = stack.pop(), stack.pop()
if token == "//" and right == 0:
raise ValueError("division.zero")
value = (left + right if token == "+" else left - right if token == "-" else left * right if token == "*" else left // right)
if abs(value) > 10**18:
raise ValueError("result.range")
stack.append(value)
if len(stack) != 1:
raise ValueError("stack.remainder")
return stack[0]- Projekt
- Prüfe negative Division mit Abrundung und lehne Division durch null, einen unvollständigen Stapel oder Zwischenbeträge über 10**18 ab.
- Vor dem Anwenden prüfen
- Vergleichen Sie das tatsächliche Verhalten mit dem erwarteten Ergebnis. Klären Sie fehlgeschlagene Prüfungen vor weiteren Änderungen.
- Modelle
- Richten Sie einen OpenAI-kompatiblen oder Anthropic-Endpunkt mit Basis-URL und gegebenenfalls API-Schlüssel ein. Testen Sie die Verbindung. Ein lokaler Modellserver muss laufen; entfernte Werkzeuge können Daten separat übertragen.
def postfix_value(tokens):
tokens = tuple(tokens)
if not 1 <= len(tokens) <= 100:
raise ValueError("tokens.limit")
stack = []
for token in tokens:
if type(token) is int and abs(token) <= 1000000000:
stack.append(token)
continue
if type(token) is not str or token not in ("+", "-", "*", "//") or len(stack) < 2:
raise ValueError("token.invalid")
right, left = stack.pop(), stack.pop()
if token == "//" and right == 0:
raise ValueError("division.zero")
value = (left + right if token == "+" else left - right if token == "-" else left * right if token == "*" else left // right)
if abs(value) > 10**18:
raise ValueError("result.range")
stack.append(value)
if len(stack) != 1:
raise ValueError("stack.remainder")
return stack[0]Vor Parseränderungen definieren, was ein Ausdruck tun darf
Ausdrucksverarbeitung benötigt klare Grenzen, selbst bei kleinen Sprachen. StackSundial ist ein KI-Programmierarbeitsbereich für Windows, um diese Grenzen neben den Quelldateien zu besprechen. Öffnen Sie Ihr Projekt und lassen Sie das verbundene Modell akzeptierte Tokens, Auswertungsregeln und Fehlerbehandlung des Aufrufers untersuchen, bevor es eine Implementierungsänderung vorschlägt.
Eine mögliche Aufgabe ist die Prüfung eines Postfix-Auswerters für eine interne Berechnungsansicht. Geben Sie erlaubte Operatoren, numerische Grenzen und die Reaktion auf fehlerhafte Ausdrücke an. Lassen Sie den Assistenten feststellen, wo diese Anforderungen durchgesetzt werden, und gezielte Änderungen für fehlende Prüfungen vorschlagen. So geht es im Gespräch um die Pflege Ihrer Software statt bloß um die Erzeugung eines weiteren Auswerters.
Prüfen Sie Zurückweisungspfade genauso sorgfältig wie erfolgreiche Berechnungen. Führen Sie Projektprüfungen für fehlende Operanden, zusätzliche Ergebnisse, Division durch null und Werte außerhalb erlaubter Grenzen aus. Prüfen Sie die Operandenreihenfolge bei nicht kommutativen Operationen und stellen Sie sicher, dass der Aufrufer den vorgesehenen Fehler erhält. Akzeptieren Sie keine kürzere Auswertungsschleife, wenn sie den umgebenden Vertrag schwächt.
StackSundial unterstützt Verbindungen zu OpenAI-kompatiblen oder Anthropic-Endpunkten. Wählen Sie, sofern verfügbar, ein abliteriertes KI-Modell im Bewusstsein, dass Einschränkungen, Kontextgrenzen und Werkzeuge vom gewählten Dienst abhängen. Sein Codevorschlag bleibt ein Ausgangspunkt für Prüfung und eigene Verifizierung und ist kein Beleg dafür, dass der Interpreter einsatzbereit ist.
Vor der Annahme eines Patches für den Auswerter
- Welche Regeln gehören in die Aufgabenbeschreibung?
Nennen Sie erlaubte Tokens, Operandentypen, numerische Grenzen und Fehlerverhalten. Beziehen Sie den Aufrufer ein, der Fehler Nutzern anzeigt. Ohne diese Regeln kann ein Vorschlag gewöhnliche Beispiele korrekt berechnen und dennoch Ausdrücke akzeptieren, die die Anwendung zurückweisen sollte.
- Warum Subtraktion und Division ausdrücklich testen?
Ihre Ergebnisse hängen anders als gewöhnliche Additionen von der Operandenreihenfolge ab. Verwenden Sie Testfälle, deren Ergebnisse bei vertauschten Operanden sichtbar verschieden sind. Prüfen Sie neben der Reaktion auf einen Nulldivisor auch die von Ihrem Projekt benötigte Divisionskonvention.
- Sollten fehlerhafte Ausdrücke null zurückgeben?
Nur wenn dies eine ausdrückliche Anwendungsanforderung ist. Ein plausibler numerischer Ersatzwert kann fehlerhafte Eingaben verdecken. Lassen Sie den Assistenten einen klaren Zurückweisungspfad bewahren und prüfen Sie, wie der Aufrufer ein gültiges Nullergebnis von einem Fehler unterscheidet.
- Kann eine Tokenbegrenzung allein die Auswertung begrenzen?
Prüfen Sie alle vom Projekt benötigten Grenzen, einschließlich Zwischenwerten und zulässiger Eingabestruktur. Eine Tokenanzahl deckt nur einen Teil dieses Vertrags ab. Testen Sie die relevanten Zurückweisungspfade nach jeder Änderung der Auswertungsschleife.
StackSundial · Aktualisiert 2026-10-25