* Che cos'è un transmogrifier?
Nel linguaggio di programmazione C , ci sono formazioni chiamate digrafi e trigrafi che sono sequenze di due e tre caratteri che valutano caratteri meno comuni. Ad esempio, puoi usarlo ??-se la tua tastiera non ha ~.
Dato il testo, sostituisci tutte le istanze dei seguenti digrafi e trigrafi (lato sinistro) con il carattere corretto, più corto, con il golf (lato destro).
??= #
??/ \
??' ^
??( [
??) ]
??! |
??< {
??> }
??- ~
<: [
:> ]
<% {
%> }
%: #
Ingresso
L'input è un testo ASCII. Newline finale consentita. Non deve essere un codice C valido.
Produzione
L'output è lo stesso testo, con tutte le istanze dei precedenti digrafi e trigrafi sostituiti con la versione abbreviata, valutata da sinistra a destra. Newline finale consentita. Non deve essere un codice C valido.
Casi test
=> separa input e output.
if (true ??!??! false) { => if (true || false) {
??-arr.indexOf(n) => ~arr.indexOf(n)
function f(??) { console.log('test??'); } => function f(] { console.log('test^); }
/* comment :> :) *??/ => /* comment ] :) *\
%:What am I doing??!!??` => `#What am I doing|!??
??(??)??(??) <:-- not a palindrome => [][] [-- not a palindrome
?????????? => ??????????
int f(int??(??) a) ??< return a??(0??)??'a??(1??) + "??/n"; ??> => int f(int[] a) { return a[0]^a[1] + "\n"; }
??<:>??<% => {]{%
<:> => [>
<::> => []
:>> => ]>
#\^[]|{}~ => #\^[]|{}~
: > => : >
??=%: => ##
"??=%:"è un altro banco di prova rilevanti: in C, questo mezzo "#%:"in cui %:non è speciale, ma credo che l'output previsto è "##".