@ MartinBüttner'e sohbet tartışması sayesinde fikir
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. Bu meydan okuma için, oyunun basitleştirilmiş bir versiyonunu ele alacağız - PPCG mahjong.
- PPCG mahjongda üç takım elbise vardır m, pve s- ve fayans numaralandirilmistir 1için 9. Orada her karo dört kopyası aynen vardır ve fayans onun takım tarafından takip onun numarası (örn ile gösterilir 3m, 9s).
Tamamlanmış bir PPCG mahjong eli, toplam 14 karo için üç set ve bir çiftten oluşur.
Üçlü bir dizi şunlardan biri olabilir:
- Aynı döşemeden üçü (örneğin
4s 4s 4s, ancak değil4m 4p 4s) veya - Aynı türden üç ardışık döşemeden oluşan bir dizi (örneğin,
1s 2s 3sya da6p 7p 8pdeğil3s 4m 5mveya3p 5p 7p). Diziler sarılmaz (9m 1m 2mgeçersizdir).
Bir çift basitçe iki özdeş döşemedir (örneğin 5s 5s).
Meydan okuma
Programınız her biri dört kereden fazla görünmeyecek şekilde, 13 döşemeden oluşan bir boşluk elde eder. Tam bir program veya bir dize alan bir işlev yazabilirsiniz.
Senin görevin, el eklendiğinde tamamlanmış bir PPCG mahjong eli oluşturacak olası tüm 14 karoları ("bekler") bulmaktır. Çıkarılan döşemeler boşlukla ayrılmalıdır, ancak herhangi bir sırada olabilir. Öncü veya sondaki boşluklara izin verilir.
Programınız bir dakikadan fazla olmamak üzere makul bir sürede çalışmalıdır.
Örnekler
Input: 1m 1m 1m 4s 4s 4s 7p 7p 7p 3m 3m 3m 9s
Output: 9s
Input: 1m 1m 1m 3m 3m 3m 5m 5m 5m 2s 3s 7p 8p
Output:
Input: 1m 2m 2m 3m 3m 3m 3m 4m 1s 1s 9s 9s 9s
Output: 1s
Input: 1m 1m 1m 2m 3m 4m 5m 6m 7m 8m 9m 9m 9m
Output: 1m 2m 3m 4m 5m 6m 7m 8m 9m
Input: 1m 1m 1m 5p 2m 3m 5p 7s 8s 5p 9s 9s 9s
Output: 1m 4m 6s 9s
İlk örnekte, 1m 4s 7p 3mhepsi mevcut üçlüleri oluşturur ve yalnız 9sbir çift oluşturur.
İkinci örnekte, 2s 3sve 7p 8pyalnızca diziler oluşturabilir ve geri kalan döşemeler yalnızca üçüz oluşturabilir. Dolayısıyla hiçbir çift oluşturulamaz ve çıktı yoktur.
Üçüncü örnekte, el bölünür 1m2m3m 2m3m4m 3m3m 1s1s 9s9s9s. Normalde bu bir bekleme olur 3m 1s, ancak dördünün 3mhepsi kullanıldığından, mevcut tek bekleme 1s.
Dördüncü örnekte, tüm mkarolar eli tamamlar. Örneğin 1m, biri 1m1m1m 1m2m3m 4m5m6m 7m8m9m 9m9mtamamlanmış bir ele sahip olabilir .
Dördüncü örneğin beşinci örneğini anlamaya çalışın :)
puanlama
Bu kod golf , bu yüzden en az bayt içindeki çözüm kazanır. Standart boşluklar geçerlidir.