SSpanSorbus
Робоче середовище з ШІ для коду

Мости неорієнтованого графа

Знайдіть мости простого неорієнтованого графа з максимум 32 вершинами.

● ● ●SpanSorbus●
Сценарії · Мости неорієнтованого графа ×
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)
✳Знайдіть мости простого неорієнтованого графа з максимум 32 вершинами.
✓ ЗміниПеревірте перед застосуванням ↗
Ілюстрація робочого середовища
01

Перевірте перед застосуванням

Порівняйте фактичну поведінку з очікуваним результатом. Якщо перевірка не проходить, з’ясуйте причину перед наступними змінами.

02

Моделі

Налаштуйте OpenAI-сумісний або Anthropic endpoint із базовою URL-адресою та API-ключем, якщо він потрібен. Перевірте з’єднання. Локальний сервер моделі має працювати; віддалені інструменти можуть окремо передавати дані.

03

Проєкт

Перевірте окремі компоненти й цикли, відхиляючи повторні ребра, петлі та хибні кінці без зміни вводу.

Сценарії

Мости неорієнтованого графа

Сценарії ↗
Сценарії
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 з обліковими даними за потреби. Виберіть модель ШІ без цензури, якщо кінцева точка її надає, перевіривши обмеження провайдера й доступні інструменти. Межі контексту залежать від моделі та сервера, тому надайте обмежений тестовий приклад і відповідних споживачів для зосередженого обговорення коду.

Запитання перед зміною коду зв’язності

Чи всі ребра поза циклом потребують однакової обробки?

Перевірте точне визначення графа й рішення, яке ухвалює програма. Використайте тестовий приклад із незалежно записаним очікуваним результатом. Перевірте припущення коду щодо напрямку, паралельних ребер і петель перед перенесенням неформального пояснення графа у програмну вимогу.

Навіщо тестувати незв’язний вхід?

Програма може містити кілька окремих компонентів, кожна зі своїми важливими ребрами. Обхід від одного вузла може пропустити інші. Додайте тест із кількома компонентами й порівняйте повний вихід, а не лише перше очікуване ребро.

Чи можна надати повторні ребра з імпортованих даних?

Спочатку перевірте контракт допустимого входу. Приклад очікує простий граф і відхиляє дублікати. Якщо імпортовані дані містять повторні ребра, вирішіть, чи імпортер має нормалізувати їх або повідомляти про помилку, перш ніж просити змінити процедуру графа.

Що має зберігати споживач під час показу ребра?

Визначте відповідність між внутрішніми ідентифікаторами вузлів і видимими користувачу мітками, а також порядок, потрібний для стабільного виходу. Перевірте ці відповідності разом зі зміною. Правильна внутрішня пара ребра все ще може стати оманливим результатом, якщо код виклику пов’яже її з неправильними мітками.

Завантажити для Windows ↗

SpanSorbus · Оновлено 2026-10-25