Idea gracias a @ MartinBüttner de una discusión en el chat
Mahjong es un juego de fichas que es inmensamente popular en Asia. Por lo general, se juega con cuatro jugadores, y el objetivo del juego es ser la primera persona en completar una mano válida usando las fichas. Para este desafío, consideraremos una versión simplificada del juego: PPCG mahjong.
En PPCG mahjong, hay tres trajes - m
, p
y s
- y las baldosas están numeradas del 1
a 9
. Hay exactamente cuatro copias de cada mosaico, y los mosaicos se denotan por su número seguido de su palo (por ejemplo 3m
, 9s
).
Una mano de mahjong PPCG completa consta de cuatro juegos de tres y un par, para un total de 14 fichas.
Un conjunto de tres puede ser:
- Tres del mismo mosaico (por ejemplo
4s 4s 4s
, pero no4m 4p 4s
), o - Una secuencia de tres fichas consecutivas en el mismo palo (por ejemplo,
1s 2s 3s
o6p 7p 8p
pero no3s 4m 5m
o3p 5p 7p
). Las secuencias no se ajustan (por9m 1m 2m
lo que no es válido).
Un par es simplemente dos fichas idénticas (por ejemplo 5s 5s
).
El reto
Su programa recibirá una mano separada por espacios de 13 mosaicos, y cada mosaico no aparecerá más de cuatro veces. Puede escribir un programa completo o una función que incluya una cadena.
Su tarea es encontrar todas las baldosas 14 posibles ("esperas") que, cuando se agregan a la mano, formarían una mano de mahjong PPCG completa. Los mosaicos de salida deben estar separados por espacios, pero pueden estar en cualquier orden. Se permiten espacios en blanco iniciales o finales.
Su programa debe ejecutarse en un período de tiempo razonable, no más de un minuto.
Ejemplos
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
En el primer ejemplo, 1m 4s 7p 3m
todos forman tripletes existentes, dejando al solitario 9s
para formar un par.
En el segundo ejemplo, el 2s 3s
y 7p 8p
solo puede formar secuencias, y los mosaicos restantes solo pueden formar trillizos. Por lo tanto, no se puede formar un par y no hay salida.
En el tercer ejemplo, la mano se divide en 1m2m3m 2m3m4m 3m3m 1s1s 9s9s9s
. Normalmente, esto sería una espera 3m 1s
, pero como 3m
se han utilizado los cuatro , la única espera disponible es 1s
.
En el cuarto ejemplo, todas las m
fichas completan la mano. Por ejemplo, para 1m
, uno podría tener 1m1m1m 1m2m3m 4m5m6m 7m8m9m 9m9m
una mano completa.
Intenta resolver el resto del cuarto ejemplo y el quinto ejemplo :)
Puntuación
Este es el código de golf , por lo que la solución en la menor cantidad de bytes gana. Se aplican lagunas estándar .