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"##"
.Antworten:
Netzhaut , 65 Bytes
Probieren Sie es online!
T
ist etwas umständlich zu bedienen spart mir aber trotzdem 14 bytes.quelle
\?\?[^:%]
?\?\?[^:%?]
eher)??a
zu werdena
.%>
statt sein>%
.C,
206205 Bytes(-1 dank ceilingcat)
Die Zeilenumbrüche dienen lediglich der Lesbarkeit.
Wird
s
an Ort und Stelle geändert . Getestet mit GCC und Clang auf Fedora Workstation, x86, im 32-Bit- und 64-Bit-Modus.C ist hier nicht gerade die beste Sprache zum Golfen.
quelle
C is not exactly the best language for golfing here.
Im Ernst. Sieht gut aus :) Wenn ich zurückdenke, hätte ich alle Fragen zwingen müssen, +1 oder +2 Bytes hinzuzufügen, wenn sie eines der Zeichen verwendet hätten, die ein Digraph oder Trigraph xD ergibtJavaScript (ES6), 106 Byte
Wie?
Das ist ziemlich einfach.
Wir sollten jedoch beachten, dass:
Wenn i kleiner als 9 ist , wird der Ausdruck
'<:<%%'[i-9] + ':>%>:'[i-9]
ausgewertet,undefined + undefined
der gleich istNaN
(falsy as expected).Wenn i größer als oder gleich 9 ist , wird der Ausdruck
'??' + "=/'()!<>-"[i]
ausgewertet,"??" + undefined
der zur Zeichenfolge gezwungen wird"??undefined"
(wahr, wenn wir ein falsches Ergebnis erwarten).Deshalb müssen wir den Test in dieser Reihenfolge durchführen.
Testfälle
Code-Snippet anzeigen
quelle
Ruby , 104 + 1 = 105 Bytes
Verwendet das
-p
Flag für +1 Byte.Probieren Sie es online!
quelle
Javascript (ES6),
131123 Bytesquelle
PHP, 112 Bytes
Probieren Sie es online!
PHP, 115 Bytes
Probieren Sie es online!
PHP, 124 Bytes
Regex-Lösung
Probieren Sie es online!
quelle
JavaScript (ES6), 113 Byte
Nicht die kürzeste, aber ich wollte einen anderen Ansatz ausprobieren.
quelle