Ispirazione
Questa domanda è ispirata alle carte Throne Room e King's Court del famoso gioco di carte per la costruzione di mazzi Dominion .

Come parte del proprio turno, si gioca una sequenza di azioni. Queste due azioni particolari fanno ripetere l'azione successiva per due o tre volte *. Altre azioni "generiche" causano effetti di gioco specifici, ma non saremo interessati ai dettagli, semplicemente etichettandoli con lettere.
Il caso interessante è quando una Throne Room o King's Court colpisce un'altra Throne Room di King's Court, facendo raddoppiare o triplicare l'effetto di raddoppiare o triplicare. Le lunghe catene di stanze del trono, re corti e azioni moltiplicate possono confondere anche i giocatori dominatori esperti.
Il tuo obiettivo è scrivere codice che risolva correttamente queste catene, usando il minor numero di byte possibile. Descriverò i requisiti del programma prima di spiegare come le catene si risolvono nelle regole del Dominio.
* Tecnicamente, scegli l'azione interessata come parte della risoluzione di Throne Room o King's Court, ma questa visione è più chiara per questa sfida.
Requisiti del programma
Scrivi un programma o una funzione denominata . Dovrebbe includere la catena di azioni eseguite (STDIN o input di funzione) e produrre o stampare la catena di azioni risultante dagli effetti del raddoppio e del triplo. Vince il minor numero di byte.
Ingresso
Una stringa che rappresenta la sequenza di azioni eseguite. Azioni generiche sono rappresentate da lettere maiuscole Aattraverso Z. La speciale azione di raddoppio Throne Room è rappresentata dal personaggio 2e l'azione tripla King's Court di 3,
Il numero di personaggi (azioni) sarà compreso tra 1 e 30, inclusi. Se lo desideri, potresti avere la fine dell'input in una riga.
Esempio di input: WA23G3GA
Produzione
Una stringa di lettere maiuscole Aa Z. Questa dovrebbe essere la sequenza di azioni generiche che risulta dalla risoluzione degli effetti di raddoppio e triplicazione, nell'ordine in cui si verificano.
Se lo desideri, potresti avere l'output in una nuova riga. Altrimenti non dovrebbero esserci caratteri aggiuntivi.
Uscita Esempio: WAGGGGGGAAA.
Come funziona il raddoppio e il triplo in Dominion
Qui, esaminerò il modo in cui le catene di stanze del trono 2e le corti del re 3funzionano secondo le regole del dominio.
Dopo aver giocato a 2, l'azione successiva da risolvere si verifica due volte. Quindi, se giochi per la prima volta 2, poi A, ti Aaccadranno due volte.
2A -> AA
Allo stesso modo,
A2BC -> ABBC
3DE -> DDDE
3N2BC3XY2 -> NNNBBCXXXY
Nota nell'ultimo esempio che la finale 2non aveva nulla da raddoppiare, quindi non ha avuto alcun effetto.
La cosa interessante accade quando gli effetti di raddoppio o triplicazione vengono raddoppiati o triplicati. Per esempio,
22AB -> AABB
Per prima cosa suoni 2. Quindi ne giochi un altro 2, che è raddoppiato rispetto al precedente 2. Di conseguenza, le due azioni successive vengono raddoppiate. Innanzitutto, le due copie di Arisoluzione. Quindi, le copie di Brisoluzione.
Si noti che Anon è quadruplicato: dopo la prima copia di 2atti sul primo A, la copia successiva agisce sull'azione successiva non risolta, che è B. Senza il B, avremmo
22A -> AA
dove la seconda copia di 2è in attesa che la prossima azione raddoppi, ma non arriva alcuna azione.
Infine, diamo un'occhiata a un esempio complesso.
223BCDE -> BBBCCCDDE
Come prima, la prima 2fa 2raddoppiare la seconda . Quindi, le prossime due azioni saranno raddoppiate. La prima copia di 2raddoppia l'azione successiva 3, che deve essere risolta completamente prima di risolvere la copia successiva di 2. La prima copia di 3triple Be la seconda copia di triple C. Ora, la seconda copia ancora in attesa di 2raddoppia la prossima azione ancora irrisolta, che è D. Dopo questo, non rimangono effetti di raddoppio o triplo e l'azione finale Esemplicemente accade.
Casi test
Questi sono dati come (input,output).
(FY, FY)
(A2BC, ABBC)
(3DE, DDDE)
(3N2BC3XY2, NNNBBCXXXY)
(WA23G3GA, WAGGGGGGAAA)
(32, )
(33RST, RRRSSSTTT)
(2A32B2CDEFG, AABBCCDDEEFG)
(A2A323AB2CD2D2E3ABC, AAAAAABBBCCDDDDEEAAABBBC)
(P22LL3Q2Q22T, PLLLLQQQQQTT)
(322322ABCDEFGHIJKLMN, AABBCCDDEEEFFGGHHIJKLMN)
1sotto la pila per trattare le azioni non moltiplicate come quelle moltiplicate. Potresti spiegare di più su come si destreggiano tra le varie pile? In particolare, cosa fa \ "per portare in cima lo stack di rep"?