Uygulamadan önce inceleyin
Gerçek davranışı beklenen sonuçla karşılaştırın. Bir kontrol başarısız olursa yeni değişikliklerden önce nedenini araştırın.
En çok 32 düğümlü basit yönsüz grafın köprülerini bulun.
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)Gerçek davranışı beklenen sonuçla karşılaştırın. Bir kontrol başarısız olursa yeni değişikliklerden önce nedenini araştırın.
Temel URL ve gerekiyorsa API anahtarıyla OpenAI uyumlu veya Anthropic endpoint yapılandırın. Bağlantıyı test edin. Yerel model sunucusu çalışıyor olmalıdır; uzak araçlar ayrıca veri aktarabilir.
Ayrık bileşenleri ve döngüleri sınayın; girdiyi değiştirmeden yinelenen kenarları, öz döngüleri ve geçersiz uçları reddedin.
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, bağlantılılık mantığını gerçek kaynak dosyaları bağlamında incelemek için bir Windows kodlama çalışma alanıdır. Uygulamanızın graf sonucundan hareketle verdiği kararı açıklayarak başlayın. Bağlı modelden dolaşma veya çıktıda değişiklik istemeden önce girdi gösterimini ve tüketicisini incelemesini isteyin.
Yararlı bir görev, çıkarıldığında test verisinin bağlantılı bir parçasını ayıran bir kenarı araştırmak için bridge_edges.py kullanabilir. Karşılaştırma için döngülü bir graf ekleyin ve beklenen kenar listesini belirtin. Önerilen değişikliğin sessizce farklı türde girdi kabul etmemesi için basit, yönsüz graf varsayımlarını uygulamayla birlikte inceleyin.
Yazılım çalışması yordam döndükten sonra devam eder. Çağıran kodun düğümleri nasıl adlandırdığını, kenarları nasıl sunduğunu ve reddedilen verileri nasıl işlediğini inceleyin; ardından bağlantısız ve boş test verileriyle proje denetimlerinizi çalıştırın. İncelemeyi bu gözlenebilir sonuçlara bağlı tutun. Doğru bir graf açıklaması, uygulamanın gerçek verilerini beklenen gösterime eşlediğini kanıtlamaz.
SpanSorbus, gerektiğinde kimlik bilgileriyle desteklenen OpenAI uyumlu veya Anthropic uç noktaları üzerinden bağlanır. Sağlayıcının kısıtlamalarını ve kullanılabilir araçları denetleyerek uç nokta sunuyorsa sansürsüz bir yapay zeka modeli seçin. Bağlam sınırları modele ve sunucuya bağlıdır; bu nedenle odaklı bir kodlama görüşmesi için sınırlı bir test verisi ve ilgili tüketicileri sağlayın.
Kesin graf tanımını ve uygulamanızın verdiği kararı denetleyin. Beklenen sonucu bağımsız yazılmış bir test verisi kullanın. Gayriresmî bir graf açıklamasını yazılım gereksinimine taşımadan önce kodun yön, paralel kenarlar ve öz döngüler hakkındaki varsayımlarını inceleyin.
Uygulama, her birinin kendi ilgili kenarları olan birkaç ayrı bileşen içerebilir. Tek düğümden başlayan dolaşma diğerlerini kaçırabilir. Birden fazla bileşenli test verisi ekleyin ve yalnızca ilk beklenen kenarı değil, çıktının tamamını karşılaştırın.
Önce kabul edilen girdi sözleşmesini inceleyin. Örnek basit bir graf bekler ve tekrarları reddeder. İçe aktarılan veride yinelenen kenarlar varsa graf yordamında değişiklik istemeden önce içe aktarıcının bunları normalleştirmesine mi yoksa hata bildirmesine mi karar verin.
Dahili düğüm tanımlayıcıları ile kullanıcının gördüğü etiketler arasındaki eşlemeyi ve sabit çıktı için gereken sıralamayı tanımlayın. Önerilen düzenlemeyle bu eşlemeleri inceleyin. Doğru bir dahili kenar çifti, çağıran kod onu yanlış etiketlerle ilişkilendirirse yine de yanıltıcı sonuca dönüşebilir.
SpanSorbus · Güncellendi 2026-10-25