Schreiben Sie ein Programm, das nur druckbare ASCII-Zeichen verwendet , für die keine Eingabe erforderlich ist. Als Referenz sind hier die 95 druckbaren ASCII-Zeichen in der Reihenfolge:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Wenn Ihr Programm ausgeführt wird, sollte es 0
(zuzüglich einer optionalen nachgestellten Zeile) stdout ausgeben und dann normal beenden.
Wenn jedes Zeichen in Ihrem Programm in druckbarem ASCII durch das Zeichen N rechts daneben ersetzt wird und von einem Zeichen zum nächsten eine Schleife ~
durchläuft, ist die resultierende druckbare ASCII-Zeichenfolge idealerweise ein Programm, das in derselben Sprache ausgeführt werden kann und keine Eingabe und Ausgabe von N (plus) benötigt ein optionaler abschließender Zeilenumbruch) zu stdout und endet dann normal für N = 1 bis 94.
Zum Beispiel, wenn Ihr ursprüngliches Programm war
@Cat~(88 !)
Wenn Sie es ausführen, sollten Sie 0
alle Zeichen der druckbaren ASCII-Skala um eins nach oben verschieben
ADbu )99!"*
sollte zu einem anderen Programm führen, das ausgibt 1
. Wenn Sie dies erneut tun, wird im Idealfall ein anderes Programm ausgegeben2
BEcv!*::"#+
und so weiter mit 3 und 4 usw. bis zu einer 94-fachen Verschiebung
?B`s}'77~ (
Das ist im Idealfall ein Programm, das ausgibt 94
.
Die Erleichterung ist, dass dies nur das ideale Verhalten ist. Ihr Programm und seine 94 Derivate müssen nicht alle funktionieren, aber je mehr Sie von Anfang an nacheinander ausführen, desto besser. (Programme, die nicht funktionieren, verhalten sich möglicherweise überhaupt nicht.)
Wertung
Ihre Punktzahl ist die Anzahl der aufeinanderfolgenden Programme ab dem Original (dasjenige, das ausgibt 0
), das funktioniert, dh, Sie geben das entsprechende N korrekt aus. Die Antwort mit der höchsten Punktzahl (maximal 95) gewinnt. Bei Gleichstand gewinnt das Programm mit der kürzesten Länge in Bytes.
Wenn zum Beispiel @Cat~(88 !)
Ausgang 0
und ADbu )99!"*
Ausgang 1
aber BEcv!*::"#+
errored, dann würden Ihre Gäste 2 sein 2 Es ist , auch wenn ?B`s}'77~ (
genau Ausgänge 94
und auch wenn alle Programme für N = 30 bis 40 gearbeitet. Es wird nur die fortlaufende Anzahl von Arbeitsprogrammen beginnend bei Null gezählt.
Anmerkungen
- Um potenziellen Konflikten und Lücken entgegenzuwirken, müssen konkurrierende Antworten ihre Zahlen in Dezimalzahlen ohne führende Nullen oder Vorzeichen oder Dezimalstellen (z. B. einfach
0
1
2
...94
) ausgeben . - Sprachen, die unterschiedliche Grundlagen oder Zahlenformate verwenden, sind zulässig, jedoch nicht gewinnberechtigt.
- Das Vorhandensein einer optionalen nachgestellten Zeile muss nicht programmübergreifend konsistent sein.
- Funktionen und REPL-Befehle sind nicht erlaubt, nur vollständige Programme.
quelle
ans = 0
?0
auf stdout gedruckt sein. Sie können jedoch eine nicht konkurrenzfähige Antwort geben.Antworten:
Ook! 95 Programme,
1999214066 BytesDie einfache Möglichkeit, diese Herausforderung zu bewältigen, besteht in einer Token-Sprache, die keine Zeilenumbrüche benötigt und ungültige Token ignoriert.
Getestet mit diesem Interpreter *. Nimmt 8-Bit-Zellen für zusätzliche Golfiness an. Programme werden auch leicht überlappt, um einige Bytes zu sparen.
* Dieser Interpreter hat eine seltsame Eigenart, bei der der letzte Token ein Zeichen benötigt, um registriert zu werden, was sich auswirkt
n = 62
. Es gibt Offline-8-Bit-Dolmetscher ohne diese Eigenart, aber dies war der beste Online-Dolmetscher, den ich finden konnte.quelle
PHP, 95 Programme,
24392063 BytesErfordert, dass die Option output_buffering auf On gesetzt ist, oder Werte wie 4096. Der Standardwert für den Webdienst (jedoch nicht für die CLI) ist 4096, zumindest für meine Installation.
Der Arzt sagt,
ob_clean
dass er nichts zurückgibt. Aber es ist trotzdem wahr zurückgekehrt.Verschobene Programme sehen folgendermaßen aus:
Mit diesem CJam-Programm erstellt:
quelle
CJam , 10 Programme, 1 Byte
Ich dachte, ich füge das sofort hinzu, bevor jemand anderes frech wird und es tut: P
Ein CJam-Programm mit nur einer einfachen Zahl gibt diese Zahl aus. Auf diese Weise erhalten Sie auf einfache Weise 10 Programme, die funktionieren:
0
,1
,2
,3
,4
,5
,6
,7
,8
, Und9
.Es
:
überrascht nicht, dass das nächste Programm nicht ausgegeben wird,10
sondern einen Fehler "unvollendeter Operator" ausgibt .Dies funktioniert zweifellos in vielen Sprachen.
quelle