Głębokość zagnieżdżenia nawiasów
Wyznacz maksymalną głębokość tekstu złożonego wyłącznie z nawiasów okrągłych, kwadratowych i klamrowych.
def bracket_depth(text):
if type(text) is not str:
raise ValueError("bracket.type")
stack, peak = [], 0
pairs = {')': '(', ']': '[', '}': '{'}
for char in text:
if char in "([{":
stack.append(char)
peak = max(peak, len(stack))
elif char in pairs:
if not stack or stack.pop() != pairs[char]:
raise ValueError("bracket.order")
else:
raise ValueError("bracket.alphabet")
if stack:
raise ValueError("bracket.unclosed")
return peakSprawdź przed zastosowaniem
Porównaj rzeczywiste zachowanie z oczekiwanym wynikiem. Jeśli sprawdzenie się nie powiedzie, wyjaśnij przyczynę przed kolejnymi zmianami.
Modele
Dodaj endpoint zgodny z OpenAI lub Anthropic, podając bazowy URL i klucz API, jeśli jest wymagany. Sprawdź połączenie. Lokalny serwer modelu musi działać; zdalne narzędzia mogą przesyłać dane oddzielnie.
Projekt
Przyjmij pusty tekst z głębokością zero, ale odrzuć skrzyżowane pary, niedopasowane nawiasy i wszystkie inne znaki, także spacje.
def bracket_depth(text):
if type(text) is not str:
raise ValueError("bracket.type")
stack, peak = [], 0
pairs = {')': '(', ']': '[', '}': '{'}
for char in text:
if char in "([{":
stack.append(char)
peak = max(peak, len(stack))
elif char in pairs:
if not stack or stack.pop() != pairs[char]:
raise ValueError("bracket.order")
else:
raise ValueError("bracket.alphabet")
if stack:
raise ValueError("bracket.unclosed")
return peakNiech reguły walidacji będą jasne dla kolejnego wywołującego
BracketMast udostępnia programowanie wspomagane AI w środowisku Windows, w którym folder projektu pozostaje powiązany z rozmową o kodzie. Użyj go, gdy zmiana walidacji wymaga większej precyzji niż polecenie obsługi błędnych danych. Opisz akceptowany język, warunki błędów i to, co powinien otrzymać kod wywołujący, a następnie poproś asystenta o analizę istniejącej implementacji przed zaproponowaniem poprawki.
Zadanie dotyczące bracket_depth.py może skupiać się na tym, czy dane zawierają wyłącznie obsługiwane nawiasy, czy ich kolejność jest prawidłowa i co oznacza pusta wartość. Poproś o poprawkę i przykłady ujawniające te decyzje. Uwzględnij funkcję i jej wywołania: zmiana akceptowanego alfabetu może zmienić zachowanie, nawet jeśli zrównoważone nawiasy nadal działają. Dzięki temu przegląd walidacji dotyczy kontraktu aplikacji, a nie pojedynczej udanej demonstracji.
Po przeglądzie propozycji uruchom kontrole projektu dla akceptowanych ciągów, przedwczesnych nawiasów zamykających i niedokończonych danych. Wykorzystaj błędy do doprecyzowania prośby i zachowaj uzgodnioną obsługę błędów. BracketMast łączy się z obsługiwanymi punktami końcowymi zgodnymi z OpenAI lub Anthropic, z uwierzytelnieniem, gdy jest wymagane. Możesz wybrać model określany jako nieograniczony, jeśli punkt końcowy go oferuje; nadal obowiązują warunki dostawcy, a limity kontekstu i narzędzia zależą od modelu i serwera. To testy ustalają, czy wynikowy kod spełnia kontrakt.
Ustalanie danych akceptowanych przez walidator
Czy nieobsługiwane znaki ignorować, czy odrzucać?
Zdecyduj świadomie na podstawie kontraktu wywołania. Walidator ciągów złożonych wyłącznie z nawiasów może je odrzucać, a parser kodu potrzebuje innych reguł. Wyjaśnij asystentowi tę różnicę przed zaakceptowaniem zmiany, która po cichu pomija nieoczekiwane znaki.
Jak traktować pustą wartość?
Określ, czy w aplikacji jest poprawna, oznacza brak danych czy błąd. Sprawdź wynik funkcji i jego interpretację przez kod wywołujący. Konwencji pustych danych nie należy pozostawiać przypadkowemu zachowaniu pętli.
Czym komunikat błędu różni się od kontraktu błędu?
Kontrakt obejmuje warunek niepowodzenia, sposób jego reprezentacji i dalsze działanie kodu wywołującego. Rozpatruj te decyzje łącznie; sama poprawa tekstu może pozostawić niespójne wartości zwracane lub nieobsłużony wyjątek w aplikacji.
Czy można ponownie użyć walidatora po zmianie akceptowanych danych?
Najpierw przejrzyj pozostałe wywołania. Szerszy alfabet lub inny typ błędu może wpłynąć na kod zależny od wcześniejszego zachowania. Jawnie określ zgodność i dodaj kontrole tych zależności przed ponownym użyciem zmienionej funkcji pomocniczej.
BracketMast · Zaktualizowano 2026-10-25