Mahjong , Asya'da son derece popüler olan bir çini oyunudur. Genellikle dört oyuncu ile oynanır ve oyunun amacı fayansları kullanarak geçerli bir eli tamamlayan ilk kişi olmaktır. Mahjong'da üç karo takımı artı şeref karosu vardır - bu meydan okuma için sadece tek bir takımdan fayans kullanılarak oluşturulan elleri dikkate alacağız.
Fayans gelen numaralandırılmıştır 1
için 9
ve her karo dört kopya aynen vardır. Geçerli bir el, toplam on dört karo için dört set ve bir çiftten oluşur.
Üçlü bir dizi şunlardan biri olabilir:
- Üçlü, aynı döşemeden üçü (ör.
444
) Veya - Üç ardışık döşemeden oluşan bir dizi (örneğin
123
veya678
değil357
). Diziler sarılmaz (912
geçersizdir).
Bir çift basitçe iki özdeş döşemedir (örneğin 55
).
Meydan okuma
On dört taştan oluşan geçerli bir el verildiğinde puanını aşağıdaki kriterlere göre belirleyin:
Condition Description Point/s
-------------------------------------------------------------------------------
Straight Contains the sequences 123 456 789 1
Identical sequences Contains two identical sequences 1
All simples Only 2-8, no 1s or 9s 1
All sequences All sets of three are sequences 1
All triplets All sets of three are triplets 2
Flush Single-suit hand (always applies) 5
(Burada puanlama Japon mahjong kurallarına dayanmaktadır, ancak spesifikasyonu daha az dağınık hale getirmek için büyük ölçüde basitleştirilmiştir.)
Bir elin puanı, yerine getirdiği koşullar için puanların toplamıdır. Bir el birden fazla şekilde ayrıştırılabiliyorsa, en yüksek skorlu ayrışmayı alın.
Giriş elinin geçerli olacağı garanti edilir, yani 1'den 9'a kadar on dört kiremit ve her bir kiremit en fazla dört kez görünür ve zaten sıralandığı varsayılabilir. Girdi, STDIN, işlev bağımsız değişkeni veya komut satırı aracılığıyla bir basamak listesidir (dize veya tek bir düz tamsayı listesi olarak). Çıktı STDOUT veya dönüş değeri olabilir.
Test senaryoları
22233355777888 -> 8 # 222 333 55 777 888, flush + all simp. + all trip.
11112345678999 -> 6 # 111 123 456 789 99, flush + straight
11123456788999 -> 5 # 111 234 567 88 999, flush only (no straight)
23344455566788 -> 7 # 234 345 456 567 88, flush + all simp. + all seq.
33334444555566 -> 8 # 33 345 345 456 456, flush + all simp. + all seq. + identical seq.
11122233377799 -> 7 # 111 222 333 777 99, flush + all trip. (no identical seq.)
12344556678889 -> 8 # 123 456 456 789 88, flush + all seq. + straight + identical seq.
11344556678999 -> 5 # 11 345 456 678 999, flush only (no identical seq.)
22233344455566 -> 8 # 222 333 444 555 66, flush + all simp. + all trip.
11112233344555 -> 5 # 111 123 234 345 55, flush only
Beşinci örnek için, iki çift özdeş diziye sahip olmasına rağmen, bu noktaya ulaşmak için sadece bir tane mevcut olmalıdır. Ayrışma 345 345 345 345 66
aynı puanı alırken, 333 345 444 555 66
puanlar daha kötü olur.
puanlama
Bu kod golf , bu yüzden en az bayt içindeki çözüm kazanır. Standart boşluklar geçerlidir.
İlgili zorluk: Ne bekliyorsun? (Mahjong çözücü)