Глибина вкладеності дужок
Знайдіть максимальну глибину рядка лише з круглих, квадратних і фігурних дужок.
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 peakПеревірте перед застосуванням
Порівняйте фактичну поведінку з очікуваним результатом. Якщо перевірка не проходить, з’ясуйте причину перед наступними змінами.
Моделі
Налаштуйте OpenAI-сумісний або Anthropic endpoint із базовою URL-адресою та API-ключем, якщо він потрібен. Перевірте з’єднання. Локальний сервер моделі має працювати; віддалені інструменти можуть окремо передавати дані.
Проєкт
Прийміть порожній рядок із глибиною нуль, але відхиліть перехрещені пари, непарні дужки та будь-які інші символи, зокрема пробіли.
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 peakЗробіть правила валідації зрозумілими для наступного виклику
BracketMast переносить розробку за допомогою ШІ в середовище Windows, де тека проєкту й розмова про код залишаються пов’язаними. Використовуйте його, коли зміна валідації потребує більшої точності, ніж прохання обробляти некоректні дані. Опишіть допустиму мову вхідних даних, умови помилок і те, що має отримувати код виклику, а потім попросіть помічника вивчити наявну реалізацію, перш ніж пропонувати виправлення.
Завдання для bracket_depth.py може стосуватися того, чи містить вхідний рядок лише підтримувані дужки, чи правильний їхній порядок і що означає порожнє значення. Попросіть виправлення та приклади, що розкривають ці рішення. Розглядайте функцію разом із кодом, що її викликає: зміна допустимого алфавіту може змінити поведінку, навіть якщо збалансовані рядки й далі працюють. Так перевірка валідації стосуватиметься контракту застосунку, а не однієї успішної демонстрації.
Переглянувши пропозицію, виконайте перевірки проєкту для допустимих рядків, передчасних закривальних дужок і незавершених даних. Уточнюйте запит на основі невдач і зберігайте погоджену поведінку при помилках. BracketMast підключається до підтримуваних OpenAI-сумісних кінцевих точок або кінцевих точок Anthropic з обліковими даними, коли вони потрібні. Ви можете вибрати модель, описану як модель без обмежень, якщо ваша кінцева точка її пропонує; умови постачальника все одно діють, а місткість контексту й інструменти залежать від моделі та сервера. Ваші тести визначають, чи відповідає отриманий код контракту.
Визначення того, що має приймати валідатор
Непідтримувані символи слід ігнорувати чи відхиляти?
Виберіть свідомо, відповідно до контракту коду виклику. Валідатор рядків лише з дужками може їх відхиляти, тоді як синтаксичний аналізатор коду потребує інших правил. Поясніть цю відмінність помічнику, перш ніж приймати зміну, яка мовчки пропускає неочікувані символи.
Як має оброблятися порожнє значення?
Визначте, чи воно є допустимим, відсутнім або помилковим у вашому застосунку. Потім перевірте і результат функції, і його тлумачення кодом виклику. Домовленість щодо порожніх даних не має залежати від випадкової поведінки циклу.
Чим повідомлення про помилку відрізняється від контракту помилок?
Контракт охоплює умову виникнення помилки, спосіб її подання та подальші дії коду виклику. Перевіряйте ці рішення разом; саме лише поліпшення формулювання може залишити неузгоджені повернуті значення або необроблений виняток у застосунку.
Чи можна повторно використовувати валідатор після зміни допустимих даних?
Спочатку вивчіть інший код, що його викликає. Ширший допустимий алфавіт або інший тип помилки може вплинути на код, який покладався на стару поведінку. Явно визначте сумісність і додайте перевірки цих залежностей перед повторним використанням зміненої допоміжної функції.
BracketMast · Оновлено 2026-10-25