Giriş
Skat , 3 oyuncu için geleneksel bir Alman kart oyunudur. Deste 32 karttan oluşur: As, Kral, Kraliçe, Jack, 4 takımın hepsinde (Kulüpler, Maçalar, Kalpler, Elmaslar) 10, 9, 8, 7.
Her turda bir oyuncu solo oynar, diğer ikisi ona karşı oynar. Bir raundun başında her oyuncuya 10 kart dağıtılır, kalan 2 karta skat denir ve ortada yüzü aşağıya bakacak şekilde yerleştirilir. Yalnız oyuncu bir teklif aşaması ile belirlenir. Bu, bu meydan okumada ele almanız gereken bölümdür, aşağıda daha fazla ayrıntı.
Teklif aşamasını kazanan oyuncu solo oyuncu olur. Pateni alır ve sonra iki kart bırakır (aynı olabilir, diğer takım bilmiyor), koz takımını alır ve tur başlar.
Bir tur on numaradan oluşur. Bir numara kazanan oyuncu, tüm kartlar oynanana kadar bir sonrakini yönlendirir. Buradaki kuralları açıklamayacağım, ancak çok fazla koz kartına sahip olmanın iyi olduğunu bilmelisin. Kurallar hakkında bilgi edinmek istiyorsanız, bu yazının başında bağladığım Wikipedia makalesine bakın, ancak bu meydan okuma için gerekli değildir.
Meydan okuma
İki oğluna nasıl skat çalmayı öğretmek istiyorsun. Kurallar o kadar zor değil, bu yüzden hızla içine giriyorlar. Onlara zor zaman veren tek şey, özellikle ellerinin oyun değerini hesaplamak için teklif vermektir. Böylece, mevcut elleriyle teklif verebilecekleri maksimum oyun değerini veren küçük bir program yazmaya karar verdiniz.
Oyun değerinin hesaplanması
Her elin belirli bir oyun değeri vardır. Sahip olduğunuz sıralı Jakların miktarı ve koz olarak seçmek istediğiniz takım tarafından belirlenir. İlk faktör, krikolar ile başlayalım!
Jack Faktörü
Krikolar her zaman koz kartlarıdır ve diğer koz kartlarını yenerler. Dört Kriko arasındaki güç sırası:
- Jack of Clubs (en yüksek)
- Maça Krikosu
- Jack of Hearts
- Jack of Diamonds (en düşük)
Daha fazla açıklamada, burada kendilerine atadığım numaralarla onlara atıfta bulunacağım.
Oyundaki değerin bir parçası olan elindeki Jack'lerden aldığın bir çeşit faktör olduğunu hatırlıyor musun? Harika! İşte bunu nasıl elde edersiniz:
Bu Jack faktörü, sırayla üstteki en iyi Jakların sayısıdır (yukarıdaki sıraya bakın), artı 1'dir. Bu nedenle, 4 Jakın hepsine sahipseniz 4 + 1 = 5'tir. Sadece ilk 2 Jakınız varsa, 2 + 1 = 3.
Alternatif olarak, işleri biraz daha karmaşık hale getirmek için, Jack Factor, eksik olduğunuz sırayla en iyi Jack'lerin sayısı da artı 1 olabilir. ilk 3 eksik, 3 + 1 = 4. İşte yukarıdaki numaralandırma kullanarak bazı örnekler:
[1, 4] -> 1 + 1 = 2
[1, 2, 4] -> 2 + 1 = 3
[2, 3, 4] -> 1 + 1 = 2
[1, 2, 3, 4] -> 4 + 1 = 5
[] -> 4 + 1 = 5
İlk faktör buydu. İşte ikincisini nasıl alacağınız:
Koz Takım Faktörü
Bu çok daha basit. 2. faktör, solo oyuncunun aşağıdaki eşlemeyi kullanarak seçtiği koz tarafından belirlenir:
Clubs -> 12
Spades -> 11
Hearts -> 10
Diamonds -> 9
Kolaydı, değil mi?
Oyun Değeri
Oyun değeri iki faktörün ürünüdür. Sence oldukça kolay mı? Yanlış! Jack Faktörü sabitken, takım faktörü sabit değildir. Koz olarak topladığınız takım koz miktarına ve koz olmayan kartlarınızın elindeki değerine bağlıdır. İyi bir elin neye benzediğini açıklamak çok karmaşık olurdu, bu nedenle aşağıdaki algoritmayı kullanacaksınız:
Hangi Trump-do-I-Pick Algoritması
İhaleye katılmak zorunda değilsiniz. Elinizin solo oynamak için çok kötü olduğuna karar verirseniz, sadece geçebilirsiniz. Oynatılabilmesi için elinizin aşağıdaki kriterlere uyması gerekir:
En az 6 koz kartınız var (seçtiğiniz kozun kartları + Jack sayısı). Bu, birden fazla takım için mümkünse, daha fazla kozla sonuçlanacak olanı seçin. Yoksa hala bir kravat, yukarıda verilen en yüksek derece ile takım elbise almak.
Koz olmayan kartlardan en az 1 As var.
Eliniz bu kriterlerin her ikisine de uymuyorsa, geçersiniz. Varsa, hesaplanan oyun değerini ve seçilen kozu çıkarırsınız.
Kısa not: Tabii ki bu çok basitleştirilmiş bir algoritma. Böyle bir meydan okumayı ele alabileceğimizden çok daha fazla strateji ve deneyim bir eli yargılamak için gidiyor.
Giriş
Her kartın benzersiz bir tanımlayıcısı vardır. Birinci bölüm takım (olup Cı LUBS, S kürekler, H earts, D iamonds), ikinci bölüm, bu eşleme ile verilmektedir değerdir:
Ace -> A
King -> K
Queen -> Q
Jack -> J
10 -> 0
9 -> 9
8 -> 8
7 -> 7
Her iki parça da bir kart oluşturur. Değer önce gelir, sonra takım elbise gelir. Kartları istediğiniz formatta alabilirsiniz.
Çıktı
El oynanabiliyorsa, oyun değerini ve çekilen koz takımını (sipariş önemli değildir) çıktılayın. Değilse, çıktı "pass".
kurallar
- Belirtildiği gibi, girişi sizin için en uygun biçimde alabilirsiniz. Örnekler test örneklerinde aşağıya bakınız.
- Girdi, komut satırı bağımsız değişkenleri, kullanıcı girdisi veya işlev bağımsız değişkenleri tarafından sağlanabilir.
- Çıktı dönüş değeri olarak sağlanabilir veya sadece ekrana yazdırılabilir.
- Girişteki kartlar hiçbir şekilde sipariş edilemeyebilir. Programınız herhangi bir rastgele kart siparişi ile başa çıkabilmelidir.
- En düşük bayt sayısı kazanır!
testcases
Test senaryolarına giriş 2 karakterlik Dizelerin bir listesi olacaktır.
1. ["JC", "JS", "JD", "AC", "KC", "9C", "AS", "7H", "QD", "8D"] -> 36 Clubs
2. ["JD", "AS", "0S", "KS", "QS", "9S", "8S", "AD", "8C", "9C"] -> 44 Spades
3. ["JH", "JD", "0S", "KS", "9C", "8C", "QH", "KH", "AD", "9D"] -> pass
4. ["JD", "AS", "KS", "QS", "0S", "9S", "8D", "7D", "0C", "QH"] -> pass
Açıklama:
- Üstün koç olarak kulüpleri ile üst üste iki jack. Yani oyun değeri 3 x 12 = 36
- Üst üste üç Vale koz olarak Maça eksik. Yani oyun değeri 4 x 11 = 44
- Sadece en fazla 4 koz mümkündür, bu yüzden geçersiniz.
- Maça ile altı koz ama koz olmayan as, böylece geçecek.
Bazı kurallar net değilse, devam edin ve yorum yapın. Bu oyunla büyüdüm, bu yüzden her şeyi yeterince ayrıntılı olarak tarif edip etmediğimi yargılamak zor.
Ve şimdi ... Mutlu Kodlama!
edit: yorumlarda bana işaret gibi (isaacg sayesinde), "Jack faktörü" içine 4 Jacks sonra aşağıdaki üst koyar sayar bir kural var bu yüzden 11 kadar gidebilir. ve insanları karıştırmamak için, başlangıçta önerdiğim kurallar oldukları gibi kalacak. Böylece maksimum faktör 5'de kalır.