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
, p
i s
- a płytki są ponumerowane od 1
do 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 4s
Ale nie4m 4p 4s
), lub - Ciąg trzech kolejnych płyt w tym samym kolorze (np
1s 2s 3s
albo6p 7p 8p
ale3s 4m 5m
i3p 5p 7p
). Sekwencje nie są zawijane (więc9m 1m 2m
są 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 3m
wszyscy tworzą istniejące trojaczki, pozostawiając samotnych, 9s
tworząc parę.
W drugim przykładzie, 2s 3s
i 7p 8p
mogą 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 3m
zostały wykorzystane, jedynym dostępnym oczekiwaniem jest 1s
.
W czwartym przykładzie wszystkie m
płytki uzupełniają układ. Na przykład, na przykład, 1m
można mieć 1m1m1m 1m2m3m 4m5m6m 7m8m9m 9m9m
gotową 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 .