Risolto il problema con il messaggio misessessessessuale superiore


38

Questo si ispira a Monday Mini-Golf # 6: Meeesesessess upp teeexexextext

sfondo

ETHproductions ha difficoltà a inserire testo nella sua solita pagina web. Ogni volta che usa cifre o lettere, il testo verrà misurato senza essere valutato. Il tuo compito è di aiutarlo a digitare in modo da raggiungere il comportamento normale.

La trasformazione

La trasformazione influisce sulle serie di caratteri alfanumerici ( [0-9A-Za-z]) delimitati da qualsiasi carattere non alfanumerico. Nel seguente esempio, la prima riga verrebbe trasformata nella seconda (le altre righe mostrano la suddivisione della trasformazione)

An12num:
Annn1n12n12nn12nn12nun12nun12numn12num
A
 nn
   n1
     n12
        n12nn12n
                n12nun12nu
                          n12numn12num

In particolare, qualsiasi carattere alfanumerico dopo il primo di una serie verrà trasformato nell'intera serie finora, tranne il primo carattere . Inoltre, se il personaggio è una lettera (anziché una cifra), il personaggio verrà trasformato in due volte la sequenza.

Per fortuna, backspace cancellerà l'ultimo carattere e ripristinerà anche l'inizio della corsa.

Compito

Questa volta il tuo compito non è quello di eseguire la trasformazione. Invece, data una stringa di input, è necessario restituire un testo codificato che, se trasformato, comporterà l'input. L'output deve essere il più breve possibile, dove viene \<char>conteggiato come un singolo carattere.

Il testo è codificato come segue:

\                   -> \\
backspace character -> \b
linefeed            -> \n

È possibile scrivere un programma o una funzione, prendendo l'input tramite STDIN (o l'alternativa più vicina), l'argomento della riga di comando o l'argomento della funzione e producendo il risultato tramite STDOUT (o l'alternativa più vicina), il valore di ritorno della funzione o il parametro della funzione (out).

Casi test

Ogni test case è composto da due righe, la prima è input, la seconda output.

Heeeeeelp me. It shouldn't be messed up.
Hee \blp\b me\b. It\b sh\bou\bld\bn't be\b me\bss\bed\b up\b.

alert("Hello, world!");
al\ber\bt("He\bll\bo, wo\brl\bd!");

1223234234523456
123456

6
È ben definito, ma perché non c'è risposta?
Akangka,

1
In qualche modo mi mancava questo; bello spin-off! Forse proverò a scrivere una risposta più tardi.
ETHproductions

Questo mi ricorda il tempo in cui un mio amico ha inviato messaggi tramite UDP
TRGWII il

1
Penso che il tuo caso di test finale abbia bisogno di una correzione. Includi il primo personaggio ( 1ogni volta) nelle corse.
Leif Willerts,

Onestamente non capisco cosa dovrei fare ... Scusa. Potresti aggiungere alcuni input e output e aggiungere alcuni esempi con la spiegazione? Scusate.
Yassin Hajaj,

Risposte:


10

CJam, 207

{_,1>{:E1<_0{:I2$,+E=:C+:R1>C'9>)*+:P,E,<{EP#{L0}{PRI)1}?}{PE#L{R8cP,E,-*+}?0}?}g}&}:U;LqS+'a+{_'[,_el^A,s+&,V={+}{s\V!:V{L{:BU_aL?B,,1>Bf{_2$<U_{_W=8>S8c+*+\@>j+}{?;}?}+{,}$0=}j}|\}?}%s'\8cN++'\"\bn"f+er-2<

Provalo online

Spiegazione:

Quasi dimenticato di scrivere questo: p

Il problema è risolto in diversi passaggi:

  • il testo è separato in serie di caratteri alfanumerici (chiamiamoli parole) e in serie di caratteri non alfanumerici (non parole)
  • le non parole sono stampate così come sono e le parole sono fisse
  • riparare una parola viene fatto in modo ricorsivo (con memoization): dividere la parola in 2 blocchi in ogni modo possibile (incluso il secondo pezzo vuoto), provare a riattivare il primo pezzo (vedi sotto), correggere il secondo pezzo e unire i risultati con uno spazio - backspace se necessario; prendere la soluzione secondaria più breve
  • sminuire un blocco significa trovare una stringa minima di caratteri alfanumerici eventualmente seguita da alcuni spazi posteriori (ma senza spazi posteriori nel mezzo) che, quando incasinati, danno come risultato il pezzo dato; viene fatto con un semplice algoritmo avido, che va da sinistra a destra, costruendo la stringa non modificata e la sua versione incasinata in parallelo e determinando il successivo carattere necessario ad ogni passo; alcuni pezzi non possono essere indifferenti

1
Santa mucca ... questo è un diavolo di un programma CJam! Bel lavoro.
ETHproductions
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.