Idee danke an @ MartinBüttner aus einer Diskussion im Chat
Mahjong ist ein Kachelspiel, das in Asien sehr beliebt ist. Es wird normalerweise mit vier Spielern gespielt, und das Ziel des Spiels ist es, die erste Person zu sein, die eine gültige Hand mit den Plättchen abschließt. Für diese Herausforderung werden wir eine vereinfachte Version des Spiels betrachten - PPCG Mahjong.
In PPCG Mahjong gibt es drei Anzüge - m, pund s- und die Fliesen sind nummeriert von 1zu 9. Es gibt genau vier Kopien von jeder Platte, und die Fliesen sind gekennzeichnet durch ihre Nummer von seinem Beispiel gefolgt (zB 3m, 9s).
Eine fertige PPCG-Mahjong-Hand besteht aus vier Dreisätzen und einem Paar mit insgesamt 14 Plättchen.
Ein Satz von drei kann entweder sein:
- Drei gleiche Kacheln (zB
4s 4s 4s, aber nicht4m 4p 4s) oder - Eine Folge von drei aufeinanderfolgenden Plättchen in derselben Farbe (z. B.
1s 2s 3soder,6p 7p 8paber nicht3s 4m 5moder3p 5p 7p). Sequenzen werden nicht umbrochen (9m 1m 2mist also ungültig).
Ein Paar sind einfach zwei identische Kacheln (zB 5s 5s).
Die Herausforderung
Ihr Programm erhält eine durch Leerzeichen getrennte Hand mit 13 Plättchen, wobei jedes Plättchen nicht öfter als viermal erscheint. Sie können entweder ein vollständiges Programm oder eine Funktion schreiben, die eine Zeichenfolge enthält.
Ihre Aufgabe ist es, alle möglichen 14. Plättchen ("Wartezeiten") zu finden, die, wenn sie der Hand hinzugefügt werden, eine fertige PPCG-Mahjong-Hand bilden würden. Die ausgegebenen Kacheln sollten durch Leerzeichen getrennt sein, können jedoch in beliebiger Reihenfolge sein. Führende oder nachfolgende Leerzeichen sind zulässig.
Ihr Programm sollte in einer angemessenen Zeitspanne von nicht mehr als einer Minute ausgeführt werden.
Beispiele
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
Im ersten Beispiel 1m 4s 7p 3mbilden alle vorhandenen Drillinge, so dass der Einzelne 9sein Paar bildet.
Im zweiten Beispiel können die 2s 3sund 7p 8pnur Sequenzen bilden, und die verbleibenden Kacheln können nur Tripletts bilden. Daher kann kein Paar gebildet werden und es erfolgt keine Ausgabe.
Im dritten Beispiel teilt sich die Hand in 1m2m3m 2m3m4m 3m3m 1s1s 9s9s9s. Normalerweise wäre dies eine Wartezeit 3m 1s, aber da alle vier 3mverwendet wurden, ist die einzige verfügbare Wartezeit 1s.
Im vierten Beispiel mvervollständigen alle Kacheln die Hand. Zum Beispiel 1mkönnte 1m1m1m 1m2m3m 4m5m6m 7m8m9m 9m9mman eine fertige Hand haben.
Versuchen Sie, den Rest des vierten und fünften Beispiels herauszufinden :)
Wertung
Das ist Code-Golf , also gewinnt die Lösung mit den wenigsten Bytes. Es gelten Standardlücken .