In der Programmiersprache C gibt es Formationen, die als Digraphen und Trigraphen bezeichnet werden. Dabei handelt es sich um Sequenzen mit zwei und drei Zeichen, die mit weniger gebräuchlichen Zeichen bewertet werden. Zum Beispiel können Sie verwenden, ??-wenn Ihre Tastatur nicht hat ~.
Ersetzen Sie bei gegebenem Text alle Instanzen der folgenden Digraphen und Trigraphen (linke Seite) durch das richtige, kürzere, golfene Zeichen (rechte Seite).
??= #
??/ \
??' ^
??( [
??) ]
??! |
??< {
??> }
??- ~
<: [
:> ]
<% {
%> }
%: #
Eingang
Eingabe ist ASCII-Text. Zeilenumbruch erlaubt. Muss kein gültiger C-Code sein.
Ausgabe
Es wird derselbe Text ausgegeben, wobei alle oben genannten Digraphen und Trigraphen durch die verkürzte Version ersetzt und von links nach rechts ausgewertet werden. Zeilenumbruch erlaubt. Muss kein gültiger C-Code sein.
Testfälle
=> trennt Eingang und Ausgang.
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"; }
??<:>??<% => {]{%
<:> => [>
<::> => []
:>> => ]>
#\^[]|{}~ => #\^[]|{}~
: > => : >
??=%: => ##
"??=%:"ist ein weiterer relevanter Testfall: In C bedeutet dies, "#%:"dass %:nichts Besonderes vorliegt, aber ich denke, Ihre erwartete Ausgabe ist "##".