* O que é um transmogrificador?
Na linguagem de programação C , há formações chamadas digrafos e trigramas que são sequências de dois e três caracteres que avaliam caracteres menos comuns. Por exemplo, você pode usar ??-se o teclado não tiver ~.
Com o texto, substitua todas as instâncias dos seguintes dígrafos e trigramas (lado esquerdo) pelo caractere correto, mais curto e em forma de golf (lado direito).
??= #
??/ \
??' ^
??( [
??) ]
??! |
??< {
??> }
??- ~
<: [
:> ]
<% {
%> }
%: #
Entrada
A entrada é texto ASCII. Nova linha à direita permitida. Não precisa ser um código C válido.
Resultado
A saída é o mesmo texto, com todas as instâncias dos dígrafos e trigramas acima substituídas pela versão reduzida, avaliadas da esquerda para a direita. Nova linha à direita permitida. Não precisa ser um código C válido.
Casos de teste
=> separa entrada e saída.
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"; }
??<:>??<% => {]{%
<:> => [>
<::> => []
:>> => ]>
#\^[]|{}~ => #\^[]|{}~
: > => : >
??=%: => ##
"??=%:"é outro caso de teste relevante: em C, isso significa "#%:"que %:não é especial, mas acho que é o resultado esperado "##".