Not: Bu oyun Rummikub bir varyasyon ile ilgilidir
Arka Plan ve Kurallar
Rummikub çini tabanlı bir oyundur. Dört renk vardır: kırmızı, turuncu, mavi ve siyah. Her renk için 13 karo vardır (1 ila 13 arasında etiketlenmiştir) ve ayrıca renkten bağımsız 2 Joker vardır, bu nedenle toplam 54 adet vardır. Rummikub'ın bu varyasyonunda, her oyuncu 14 karo alır ve karo sayısı sabit olacak şekilde her turda bir karo daha almalı ve başka bir karo bırakmalıdır. Oyuncular birbirlerinin taşlarını görmezler. Amaç karoları gruplandırmaktır, böylece tüm parçalar en az bir gruba aittir (aşağıya bakınız). Bir oyuncu tüm parçaları gruplandırdığında, döşeme tahtasını düşürür ve parçalarını ortaya çıkarır. Diğerleri daha sonra tüm kombinasyonların geçerli olup olmadığını kontrol ederler ve eğer varsa, oyuncu raundu kazanır.
Fayanslar nasıl gruplanabilir?
Sadece iki tür grup vardır:
Çok renkli gruplar:
- 3 veya 4 karodan oluşurlar.
- Sadece üzerinde aynı numaraya sahip karolar içerirler.
- Tüm karolar farklı renktedir.
- Örnek:
RED 9, BLUE 9, BLACK 9
.
Tek renk grupları:
- En az 3 karodan oluşurlar.
- 13'ten fazla karo içeremezler.
- Sadece artan sırayla farklı, ardışık sayılara sahip karolar içerirler.
- Tüm karolar aynı renge sahiptir.
- İle etiketlenmiş Fayans
1
olmayabilir fayans etiketli sonra yerler olabilir13
. - Örnek:
RED 5, RED 6, RED 7
.
Bekle, Jokerler ne yapar?
Jokerler oyundaki herhangi bir parçayı değiştirebilir. Örneğin, bizim ilk örnek olabilir JOKER, BLUE 9, BLACK 9
, RED 9, JOKER, BLACK 9
ya da RED 9, BLUE 9, JOKER
. Aynısı diğer örneğimiz için de geçerlidir. Ancak, bir olabilir değil şeyler sever bu yüzden, aynı gruptaki iki Jokerleri yerleştirmek JOKER, ORANGE 8, JOKER
yasaktır.
Görev
Bir Rummikub döşeme grubu verildiğinde, geçerli olup olmadığını belirleyin. 2 joker dışında yinelenen döşemelerin görünmeyeceği ve girdi olarak aldığınız döşemelerin geçerli olduğu garanti edilir (örn. Gibi şeyler 60
görünmez).
Giriş çıkış
Herhangi bir standart yöntemle girdi alabilir ve çıktı sağlayabilirsiniz.
Bazı geçerli giriş biçimleri: dize listesi, tuples listesi, iç içe listeler, dize veya uygun bulduğunuz başka bir şey. Renkler, Dizeler (örneğin:) "Blue","Red", etc.
, String kısaltmaları (lütfen Mavi ve Siyah döşemeleri ayırt edilebilir hale getirin) veya bir renge karşılık gelen tamsayılar olarak alınabilir . Jokerler söz konusu olduğunda, programınızın bunları girdi olarak alma biçiminden bahsetmelisiniz. Dizeleri seçerseniz, sahip olabileceğiniz RED 9, JOKER, ...
tuplleri (9,"RED"), ("JOKER")
veya eşdeğer bir şeyi seçerseniz, benzer bir şeye sahip olabilirsiniz . Yardımcı olursa, o Joker için bir renk alabilirsiniz (bu, programınızın çıktısını etkilememelidir). Örneğin, olabilir ("JOKER","RED")
veya olabilir ("JOKER","BLUE")
, ancak bu çıktıyı hiçbir şekilde etkilemez.
Çıktı ile ilgili olarak, bir karar problemi için standart kurallar geçerlidir.
Çalışılan örnekler
Umarım anlamayı kolaylaştıracak bir örnek alalım. Her grubun bir kutucuğu temsil ettiği aşağıdaki gibi bir grup verilir:
[(9, "KIRMIZI"), (9, "TURUNCU"), ("JOKER"), (9, "SİYAH")]
Girdi geçerli olduğundan, bu doğruluk değeri döndürmelidir. Bu durumda, Joker ikame eder (9, "BLUE")
ve çok renkli bir grup oluştururlar.
Aşağıdaki grup size verilecekse:
[(9, "MAVİ"), (9, "TURUNCU"), (9, "KIRMIZI"), (9, "SİYAH"), ("JOKER")]
Geçersiz olur ve bu nedenle programın bir falsy değeri döndürmesi gerekir, çünkü jokerin yerini alacak hiçbir şey kalmaz, çünkü çok renkli bir gruptaki maksimum kart sayısı 4'tür.
Ek Test Durumları
Bunlar, neredeyse tüm olası durumları kapsayan genişletilmiş bir test takımı içindir:
Giriş -> Çıkış [(1, "MAVİ"), (2, "MAVİ"), (3, "MAVİ"), (4, "MAVİ"), (5, "MAVİ"), (6, "MAVİ")] - > doğruluk [(6, "MAVİ"), (6, "KIRMIZI"), (6, "SİYAH)] -> doğruluk [(5, "beyaz"), (6, "beyaz"), (7, "beyaz"), (8, "beyaz"), (9, "beyaz"), (10, "beyaz"), ( "JOKER"), (12, "BLACK")] -> doğruluk [("JOKER"), (3, "MAVİ"), (3, "KIRMIZI")] -> doğruluk [(8, "SİYAH"), (2, "KIRMIZI"), (13, "MAVİ")] -> falsili [(4, "KIRMIZI"), (3, "KIRMIZI"), (5, "KIRMIZI")] -> falsili [(5, "SİYAH"), (6, "SİYAH)] -> falsili [("JOKER"), (5, "KIRMIZI"), ("JOKER")] -> falsili [(4, "KIRMIZI"), (5, "KIRMIZI"), (6, MAVİ ")] -> falsili [(4, "KIRMIZI"), ("JOKER"), (5, "KIRMIZI")] -> falsili [(12, "SİYAH"), (13, "SİYAH), (1," SİYAH ")] -> falsili
Bu kod golf , bu yüzden her dilde bayt en kısa kod kazanır!