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, pe s- e le piastrelle sono numerati da 1a 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 3sOppure6p 7p 8pno3s 4m 5moppure oppure3p 5p 7p). Le sequenze non vanno a capo (quindi9m 1m 2mnon 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 3mtutti formano terzine esistenti, lasciando il solitario 9sa formare una coppia.
Nel secondo esempio, 2s 3se 7p 8ppuò 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 3msono stati usati, l'unica attesa disponibile è 1s.
Nel quarto esempio, tutte le mtessere completano la mano. Ad esempio, per 1m, si potrebbe avere 1m1m1m 1m2m3m 4m5m6m 7m8m9m 9m9mquale è 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 .