Idea grazie a @ MartinBüttner da una discussione in chat
Mahjong è un gioco a tessere che è immensamente popolare in Asia. In genere si gioca con quattro giocatori e l'obiettivo del gioco è quello di essere la prima persona a completare una mano valida usando le tessere. Per questa sfida, prenderemo in considerazione una versione semplificata del gioco - Mahjong PPCG.
In PPCG mahjong, ci sono tre vestiti - m
, p
e s
- e le piastrelle sono numerati da 1
a 9
. Ci sono esattamente quattro copie di ogni piastrella, e le piastrelle sono indicate con il suo numero seguito dal suo seme (eg 3m
, 9s
).
Una mano di mahjong PPCG completata consiste di quattro serie da tre e una coppia, per un totale di 14 tessere.
Un set di tre può essere:
- Tre tessere uguali (ad es.
4s 4s 4s
, Ma non4m 4p 4s
), oppure - Una sequenza di tre tessere consecutive nello stesso seme (ad es.
1s 2s 3s
Oppure6p 7p 8p
no3s 4m 5m
oppure oppure3p 5p 7p
). Le sequenze non vanno a capo (quindi9m 1m 2m
non sono valide).
Una coppia è semplicemente due tessere identiche (ad es 5s 5s
.).
La sfida
Il tuo programma riceverà una mano separata dallo spazio di 13 tessere, con ogni tessera che appare non più di quattro volte. È possibile scrivere un programma completo o una funzione che accetta una stringa.
Il tuo compito è quello di trovare tutte le 14 tessere possibili ("attese") che, se aggiunte alla mano, formerebbero una mano mahjong PPCG completata. Le tessere emesse devono essere separate dallo spazio, ma possono essere in qualsiasi ordine. È consentito uno spazio bianco iniziale o finale.
Il programma dovrebbe essere eseguito in un periodo di tempo ragionevole, non più di un minuto.
Esempi
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
Nel primo esempio, 1m 4s 7p 3m
tutti formano terzine esistenti, lasciando il solitario 9s
a formare una coppia.
Nel secondo esempio, 2s 3s
e 7p 8p
può solo formare sequenze e le tessere rimanenti possono solo formare terzine. Quindi nessuna coppia può essere formata e non c'è output.
Nel terzo esempio, la mano si divide in 1m2m3m 2m3m4m 3m3m 1s1s 9s9s9s
. Normalmente sarebbe un'attesa 3m 1s
, ma poiché tutti e quattro 3m
sono stati usati, l'unica attesa disponibile è 1s
.
Nel quarto esempio, tutte le m
tessere completano la mano. Ad esempio, per 1m
, si potrebbe avere 1m1m1m 1m2m3m 4m5m6m 7m8m9m 9m9m
quale è una mano completata.
Prova a elaborare il resto del quarto esempio e del quinto esempio :)
punteggio
Questo è code-golf , quindi vince la soluzione nel minor numero di byte. Si applicano scappatoie standard .