Bir partide LCR oyunuyla tanıştım. Beceri yok ama sadece rastgele bir şans olduğu için şimdi harika bir oyun değil. Ama beni düşündürdü, bunu kodlayabilirim ve oyunu modellemek için R'de hızlı bir program yaptım.
Oyunun kuralları, Wikipedia'dan nasıl oynadığımıza uyacak şekilde değiştirildi:
Her oyuncuya en az 3 fiş verilir. Oyuncular sırayla, her biri bir tarafta "L", "C", "R" ve kalan üç tarafta tek bir nokta ile işaretlenmiş altı adet altı taraflı zar atmak için alırlar. Atılan her "L" veya "R" için, oyuncu sırasıyla oyuncuya bir çip sola veya sağa geçirmelidir. "C", merkeze (çip) giden bir çipi gösterir. Bir noktanın etkisi yoktur.
Bir oyuncunun üçten az fişi kaldıysa, hala oyundalar, ancak fişlerinin sayısı, üçünü de yuvarlamak yerine sıralarında oynadıkları zar sayısıdır. Bir oyuncu sıfır fişe sahip olduğunda, zarları sırayla geçirir, ancak diğerlerinden fiş alabilir ve buna göre bir sonraki turunu alabilir. Kazanan, fişleri merkeze koyan son oyuncudur.
Yarışma: kendi dilinizde oyuncu sayısı ve başlangıç fişi sayısı için girdi alan ve her oyuncu yuvarlandıktan sonra oyunun durumunu gösteren bir LCR oyunu simüle eden bir program yazın.
Örneğin, bir oyun şu şekilde çıkarılabilir:
[[[3,3,3,3],0],[[1,4,3,4],0],[[1,4,3,4],0],[[1,4,1,4],2],[[1,4,1,2],4],
[[0,4,1,3],4],[[0,3,2,3],4],[[0,3,0,3],6],[[0,3,1,1],7],[[0,3,1,1],7],
[[2,0,1,1],8],[[2,0,0,1],9],[[2,0,0,0],10],[[0,1,0,0],11],
[[1,0,0,0],11],[[1,0,0,0],11],[[1,0,0,0],11],[[0,0,0,0],12]]
ht: JonathanAllan
Çıktı tam olarak böyle görünmek zorunda değildir, ancak zar atışını, her oyuncunun kaç fişi olduğunu ve merkezin her turda kaç fişi olduğunu kolayca ayırt etmek gerekir.
Bu kod golf yani en kısa kod kazanır.
[[[3,3,3,3],0],[[1,4,3,4],0],[[1,4,3,4],0],[[1,4,1,4],2],[[1,4,1,2],4],[[0,4,1,3],4],[[0,3,2,3],4],[[0,3,0,3],6],[[0,3,1,1],7],[[0,3,1,1],7],[[2,0,1,1],8],[[2,0,0,1],9],[[2,0,0,0],10],[[0,1,0,0],11],[[1,0,0,0],11],[[1,0,0,0],11],[[1,0,0,0],11],[[0,0,0,0],12]]- durum böyle mi?