Mehr ist weniger und weniger ist mehr

72

Jeder kann die Ausgabe eines Programms vergrößern, indem er Zeichen hinzufügt. Machen wir also genau das Gegenteil.

Schreiben Sie ein vollständiges Programm, eine innere Funktion oder ein Snippet für eine REPL-Umgebung in einer Sprache Ihrer Wahl, die die folgenden Kriterien erfüllt:

  1. Ihr Code muss mindestens 1 Zeichen lang sein.

  2. Das Ausführen des Originalcodes erzeugt x Zeichen für die Ausgabe an STDOUT (oder die nächstgelegene Alternative), wobei 0 ≤ x <+ ∞ ist .

  3. Wenn Sie ein beliebiges einzelnes Zeichen aus dem ursprünglichen Code entfernen, erhalten Sie erneut einen gültigen Code, der mindestens x + 1 Zeichen für die Ausgabe an STDOUT erzeugt.

  4. Weder der ursprüngliche Code noch die Änderungen dürfen eine Fehlerausgabe nach STDOUT, STDERR, syslog oder anderswo erzeugen. Die einzigen Ausnahmen von dieser Regel sind Compiler-Warnungen.

    Ihr Programm benötigt möglicherweise keine Flags oder Einstellungen, um die Fehlerausgabe zu unterdrücken.

    Ihr Programm enthält möglicherweise keine schwerwiegenden Fehler, auch wenn keine Ausgabe erfolgt.

  5. Sowohl der ursprüngliche Code als auch die Modifikationen müssen deterministisch sein und eventuell enden (keine Endlosschleifen).

  6. Weder der ursprüngliche Code noch die Modifikationen dürfen Eingaben jeglicher Art erfordern.

  7. Funktionen oder Snippets behalten möglicherweise zwischen den Ausführungen keinen Status bei.

In Anbetracht der Tatsache, dass diese Aufgabe trivial ist, ist dies in einigen Sprachen und in anderen völlig unmöglich. Dies ist ein .

Bitte berücksichtigen Sie bei der Abstimmung die "relative Kürze" des Codes, dh eine kürzere Antwort ist kreativer als eine längere Antwort in derselben Sprache .

Dennis
quelle
2
Während die 1-Byte-Lösung beeindruckend ist, wäre es beeindruckender zu sehen, wer mit dem höchsten Verhältnis von x: x + nie die Länge der normalen Ausgabe im Vergleich zur durchschnittlichen Länge der Ausgabe erzielen kann, wenn ein Zeichen entfernt wird. Fügt meiner Meinung nach dieser Frage eine zusätzliche Herausforderung hinzu.
Trent
@FizzBuzz Easy: 111111111111111111^111111111111111111(wenn du das niedrigste Verhältnis gemeint hast).
jimmy23013
2
Oh, habe gerade bemerkt, dass es keine Endlosschleifen gibt. Ich habe ein> <> - Programm erstellt, mit dem die Ausgabe schneller erfolgt, wenn ein Zeichen entfernt wird, sodass nach einer konstanten kAnweisung die Ausgabe jedes Programms streng größer ist als die Ausgabe des Originals (weil das andere von da an) Programme würden in jeder Schleife schneller durchlaufen oder mehr ausgeben. Es sah ziemlich interessant aus. Vielleicht werde ich sehen, ob ich es trotzdem beenden und eine weitere Herausforderung stellen kann.
mbomb007
Eine interessante Bewertungsmetrik für diese Herausforderung könnte sein: "Die meisten einzigartigen Charaktere, Verbindungen gehen bis zur kürzesten Länge". Wir würden dann versuchen, alle Zeichen in einem String-Literal zu erhalten.
Lirtosiast
Was ist mit einer inneren Funktion gemeint?
dfeuer

Antworten:

94

Jede REPL mit Caret-XOR-Operation, 5 Bytes

11^11

11^11ist natürlich 0. Die einzigen anderen Möglichkeiten sind 1^11oder 11^1die 10 sind oder 1111die sich selbst produzieren.

Feersum
quelle
7
Gut gespielt, Feersum. Gut gespielt.
Alex A.
13
Minus würde auch den Trick machen.
Martin Ender
11
Ebenso99|99
Sp3000
@ Challenger5 -10ist länger als 0.
Martin Ender
@ MartinEnder Oh, ich verstehe. Aus irgendeinem Grund dachte ich, dass es eine größere Zahl sein musste.
Esolanging Fruit
55

TI-BASIC, 3 1

"

Wenn die letzte Zeile eines Programms ein Ausdruck ist, zeigt der Taschenrechner diesen Ausdruck an. Andernfalls wird der Rechner angezeigt, Donewenn das Programm beendet ist. Der Ausdruck hier ist die leere Zeichenfolge, er kann jedoch auch mit einer beliebigen einstelligen Zahl funktionieren.

2 Bytes:

isClockOn

Wie oben, jedoch mit einem 2-Byte-Token.

3 Bytes:

ππ⁻¹

Druckt 1aufgrund impliziter Multiplikation. Kann durch Hinzufügen von Paaren von ⁻¹'s auf unbestimmte Zeit verlängert werden . Das unten funktioniert auch.

√(25
e^(πi
⁻ii
ii³
2ππ   
cos(2π

Längere Lösungen:

11/77►Frac
ᴇ⁻⁻44
cos(208341   //numerator of a convergent to pi; prints "-1"

Es gibt wahrscheinlich auch mehrzeilige Lösungen, aber ich kann keine finden.

Lirtosiast
quelle
Ich bin nicht mit TI BASIC vertraut. Zählen Sie sqrt und Klammer als ein einzelnes Zeichen?
Level River St
6
Ja, der sqrt und die Klammer sind zusammen ein einzelnes Token, das als ein Byte im Speicher des Rechners gespeichert und mit einem Tastendruck eingegeben wird.
Lirtosiast
8
endlich eine Möglichkeit, diese nervige Nachricht zu stoppen!
Faraz Masroor
1
Es gibt kein DoneZeichen; Der Rechner zeigt an, Donewenn ein Programm ohne Ausdruck in der letzten Zeile (einschließlich des leeren Programms) ausgeführt wurde.
Lirtosiast
48

CJam, JavaScript, Python usw., 18 Bytes

8.8888888888888888

Die Ausgaben in CJam sind:

8.8888888888888888 -> 8.88888888888889
8.888888888888888  -> 8.888888888888888
88888888888888888  -> 88888888888888888
.8888888888888888  -> 0.8888888888888888

JavaScript und Python funktionieren auf ähnliche Weise. Es ist in JavaScript und Python nicht konkurrenzfähig, aber es ist nicht einfach, in CJam ein kürzeres zu finden .

jimmy23013
quelle
16
Schöner Fließkomma-Missbrauch!
Nderscore
31

Oktave, 5 Bytes

10:10

(x: y) gibt das Zahlenfeld zwischen x und y in Schritten von 1 an, sodass zwischen 10 und 10 nur das Element 10 vorhanden ist:

> 10:10
ans = 10

Wenn das zweite Argument kleiner als das erste ist, gibt die Oktave die leere Matrix und ihre Dimensionen aus:

> 10:1
ans = [](1x0)

> 10:0
ans = [](1x0)

Wenn ein Zeichen aus der ersten Zahl entfernt wird, enthält das Array weitere Elemente:

> 1:10
ans = 1 2 3 4 5 6 7 8 9 10

> 0:10
ans = 0 1 2 3 4 5 6 7 8 9 10

Wenn der Doppelpunkt entfernt wird, gibt die Nummer sich selbst zurück:

> 1010
ans = 1010
Craig Roy
quelle
1
auch gültig in R
Mnel
30

Mikroskript, 1 Byte

h

Dies erzeugt keine Ausgabe, da hdas implizite Drucken der Sprache unterdrückt wird. Das Entfernen des einzigen Zeichens erzeugt ein Programm, dessen Ausgabe ist 0\n.

Ich werde später versuchen, eine bessere Antwort zu finden.

BEARBEITUNG AM 17. NOVEMBER:

Dies funktioniert auch in Microscript II, mit der Ausnahme, dass 0\ndas leere Programm nicht nachgibt , sondern nachgibt null.

SuperJedi224
quelle
22

Pyth, 3 Bytes

cGG

Gwird mit den Kleinbuchstaben im Alphabet vorinitialisiert. cist die Split-Funktion.

cGGteilt das Alphabet nach Vorkommen des Alphabets auf, das mit ['', ''](8 Byte) endet .

Wenn der zweite Parameter fehlt, wird cdie Zeichenfolge durch Leerzeichen, Tabulatoren oder Zeilenumbrüche getrennt. Da keiner von ihnen in erscheinen G, für die Ausgabe cGist ['abcdefghijklmnopqrstuvwxyz'](30 Bytes).

Und GGdruckt einfach das Doppelte des Alphabets in zwei separaten Zeilen: abcdefghijklmnopqrstuvwxyz\nabcdefghijklmnopqrstuvwxyz(53 Byte).

Probieren Sie es online aus: Demonstration

Jakube
quelle
16

Python REPL, 6 Bytes

Nicht die kürzeste, aber hier ist eine weitere Antwort auf Fließkomma-Missbrauch:

>>> 1e308
1e+308
>>> 11308
11308
>>> 11e08
1100000000.0
>>> 11e38
1.1e+39
>>> 11e30
1.1e+31

Aber...

>>> 11e308
inf
Sp3000
quelle
14

JavaScript (und vieles mehr), 5 Byte

44/44 oder

44/44 -> 1
44/4  -> 11
4444  -> 4444
4/44  -> 0.09090909090909091
C5H8NNaO4
quelle
11

Sprache , 5 Bytes

00000

Die Länge des Programms beträgt 5, was dem Brainf *** -Programm entspricht, das ,ein Ende des Eingabezeichens liest und ohne Ausgabe endet.

Das Entfernen 0000von .Zeichen führt dazu, dass der Code eine Länge von 4 hat, die dem Programm brainf *** entspricht, das ein Zeichen (Codepunkt 0) ausgibt und endet.

Das Unary Äquivalent wäre 0000000000000(13 Nullen) , weil Sie ein führender vorangestellt haben 1auf die binäre Länge des Codes so 101wird 1101.

randomra
quelle
9

PHP, 6 Bytes

Ich habe diese Gruppe für ein paar Wochen beobachtet und bin von Ihren Programmiertechniken erstaunt. Jetzt musste ich mich anmelden, es gibt etwas, das ich tun kann, sorry :-) Dies könnte jedoch mein letzter Beitrag hier sein ...

<?php 

(Beachten Sie das Leerzeichen nach der Sekunde p)

Dies gibt eine leere Zeichenfolge aus. Wenn Sie ein Zeichen entfernen, wird der Text ohne das Zeichen ausgegeben. Beachten Sie, dass HTML-Fehler auftreten können (z. B. Inhalte, die nicht von Browsern gerendert werden <?ph).

Ich habe es auch mit dem echoTag versucht . dh z.B.:

<?= __LINE__;;

Dieser gibt aus 1. Wenn =weggelassen wird, <? __LINE__;;ist die Ausgabe. Das Entfernen der magischen Konstanten führt jedoch zu E_NOTICE : Hinweis: Verwendung der undefinierten Konstante LNE - angenommen ' LNE ' in ...

Wenn Hinweise nicht als Fehler gelten (Punkt 4 der Regeln), gilt dies auch :-)

Voitcus
quelle
Oh, das ist schlau. Ich denke, ein Zeilenvorschub würde auch funktionieren. Wenn die Aufgabe darin bestand, HTML zu erzeugen , wäre dies ungültig. PHP kann jedoch wie jede andere Programmiersprache über die Befehlszeile ausgeführt werden, wobei die Ausgabe einfach auf dem Bildschirm ausgegeben wird.
Dennis
@ Tennis PHP gibt alles aus . Sie können jederzeit STRG-U in Ihrem Browser verwenden, um die Ausgabe anzuzeigen. HTML ist möglicherweise ungültig, das Programm jedoch nicht (es gibt kein <HTML>Tag usw.)
Voitcus
1
Mein Punkt ist, dass es keine Notwendigkeit gibt, überhaupt einen Browser mit einzubeziehen. Einfach ausführen php test.php. Der zweite Code ist übrigens ungültig. Die Frage verbietet keine Fehler, sondern Fehlerausgabe , dh Fehler, Warnung, Hinweise usw.
Dennis
2
#!in einer Skriptdatei funktioniert auch.
Jimmy23013
9

Python, 10 8 Bytes

256**.25

Arbeitet in Python und bei Freunden. Vielen Dank an Jakube, der gezeigt hat, wie man es 2 Byte kleiner macht.

Von IDLE:

>>> 256**.25
4.0
>>> 26**.25
2.2581008643532257
>>> 56**.25
2.7355647997347607
>>> 25**.25
2.23606797749979
>>> 256*.25
64.0
>>> 256*.25
64.0
>>> 256**25
1606938044258990275541962092341162602522202993782792835301376L
>>> 256**.5
16.0
>>> 256**.2
3.0314331330207964

ursprünglich hatte ich das (10 bytes):

14641**.25

Von IDLE:

>>> 14641**.25
11.0
>>> 4641**.25
8.253780062553423
>>> 1641**.25
6.364688382085818
>>> 1441**.25
6.161209766937384
>>> 1461**.25
6.18247763499657
>>> 1464**.25
6.185648950548194
>>> 14641*.25
3660.25
>>> 14641*.25
3660.25
>>> 14641**25
137806123398222701841183371720896367762643312000384664331464775521549852095523076769401159497458526446001L
>>> 14641**.5
121.0
>>> 14641**.2
6.809483127522302

und in der gleichen Anmerkung:

121**.25*121**.25

Funktioniert aufgrund der schönen Rundung von Python in 17 Bytes identisch.

>>> 121**.25*121**.25
11.0
>>> 21**.25*121**.25
7.099882579628641
>>> 11**.25*121**.25
6.0401053545372365
>>> 12**.25*121**.25
6.172934291446435
>>> 121*.25*121**.25
100.32789990825084
>>> 121*.25*121**.25
100.32789990825084
>>> 121**25*121**.25
3.8934141282176105e+52
>>> 121**.5*121**.25
36.4828726939094
>>> 121**.2*121**.25
8.654727864164496
>>> 121**.25121**.25
29.821567222277217
>>> 121**.25*21**.25
7.099882579628641
>>> 121**.25*11**.25
6.0401053545372365
>>> 121**.25*12**.25
6.172934291446435
>>> 121**.25*121*.25
100.32789990825084
>>> 121**.25*121*.25
100.32789990825084
>>> 121**.25*121**25
3.8934141282176105e+52
>>> 121**.25*121**.5
36.4828726939094
>>> 121**.25*121**.2
8.654727864164496
rp.beltran
quelle
@Akiino Ich verstehe die von dir vorgenommene Bearbeitung nicht. Die Zeile, die Sie entfernt haben, war eine der erforderlichen Möglichkeiten und unterscheidet sich nicht von der darunter liegenden. Können Sie erklären, warum Sie es entfernt haben? Ich habe es zurückgerollt, kann es aber zugeben, um die Aktion mit angemessener Begründung rückgängig zu machen.
rp.beltran
Mein innerer Perfektionist konnte einfach nicht gut schlafen, da er wusste, dass die Linie (die ich entfernt habe) ohne Grund dupliziert wurde. Es gibt Linien 56..., 26...und dann 56...wieder, aber es gibt nur einen Weg 56 zu bekommen, so sollte es nur einmal aufgenommen wird, ist es nicht?
Akiiino
Oh, ich habe nicht gesehen, dass es dort zweimal war. Mein schlechter, guter Fang.
rp.beltran
Ich habe meinen Rollback zurückgesetzt.
rp.beltran
7

SWI-Prolog-Dolmetscher

__A=__A.

Hinweis: Sie können das Finale nicht entfernen. . Prolog-Interpreten suchen immer nach einem letzten Zeitraum, in dem Ihre Abfrage ausgeführt wird. Wenn wir uns also strikt an die Regeln dieses Wettbewerbs halten und uns erlauben, den Zeitraum zu entfernen, in dem sie nicht ausgeführt werden, wird eine Zeile übersprungen und auf zusätzliche Befehle gewartet wird durch einen Punkt beendet.

Die ursprüngliche Abfrage __A=__A.Ausgänge true..

Die Abfrage wird _A=__A.ausgegeben _A = '$VAR'('__A'). Ähnliche Änderungen (dh Entfernen von einem _oder beiden A) führen zu ähnlichen Ergebnissen.

Schließlich gibt die Abfrage __A__A.in SWI-Prolog Folgendes aus:

% ... 1,000,000 ............ 10,000,000 years later
% 
%       >> 42 << (last release gives the question)
Tödlich
quelle
12
@Jakube Ich verstehe nicht, dass sich eine verbindliche Endphase wesentlich von der Eingabe der Eingabetaste unterscheidet, um ein Snippet in einer anderen Sprache auszuführen. Wenn Sie den Zeilenvorschub entfernen, wird er auch nicht ausgeführt.
Fatalize
In einigen Sprachen entspricht es eher einem Semikolon, und das zählt als Zeichen.
Tomsmeding
5

Sed, 1 Byte

d

Da sedein Eingabestream erforderlich ist, schlage ich eine Konvention vor, dass das Programm selbst als Eingabe bereitgestellt werden soll.

$ sed -e 'd' <<<'d' | wc -c
0
$ sed -e '' <<<'d' | wc -c
2

Ein alternatives Programm ist x, aber das ändert sich nur 1in 2Bytes der Ausgabe, wenn es gelöscht wird.

Toby Speight
quelle
2
Ich habe tatsächlich vergessen, der Frage eine Regel ohne Eingabe hinzuzufügen , sodass Sie zum Zeitpunkt der Übermittlung keine Regeln verletzt haben. Ich habe die Diskussion erstellt. Sind Sprachen wie "sed" von "no input" -Regeln ausgenommen? auf Meta.
Dennis
5

K, 3 Bytes

2!2

Ausgänge 0im REPL. Das Entfernen der ersten 2 Ausgaben 0 1, das Entfernen der Ausrufeergebnisse 22und das Entfernen der letzten 2 Ergebnisse führen zu einer Zeichenfolge, die zwischen K Implementierungen variiert, aber immer mindestens 2 Zeichen umfasst (in (2!)OK laut @Dennis, Kona-Ausgaben 2!).

kirbyfan64sos
quelle
@ Sp3000 *Nur Ausdrucke entfernen 2. Entfernen der 2 Ausdrucke (*!)(eine unvollständige Funktion) in OK; Ich kenne keine anderen Dolmetscher (z. B. Kona, k2 usw.), obwohl ich glaube, dass Kona drucken würde *[!;]oder ähnliches. Ich entfernte den Stern, weil er am sichersten schien.
kirbyfan64sos
Sie können nicht wählen, es muss funktionieren, um alle Zeichen zu entfernen
edc65
@ edc65 Auf Kosten von nicht einem Byte behoben.
kirbyfan64sos
1
@ Tennis Aktualisiert.
kirbyfan64sos
5

MATLAB, 9 7 Bytes

Es ist 2 Bytes länger als die andere MATLAB / Octave-Antwort, aber ich mag es trotzdem, da es etwas komplexer ist.

Matlabs 'Operator ist die komplexe konjugierte Transponierte. Wenn Sie dies auf einer skalaren imaginären Zahl anwenden, erhalten Sie i' = -i. So wie imaginäre Zahlen einfach geschrieben werden 2ikönnen:

2i--2i'
ans =
     0    

Das Entfernen eines der Zeichen führt zu einer der folgenden Folgen:

ans =
   0.0000 - 1.0000i
   2.0000 - 2.0000i
   0.0000 + 4.0000i
   0.0000 + 4.0000i
   0.0000 + 1.0000i
   2.0000 + 2.0000i
   0.0000 + 4.0000i
Stewie Griffin
quelle
4

GolfScript, 2 Bytes

Diese Antwort ist nicht konkurrierend, aber da es der Code ist, der diese Herausforderung inspiriert hat, wollte ich sie trotzdem teilen.

:n

Standardmäßig drucken alle GolfScript-Programme den gesamten Stapel, gefolgt von einem Zeilenvorschub, indem sie putsauf dem gesamten Stapel ausgeführt werden. Die Funktion putsselbst wird wie {print n print}im Interpreter implementiert. Hierbei handelt es sich um eine integrierte Funktion printund neine Variable, die "\n"standardmäßig die Zeichenfolge enthält .

Jetzt schiebt ein GolfScript-Programm immer die Eingabe von STDIN auf den Stapel. In diesem Fall wird eine leere Zeichenfolge abgelegt, da keine Eingabe erfolgt. Die Variablenzuweisung :nspeichert diese leere Zeichenfolge in n, unterdrückt den impliziten Zeilenvorschub und macht die Ausgabe vollständig leer.

Durch das Eliminieren nbleibt die unvollständige Variablenzuweisung :(man könnte meinen, dass dies ein Syntaxfehler ist, aber nein), sodass der implizite Zeilenvorschub wie gewohnt gedruckt wird.

Wenn Sie eliminieren :, bleibt ndas übrig , was einen Zeilenvorschub auf den Stapel drückt, sodass das Programm zwei Zeilenvorschübe druckt.

Dennis
quelle
4

APL, J und möglicherweise andere Varianten, 3 Bytes

--1

Es wird 1in APL ausgegeben. -1gibt aus ¯1und --gibt in TryAPL Folgendes aus :

┌┴┐
- -
jimmy23013
quelle
3

J, 5 Bytes

|5j12

Größe der komplexen Zahl 5 + 12iin REPL.

   |5j12 NB. original, magnitude of the complex number `5 + 12i`
13
   5j12  NB. the complex number `5 + 12i`
5j12
   |j12  NB. magnitude of the undefined function j12
| j12
   |512  NB. magnitude of 512
512
   |5j2  NB. magnitude of 5 + 2i
5.38516
   |5j1  NB. magnitude of 5 + 1i
5.09902

.

J 9 Bytes

%0.333333

Basierend auf Gleitkommapräzision, Reziprok und Inverse Matrix.

   %0.333333 NB. original, reciprocal of 0.333333
3
   0.333333  NB. 0.333333
0.333333
   %.333333  NB. matrix inverse of 333333
3e_6
   %0333333  NB. reciprocal of 333333
3e_6
   %0.33333  NB. reciprocal of 0.33333
3.00003

Probieren Sie es hier online aus.

randomra
quelle
3

Mathematica, 3 Bytes

4!0

4!0  ->  0    the factorial of 4, times 0
4!   ->  24   the factorial of 4
40   ->  40
!0   ->  !0   the logical not of 0, but 0 is not a boolean value
Alephalpha
quelle
3

Dyalog APL , 2 Bytes

⍴0 gibt eine leere Zeichenkette zurück (Länge 0)

Rückgabe (Länge 1)

0Rückgabe 0(Länge 1)

Adam
quelle
2

Schnell (und viel mehr), 8 Bytes

93^99<84

Ausgabe (4 Zeichen):

true

Beim Entfernen des n-ten Zeichens lautet die Ausgabe:

n -> out
----------
0 -> false
1 -> false
2 -> false
3 -> false
4 -> false
5 -> 10077
6 -> false
7 -> false

Es gibt 78 mögliche Lösungen wie diese im Format von a^b<c.

Ich denke, das Ziel dieser Herausforderung sollte so viele Bytes wie möglich sein, denn je mehr Bytes, desto mehr Bytes können entfernt werden und sind daher schwieriger.

Kametrixom
quelle
Ich habe darüber nachgedacht, aber es wäre für Stack-basierte Sprachen zu einfach gewesen. Wenn dies eine Code-Bowling-Herausforderung wäre, hätte Aditsu eine unendliche Punktzahl. Sein Code kann immer wieder wiederholt werden; Jede Kopie wird genau das gleiche tun.
Dennis
@Dennis Oh ich verstehe, ja macht Sinn, aber ich denke, Bytes sind vielleicht kein sehr gutes Maß für diese Aufgabe
Kametrixom
Genau. Deshalb ist es ein Beliebtheitswettbewerb. Die am besten bewertete Antwort gewinnt.
Dennis
2

MathGolf , 2 Bytes

♂(

Probieren Sie es online!

Erläuterung

♂   Push 10
 (  Decrement TOS by 1

Warum funktioniert das?

Die reguläre Ausgabe ist 9. Wenn das (entfernt wird, ist die Ausgabe 10. Wenn das entfernt wird, holt das Programm implizit eine 0 aus dem Stapel, um den (Operator zu versorgen , der die Ausgabe vornimmt -1.

maxb
quelle
1

Clojure, 11 Bytes

(defn x[]1)

Zuerst dachte ich, nur eine Antwort mit einem Buchstaben in der REPL zu posten, wie die anderen Sprachen, z

user=> 1
1

Das Problem ist jedoch, dass die REPL beim Drücken der Eingabetaste nichts unternimmt, wenn Sie dieses Zeichen entfernen. Also musste es stattdessen mit einer Funktion umhüllt werden, wie es die Regeln der Frage zuließen. Wenn Sie diese Funktion aufrufen, wird 1 zurückgegeben. Wenn Sie das einzige Zeichen in der Funktion entfernen,

(defn x[])

Die Funktion gibt zurück, nilwas zusätzliche zwei Bytes ausgibt.

user=> (defn x[]1)
#'user/x
user=> (x)
1
user=> (defn y[])
#'user/y
user=> (y)
nil
Zach Thacker
quelle
1
Zur Verdeutlichung: Der Wettbewerb erfordert eine innere Funktion , die 1in diesem Fall (1 Byte) wäre.
Dennis
1

05AB1E (Legacy), 1 Byte

Jedes einzelne Byte in 05AB1E (Legacy) würde funktionieren, mit Ausnahme von [(Endlosschleife).

Sehen Sie hier alle möglichen Ausgaben für alle möglichen Einzelbyte-05AB1E-Programme.

Wenn Sie dieses einzelne Byte entfernen, sodass ein leeres Programm übrig bleibt, wird der Inhalt von info.txt standardmäßig an STDOUT ausgegeben.

Probieren Sie es online aus.


05AB1E , 1 Byte

?

Probieren Sie es online aus.

Leider gibt ein leeres Programm in der neuen Version von 05AB1E standardmäßig nur eine 1-Byte-Zeile aus ( online testen ), sodass fast keines der 1-Byte-Zeichen möglich ist, da sie nichts ausgeben müssen. Das einzig mögliche Programm, das nichts ausgibt (also auch nicht die implizite Newline) ist meines Wissens nach ?.

Kevin Cruijssen
quelle
0

Japt , 2 Bytes

Probieren Sie es online!

Avorinitialisiert wird auf 10, Ésubtrahiert 1, und das Ergebnis ist 1 Byte: 9.

Das Entfernen von É führt zu dem Programm A, das den Wert von A ausgibt 10, sodass das Ergebnis 2 Bytes beträgt.

In ähnlicher Weise führt das Entfernen von A dazu , dass nur É-1 interpretiert und als ausgegeben wird -1, sodass das Ergebnis 2 Byte beträgt.

Kamil Drakari
quelle
0

Runenverzauberungen , 6 (veränderbare) Bytes

11-{{B\
/B~~@/
\00<
R"Error"@

Probieren Sie es online!

Runic hat keine REPL-Umgebung und das Schreiben eines vollständigen Programms zur Erfüllung der Einschränkungen ist nicht ohne weiteres möglich (was entweder zu ungültigen Programmen oder zu keiner Ausgabe führt). Der Teil des Codes 11-{{Bfungiert also als innere Funktion, und nur dieser Teil kann geändert werden. Die BAnweisung ist nahe genug an einem Funktionszeiger und einer Return-Anweisung, damit diese Klassifizierung akzeptabel ist (da sie die IP an eine Position im Code springt und eine Return-Position an den Stack schiebt, auf die ein nachfolgender Boder verworfener Zugriff möglich ist ). .

  • Standardausgabe: 0
  • Entfernen eines der 1s:05
  • Entfernen der -:11
  • Entweder entfernen {:Error051
  • Entfernen der B:120

Das Finale \am Ende der ersten Zeile bildet eine äußere Grenze um die innere Funktion, falls der Rückgabebefehl entfernt wird, damit die IP nicht überall mäandriert (und keine Ausgabe erfolgt).

Beachten Sie, dass dies Error051nur eine willkürliche Zeichenfolge ist. Ich kann in diesen Teil des Codes alles einfügen, was ich will, und "Fehler" war ein amüsantes Ergebnis, wenn Code die Rückgabekoordinaten und die IP-Teleports an einen beliebigen Ort abfragt.

Draco18s
quelle