Korsanların rasyonel olarak altın paraları belirli kurallara göre böltüğü mevcut bir "oyun" var. Wikipedia'dan alıntı :
5 rasyonel korsan var, A, B, C, D ve E. 100 altın sikke buluyorlar. Onları nasıl dağıtacağına karar vermeliler.
Korsanların kesin bir kıdem sırası var: A, C'den üstün olan, D'den üstün, E'den üstün olan B'den üstündür.
Korsan dünyasının dağıtım kuralları şu şekildedir: en kıdemli korsan para dağıtımı önermelidir. Önerici de dahil olmak üzere korsanlar bu dağılımı kabul edip etmeyeceklerine oy verirler. Eşit oy durumunda teklif sahibinin oy kullanma hakkı vardır. Dağıtım kabul edilirse, paralar dağıtılır ve oyun sona erer. Aksi takdirde, öneri korsan gemisinden denize atılır ve ölür ve bir sonraki en kıdemli korsan sisteme tekrar başlamak için yeni bir teklifte bulunur.
Korsanlar kararlarını üç faktöre dayandırıyor. Her şeyden önce, her korsan hayatta kalmak istiyor. İkincisi, hayatta kalma göz önüne alındığında, her korsan her birinin aldığı altın sikke sayısını en üst düzeye çıkarmak istiyor. Üçüncüsü, diğer tüm sonuçlar eşit olursa, her korsan başka bir denize atmayı tercih eder. Korsanlar birbirlerine güvenmezler ve korsanlar arasında her korsan için bir dizi altın para veren önerilen bir dağıtım planı dışında ne vaatte bulunurlar ne de onurlandırmazlar.
Meydan okuma
Girdi olarak bir tamsayı alın n
, 1 <= n <= 99, burada n
korsan sayısı - ve ilk korsandan başlayarak jetonların dağılımını çıkarın.
Test senaryoları (ilk satır girilir; ikinci çıkış):
1
100
2
100 0
3
99 0 1
5
98 0 1 0 1
Bu kod golf , bu nedenle bayttaki en kısa çözüm kazanır.
n < 100
? Aşırı personel, yaldızlı korsan gemilerinin de dağıtım yardımına ihtiyacı var.