Herausforderung: Implementieren Sie ROT-47 in Code, der sowohl als sich selbst als auch als ROT-47-Version von sich selbst funktioniert.
Wertung:
Ihre Punktzahl wird als Prozentsatz der verwendeten, ROT-47-fähigen Bytes in beiden Programmversionen geteilt durch die Gesamtzahl der Bytes (alle Zeichen) beider Versionen berechnet .
Ein verwendetes, ROT-47-fähiges Byte ist ein beliebiges Zeichen, das von der ROT-47-Chiffre konvertiert wird, das nicht Teil eines Kommentars ist oder vom Compiler / Interpreter ignoriert wird. Beispielsweise wird jedes Zeichen in einem Brainfuck-Programm, das nicht +-<>[],.
als verwendetes Byte betrachtet wird, und jedes Zeichen in einem C-Programm, das und nach //
oder innerhalb von C einschließt, /* */
wird nicht als verwendetes Byte betrachtet. Alle Sonderzeichen in APL werden nicht als verwendet betrachtet, ebenso wie alle Zeichen in einem Whitespace-Programm (sorry).
Krawatten werden vom Programm mit den meisten positiven Stimmen gebrochen. Wenn es immer noch ein Unentschieden gibt, gewinnt das kürzeste Programm.
Beispiel Bewertung:
C: 62/64 = 96,875%
Beachten Sie, dass dieses Programm ein Leerzeichen enthält. Natürlich ist dieses Programm auch kein gültiger Eintrag, da es nicht einmal kompiliert, aber ich wollte zeigen, wie das Scoring funktioniert.
main(){printf("Hello World!");}
quelle
>2:?WXLAC:?E7WQw6==@ (@C=5PQXjN
kompiliert?Antworten:
Ruby, 100% (74 Zeichen)
Eingang bei STDIN, Ausgang bei STDOUT.
Die zweite Zeile ist die erste Zeile ROT-47'd. Wenn Sie das gesamte Programm mit ROT-47 bearbeiten, wird dies zu:
Meine Strategie basiert hier auf der Tatsache, dass:
V
ist,'
wenn ROT-47 würdej
ist,;
wenn ROT-47 würdeDaher
Vj=...Vj;
verwandelt sich in';l...';
, der im wesentlichen eine no-opVj=...Vj;
ist, jeden Code so auszuführen, wie Sie es könntenVj=0;{INSERT ANY CODE};Vj;
, und das wird'...';
mit ROT-47. Sie müssen nur aufpassen,V
dass Sie diesen Code nicht verwenden , da er sonst beschädigt wird.Eine ähnliche Logik kann umgekehrt verwendet werden, um die zweite Hälfte (
jV
anstelle vonVj
) zu erzeugen.quelle
C - 54,6%
Wenn ROT-47-übersetzt, bekommen wir
Beide Programme kompilieren und ROT-47-übersetzen das erste Argument:
quelle
GolfScript, 120/120 Byte = 100%
oder in ROT-47:
Keine Kommentare oder Saitenmissbrauch. Der undefinierte Befehl
LiUUbamUUZadckYLfZfZhcTbbZNYNT
(der dem Rest des Codes in ROT-47 entspricht) ist ein No-Op, wird aber dennoch vom Interpreter ausgeführt. Ich glaube, er zählt als verwendet.Dies war in GolfScript eigentlich eine ziemlich einfache Herausforderung. Die Hauptschwierigkeit bestand darin, die Ziffer zu vermeiden
1
, die von ROT-47 in den GolfScript-Befehl abgebildet wird`
. Die Befehle.
,-
,,
,\
,[
,/
,]
und^
auch zu vermeiden hatten, aber das war ziemlich einfach , in diesem Fall, da die Aufgabe kein Array Gebäude erforderlich.Bonus:
Hier ist ein GolfScript -Quine der Periode 2 (dh ein Programm, das ein zweites Programm druckt, das das erste Programm erneut druckt), wobei die beiden Programme die ROT-47-Transformationen voneinander sind:
Dieses Programm gibt sich selbst ROT-47-codiert aus und liefert ein weiteres GolfScript-Programm:
Das wiederum gibt sich selbst ROT-47-codiert aus und gibt das vorherige Programm wieder zurück. Somit ist dieses Programm auch eine rotierende Quine .
quelle
A
in Brainfuck im Zähler zählen würde, aber nicht im Nenner. Ist das dasselbe oder anders?LiUUbamUUZadckYLfZfZhcTbbZNYNT
ist ein gültiger Bezeichner in GolfScript und wird als Befehl ausgeführt. Es ist jedoch weder einer der integrierten Befehle , noch wird ihm vom Programm eine Bedeutung zugewiesen. Standardmäßig führt es also einfach nichts aus.Python, 96,1% (?)
Zeichenfolgen gelten Ihrer Definition nach als verwendeter Code?
quelle