Pomysł dzięki @ MartinBüttner z dyskusji na czacie
Mahjong to gra w płytki, która jest niezwykle popularna w Azji. Zwykle gra się w czterech graczy, a celem gry jest bycie pierwszą osobą, która ukończy ważne rozdanie za pomocą płytek. Do tego wyzwania rozważymy uproszczoną wersję gry - mahjong PPCG.
W PPCG mahjong, istnieją trzy garnitury - m, pi s- a płytki są ponumerowane od 1do 9. Są to dokładnie cztery kopie każdej płytki i płytki są oznaczone przez jego numer, a następnie jego kolorze (np 3m, 9s).
Ukończona ręka mahjonga PPCG składa się z czterech zestawów trzech i pary, co daje w sumie 14 płytek.
Zestaw trzech może być:
- Trzy z tego samego kafelka (np.
4s 4s 4sAle nie4m 4p 4s), lub - Ciąg trzech kolejnych płyt w tym samym kolorze (np
1s 2s 3salbo6p 7p 8pale3s 4m 5mi3p 5p 7p). Sekwencje nie są zawijane (więc9m 1m 2msą nieprawidłowe).
Para to po prostu dwie identyczne płytki (np 5s 5s.).
Wyzwanie
Twój program otrzyma rozdzielone spacją rozdanie z 13 płytek, z których każdy pojawi się nie więcej niż cztery razy. Możesz napisać pełny program lub funkcję, która pobiera ciąg znaków.
Twoim zadaniem jest znaleźć wszystkie 14 możliwe kafelki („czeka”), które po dodaniu do ręki utworzą ukończoną rękę mahjonga PPCG. Wyprowadzane płytki powinny być oddzielone spacją, ale mogą być w dowolnej kolejności. Wiodące lub końcowe białe znaki są dozwolone.
Twój program powinien działać w rozsądnym czasie, nie dłużej niż minutę.
Przykłady
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
W pierwszym przykładzie 1m 4s 7p 3mwszyscy tworzą istniejące trojaczki, pozostawiając samotnych, 9stworząc parę.
W drugim przykładzie, 2s 3si 7p 8pmogą tworzyć tylko sekwencje, a pozostałe płytki mogą tworzyć tylko trojaczki. Dlatego nie można utworzyć żadnej pary i nie ma wyjścia.
W trzecim przykładzie ręka dzieli się na 1m2m3m 2m3m4m 3m3m 1s1s 9s9s9s. Zwykle byłoby to oczekiwanie 3m 1s, ale ponieważ wszystkie cztery 3mzostały wykorzystane, jedynym dostępnym oczekiwaniem jest 1s.
W czwartym przykładzie wszystkie mpłytki uzupełniają układ. Na przykład, na przykład, 1mmożna mieć 1m1m1m 1m2m3m 4m5m6m 7m8m9m 9m9mgotową rękę.
Spróbuj wypracować resztę czwartego przykładu i piątego przykładu :)
Punktacja
To jest golf golfowy , więc wygrywa rozwiązanie w najmniejszej liczbie bajtów. Obowiązują standardowe luki .