def spanning_forest(count, edges):
if type(count) is not int or not 0 <= count <= 64 or type(edges) is not list or len(edges) > 1024:
raise ValueError("forest.input")
ordered = []
for edge in edges:
if type(edge) not in (list, tuple) or len(edge) != 3 or any(type(x) is not int for x in edge):
raise ValueError("forest.edge")
a, b, weight = edge
if not 0 <= a < count or not 0 <= b < count or abs(weight) > 10**9:
raise ValueError("forest.bounds")
ordered.append((weight, min(a, b), max(a, b)))
parent = list(range(count))
def root(node):
while parent[node] != node:
parent[node] = parent[parent[node]]
node = parent[node]
return node
selected, total = [], 0
for weight, a, b in sorted(ordered):
x, y = root(a), root(b)
if x != y:
parent[x] = y
selected.append((a, b, weight))
total += weight
return total, selected
✳En küçük kapsayan ormanlar
✓ DeğişikliklerUygulamadan önce inceleyin ↗
Çalışma alanı çizimi
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.
Modeller
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.
Proje
Ayrık düğümleri, paralel kenarları, döngü kenarlarını ve belirli eşitlik seçimlerini test edip geçersiz uçları ve Boolean değerleri girdiyi değiştirmeden reddedin.
def spanning_forest(count, edges):
if type(count) is not int or not 0 <= count <= 64 or type(edges) is not list or len(edges) > 1024:
raise ValueError("forest.input")
ordered = []
for edge in edges:
if type(edge) not in (list, tuple) or len(edge) != 3 or any(type(x) is not int for x in edge):
raise ValueError("forest.edge")
a, b, weight = edge
if not 0 <= a < count or not 0 <= b < count or abs(weight) > 10**9:
raise ValueError("forest.bounds")
ordered.append((weight, min(a, b), max(a, b)))
parent = list(range(count))
def root(node):
while parent[node] != node:
parent[node] = parent[parent[node]]
node = parent[node]
return node
selected, total = [], 0
for weight, a, b in sorted(ordered):
x, y = root(a), root(b)
if x != y:
parent[x] = y
selected.append((a, b, weight))
total += weight
return total, selected
Yapay zekâ ile kod çalışma alanı
Bağlantısız girdileri çizge yazılımı sözleşmesine dahil edin
Forellin, geliştiricilere çizge işleme kodunu ona dayanan uygulamayla birlikte incelemek için bir Windows yapay zekâ kodlama çalışma alanı verir. Proje görüşmesine girdi gösterimi ve çağıran kodun ihtiyaç duyduğu sonuçla başlayın. Asistandan değişiklik önermeden önce uygulamanın eksik bağlantıları, yinelenen kenarları ve çıktı sırasını nasıl işlediğini incelemesini isteyin. Bu seçimler, özellik üzerinde temel hesaplama kadar belirleyicidir.
spanning_forest.py bağlamı, bağlantısız düğümlerin her şeyi bağlamada başarısızlık sayılmak yerine beklendiği bir görev önerir. Modelden hangi kenarların seçildiğini ve toplamın bunlarla ilişkisini açıklamasını isteyebilirsiniz. Yanıtı elle kontrol edebileceğiniz küçük bir çizgeyle karşılaştırın; sonuç sözleşmesi veya doğrulama ayar gerektiriyorsa odaklı bir yama isteyin.
Bağlantılı ve bağlantısız girdilerde proje kontrollerini çalıştırın ve çevreleyen uygulamanın yalıtılmış düğümleri nasıl temsil ettiğini inceleyin. Birden çok geçerli sonuç varsa tüketici için belirlenimci seçimin önemini kararlaştırın. Forellin, gerektiğinde kimlik bilgileriyle desteklenen OpenAI uyumlu veya Anthropic uç noktalarını kabul eder. Filtresiz yapay zekâ modeli sunulduğunda seçilebilir; ancak model kısıtlamaları, araçlar ve bağlam kapasitesi yapılandırılan hizmete bağlıdır. Çalışma alanı araştırmanızı destekler; kodu kabul etmenizi çizge örnekleri ve test sonuçları destekler.
Çizge işleme değişikliği için sorular
Bağlantısız girdi her zaman reddedilmeli mi?
Yalnızca uygulama tek bir bağlantılı yapı gerektiriyorsa. Orman sonucunda bağlantısız bileşenler geçerli olabilir. Asistanın girdinin hiç sağlamadığı bağlantıları zorlamaması için düzeltme istemeden önce bu ayrımı belirtin.
Birden çok kenar seçimi aynı toplamı verirse ne olur?
Herhangi bir geçerli optimumun kabul edilip edilmediğini veya tüketicinin tekrarlanabilir seçime ihtiyaç duyup duymadığını kararlaştırın. Sıralama veya eşitlik davranışı önemliyse tesadüfi girdi sırasına dayanmak yerine beklenen sonuca dahil edin ve açıkça test edin.
Bildirilen toplamı nasıl kontrol ederim?
Küçük bir örnek kullanıp seçilen kenarları ağırlıklarının toplamıyla bağımsız karşılaştırın. Çağıran kodun yalnızca toplamı mı yoksa seçilen yapıyı mı beklediğini de inceleyin; bu çıktılar farklı uygulama davranışlarını destekler.
Yalıtılmış düğümler neden ayrı test edilmeli?
Girdi bunları içerse bile yalnızca kenarlardan oluşan sonuçtan kaybolabilirler. Çevreleyen gösterimi kontrol edin ve seçilen kenarların her köşeyi tanımladığını varsaymak yerine uygulamanın bu düğümleri nasıl saklayıp göstereceğini kararlaştırın.