Перевірте перед застосуванням
Порівняйте фактичну поведінку з очікуваним результатом. Якщо перевірка не проходить, з’ясуйте причину перед наступними змінами.
Знайдіть мости простого неорієнтованого графа з максимум 32 вершинами.
def bridge_edges(n, edges):
if type(n) is not int or not 0 <= n <= 32:
raise ValueError("vertex count")
if type(edges) is not list or len(edges) > 496:
raise ValueError("edge count")
graph = [set() for _ in range(n)]
for edge in edges:
if type(edge) is not tuple or len(edge) != 2 or any(
type(x) is not int or not 0 <= x < n for x in edge):
raise ValueError("edge endpoints")
a, b = edge
if a == b or b in graph[a]:
raise ValueError("simple undirected edges")
graph[a].add(b); graph[b].add(a)
timer, found = 0, []
entered, low = [-1] * n, [0] * n
def visit(v, parent):
nonlocal timer
entered[v] = low[v] = timer; timer += 1
for u in sorted(graph[v]):
if u == parent:
continue
if entered[u] < 0:
visit(u, v); low[v] = min(low[v], low[u])
if low[u] > entered[v]:
found.append(tuple(sorted((v, u))))
else:
low[v] = min(low[v], entered[u])
for v in range(n):
if entered[v] < 0:
visit(v, -1)
return sorted(found)Порівняйте фактичну поведінку з очікуваним результатом. Якщо перевірка не проходить, з’ясуйте причину перед наступними змінами.
Налаштуйте OpenAI-сумісний або Anthropic endpoint із базовою URL-адресою та API-ключем, якщо він потрібен. Перевірте з’єднання. Локальний сервер моделі має працювати; віддалені інструменти можуть окремо передавати дані.
Перевірте окремі компоненти й цикли, відхиляючи повторні ребра, петлі та хибні кінці без зміни вводу.
def bridge_edges(n, edges):
if type(n) is not int or not 0 <= n <= 32:
raise ValueError("vertex count")
if type(edges) is not list or len(edges) > 496:
raise ValueError("edge count")
graph = [set() for _ in range(n)]
for edge in edges:
if type(edge) is not tuple or len(edge) != 2 or any(
type(x) is not int or not 0 <= x < n for x in edge):
raise ValueError("edge endpoints")
a, b = edge
if a == b or b in graph[a]:
raise ValueError("simple undirected edges")
graph[a].add(b); graph[b].add(a)
timer, found = 0, []
entered, low = [-1] * n, [0] * n
def visit(v, parent):
nonlocal timer
entered[v] = low[v] = timer; timer += 1
for u in sorted(graph[v]):
if u == parent:
continue
if entered[u] < 0:
visit(u, v); low[v] = min(low[v], low[u])
if low[u] > entered[v]:
found.append(tuple(sorted((v, u))))
else:
low[v] = min(low[v], entered[u])
for v in range(n):
if entered[v] < 0:
visit(v, -1)
return sorted(found)SpanSorbus — робоче середовище програмування у Windows для дослідження логіки зв’язності в контексті реальних файлів коду. Спочатку опишіть рішення, яке програма ухвалює за результатом графа. Попросіть підключену модель перевірити подання входу та його споживача, перш ніж просити змінити обхід або вихід.
Корисне завдання може використати bridge_edges.py для дослідження ребра, видалення якого розділяє зв’язну частину тестового графа. Додайте для порівняння граф із циклом і зазначте очікуваний список ребер. Перевірте припущення простого неорієнтованого графа разом із реалізацією, щоб зміна непомітно не дозволила інший тип входу.
Робота над програмою триває після повернення результату процедурою. Дослідіть, як код виклику називає вузли, показує ребра й обробляє відхилені дані, а потім запустіть перевірки проєкту з незв’язними та порожніми тестовими графами. Пов’язуйте перевірку з цими спостережуваними результатами. Правильне пояснення графа не доводить, що програма відображає фактичні дані в очікуване подання.
SpanSorbus підключається через підтримувані кінцеві точки, сумісні з OpenAI, або Anthropic з обліковими даними за потреби. Виберіть модель ШІ без цензури, якщо кінцева точка її надає, перевіривши обмеження провайдера й доступні інструменти. Межі контексту залежать від моделі та сервера, тому надайте обмежений тестовий приклад і відповідних споживачів для зосередженого обговорення коду.
Перевірте точне визначення графа й рішення, яке ухвалює програма. Використайте тестовий приклад із незалежно записаним очікуваним результатом. Перевірте припущення коду щодо напрямку, паралельних ребер і петель перед перенесенням неформального пояснення графа у програмну вимогу.
Програма може містити кілька окремих компонентів, кожна зі своїми важливими ребрами. Обхід від одного вузла може пропустити інші. Додайте тест із кількома компонентами й порівняйте повний вихід, а не лише перше очікуване ребро.
Спочатку перевірте контракт допустимого входу. Приклад очікує простий граф і відхиляє дублікати. Якщо імпортовані дані містять повторні ребра, вирішіть, чи імпортер має нормалізувати їх або повідомляти про помилку, перш ніж просити змінити процедуру графа.
Визначте відповідність між внутрішніми ідентифікаторами вузлів і видимими користувачу мітками, а також порядок, потрібний для стабільного виходу. Перевірте ці відповідності разом зі зміною. Правильна внутрішня пара ребра все ще може стати оманливим результатом, якщо код виклику пов’яже її з неправильними мітками.
SpanSorbus · Оновлено 2026-10-25