Filozoflar uzun zamandır Tramvay sorununu düşünüyorlar . Ne yazık ki, henüz hiçbir insan bu sorunu çözmedi. Neyse ki, programcılar olarak bizim için sorunu çözmek için bilgisayarları kullanabiliriz!
Giriş
İşletme programı (en az bir kenarı ile giriş olarak yönlendirilmiş grafik bir (sıvılan) alacak x
kadar y
herhangi biri için, x
ve y
), belirli bir düğüm ile, ve her bir kenarına bağlanmış bir negatif olmayan bir tamsayı (o parçaya bağlı insan sayısını temsil eder) . Ayrıca, her düğümün en az bir çıkış kenarı vardır.
Araba, belirlenen düğümden başlar. Her dönüş, eğer araba düğümde x
ise, faydacı bir kenar seçer (x,y)
. O kenardaki insanlar ölüyor ve el arabası şimdi kenarda y
. Bu süreç sonsuza dek sürüyor.
Kenar eğer insanlar sadece bu yüzden bir kez ölebilir Not (x,y)
vardır n
bunların üzerine ona bağlı insanları ve tramvay çalışır, hala sadece sonuçlanacaktır, 100 kez, demek n
ölümler.
Çıktı
Faydacı, seçimlerini ölen insanların sayısını en aza indirecek şekilde yapar (sadece sınırlı insanlar olduğu için sınırlı olması garanti edilir). Programınız bu numarayı verecektir.
Giriş biçimi
Giriş grafiğini istediğiniz herhangi bir şekilde alabilirsiniz. Örneğin, bunu bir matris olarak alabilir ve belirtilen düğümü 0 etiketli olarak sayabilirsiniz. Ya da benzer bir şey kullanabilirsiniz x1,y1,n1;x2,y2,n2;...
. Örneğin 0,a,0;a,b,5;a,c,1;b,b,0;c,c,0
, standart tramvay problemini temsil etmek (sonunda ilmeklerle).
testcases
0,a,0;a,b,5;a,c,1;b,b,0;c,c,0
-> 1 (0'dan a'ya, a'dan c'ye geçin (bir kişiyi öldürür) ve ardından arabayı c'den c'ye çevirmeye devam edin).0,0,1;0,a,5;a,a,0
-> 1 (0'dan 0'a kadar devam edin, tüm sonsuzluk için 1 kişiyi çalıştırın),0,a,5;0,b,1;a,a,1;b,b,6
-> 6 (0 -> a -> a -> a -> a -> ... (b'ye gitmenin açgözlü çözümünün yanlış olacağını unutmayın))0,a,1;0,b,5;a,b,1;b,a,1
-> 3 (0 -> a -> b -> a -> b -> ...)0,a,1;0,b,1;a,a,0;b,b,0
-> 1 (Faydacıların her ikisinin sadece bir kişiyi öldürmesi için alabileceği iki farklı seçenek olduğunu unutmayın)
Bu kod golf , bu yüzden en kısa cevap kazanır! İyi şanslar.
Notlar: Hasta döngü döngüleri olmayacak ve çok parçalı sürüklenme yasaklanmıştır. Ayrıca, bu sorunu Asimov'un üç yasası (/ s) açısından düşünmeyi tercih etsem de, Peter Taylor sandbox'ta bu sorunun matematiksel olarak en düşük ağırlıktaki rho'yu (döngüler kendi kendine geri yol) bulma ile eşdeğer olduğunu belirtti. .