Ihre Herausforderung besteht darin, N Codeausschnitte so zu schreiben, dass sie, wenn Sie das erste K ≥ 1 zusammenfügen, die Zahl K ergeben . Je höher N , desto besser. Hier ist der Haken: Sie dürfen keine Zeichen mehr als einmal in Ihren Snippets verwenden.
Regeln
- Sie können dasselbe Zeichen in einem (und nur einem) Snippet mehrmals verwenden.
- Diese Schnipsel müssen in der angegebenen Reihenfolge verkettet werden , ohne dass sie übersprungen werden.
- Sie müssen mindestens zwei Ausschnitte schreiben.
- Alle Snippets müssen in derselben Sprache sein.
- Denken Sie daran: Snippets müssen weder vollständige Programme oder Funktionen sein, noch müssen sie eigenständig funktionieren.
-1
ist ein gültiges Java-Snippet, z - Alle resultierenden Verkettungen müssen den jeweiligen K- Wert ausgeben .
- Der Gewinner ist die Person mit dem höchsten N- Wert. Tie-Breaker ist die kürzeste Gesamtprogrammlänge in Bytes.
Beispiel
Angenommen , Ihre Schnipsel waren AD
, xc
, 123
, und ;l
. Dann:
AD
sollte produzieren1
ADxc
sollte produzieren2
ADxc123
sollte produzieren3
- und
ADxc123;l
sollte produzieren4
.
Dieses Programm hätte eine Punktzahl von 4 .
number
code-challenge
source-layout
Conor O'Brien
quelle
quelle
1
und `2` sein?Antworten:
Python 3 , 1 112 056 Snippets, 4 383 854 Bytes
Dies ist der Antwort von @ WheatWizard auf Python 2 sehr ähnlich . Ich habe kurz vor der Veröffentlichung damit begonnen, aber das Aussortieren von Pythons Macken in Bezug auf Nicht-ASCII-Zeichen und lange Zeilen hat einige Zeit in Anspruch genommen. Ich habe festgestellt, dass Python Zeilen mit jeweils 8191 Bytes liest. Wenn diese 8191 Bytes nur einen Teil eines Mehrbytezeichens enthalten, gibt Python einen SyntaxError aus .
Das erste Snippet verwendet eine Kodierung aus den wenigsten (unterschiedlichen) Zeichen, um die Vollständigkeit zu überprüfen .
Diese Monstrosität baut einfach den folgenden String auf und führt ihn aus.
Die folgenden Ausschnitte sind alle genau ein Zeichen lang. Die nächsten drei Zeichen sind
\n
,\r
und#
. Alle übrigen Unicode-Zeichen (außer Ersatzzeichen) folgen in einer bestimmten Reihenfolge, sodass sie an der 8191-Byte-Grenze ausgerichtet sind.Das folgende Skript generiert die entsprechenden Programme für die Eingabe von k zwischen 1 und 1112056 .
quelle
Perl 5,
50.091151 SnippetsErster Ausschnitt:
2. bis 26. Schnipsel:B
durchZ
27. bis 46. Schnipsel:
a
durchz
, ohne die Zeichen in "Länge"47. bis 56. Schnipsel:
0
durch9
57. Snippet:_
Die verbleibenden Ausschnitte sind die 50.105 einzelnen Unicode-Zeichen, die Perl als "Wort" -Zeichen ansieht, mit Ausnahme der 14 verschiedenen Wortzeichen im ursprünglichen Ausschnitt in beliebiger Reihenfolge.Nun, es war ein netter Gedanke, aber es stellt sich heraus, dass Perl Ihnen nach einer bestimmten Länge den Fehler "Bezeichner zu lang" liefert. Dies ist das längste kombinierte Programm, mit dem ich Perl zum Verdauen bringen konnte:
Die perldiag-Handbuchseite besagt, dass "Zukünftige Versionen von Perl diese willkürlichen Einschränkungen wahrscheinlich beseitigen werden", aber mein Perl 5.18 hat dies nicht getan.
Erläuterung:
Im nicht strengen Modus interpretiert Perl 5 Zeichenfolgen ohne Anführungszeichen als "Barewords" und zitiert sie im Wesentlichen automatisch für Sie. Sie sind in der Regel am besten zu vermeiden, aber sie helfen hier sicher!
quelle
a-z
Snippets werden höchstwahrscheinlich Zeichen aus Ihrem ersten Snippet verwendet.length("length(
.Python 2 , Punktzahl 32
Mit nachfolgenden Schnipseln
B
,C
,D
, ...Y
,Z
,u
,v
,w
,x
,y
,z
.In einer Wendung dramatischer Ironie unterstützt Python 3 Unicode-Bezeichner, die uns bei diesem Trick sehr albern erscheinen lassen - aber nicht
print
ohne Klammern. Ich könnte auch Ziffern in den Bezeichner stopfen, aber ich denke nicht, dass es sehr lustig ist, mehr herauszuholen.Probieren Sie es online!
Python 2 , Punktzahl 18, weniger Cheat-y
Probieren Sie es online!
quelle
JavaScript (ES6, V8 6.x),
5250298119526119638119683128781 Snippets,88149147575179575631576121612789 BytesWeiter unten befindet sich ein Stack-Snippet, das das vollständige Programm generiert, es auswertet und einen Download-Link für die Datei erstellt. Dieses Snippet generiert weiterhin bessere Antworten, da neuere Versionen von Unicode von neueren Versionen von JavaScript unterstützt werden, die der Sprache neue gültige Bezeichner hinzufügen.
Nur ASCII verwenden
Erläuterung
Hierbei wird die Metaprogrammiertechnik verwendet
Proxy
, um eine Get-Handler-Trap für das Objekt zu aktivieren und auf den Eigenschaftsnamen als Zeichenfolge zuzugreifen, wobei der Bezeichner alslength / 2
Wert zurückgegeben wird.Wenn das erste Snippet mit as beginnt
new Proxy({},{get:(n,{length:e})=>e>>(e/e)}).nn
, erhöht jedes hinzugefügte Snippet die Zeichenfolgelength
des Bezeichners, indem2
sichergestellt wird, dass.repeat()
der entsprechende Codepunkt zweimal für 2-Byte-UTF-16-Zeichen und einmal für 4-Byte-UTF-16-Zeichen angegeben wird.Bezeichner in JavaScript
In der ECMAScript-Spezifikation ist eine
IdentifierName
mit folgender Grammatik definiert:Die Antwort generieren
Anfangs habe ich die Unicode-Eigenschaft "ID_Continue" verwendet und ein Node.js-Skript geschrieben, das die vollständige Antwort generiert. Jetzt ist es nur ein clientseitiges Skript, das mit einer Naivität
eval()
auf gültige Zeichen überprüft und stattdessen alle Unicode-Codepunkte durchläuft:Das Ausführen
stat -f%z answer.js
ergibt eine Byteanzahl von 612802, aber wir subtrahieren 13 Bytes für dieconsole.log(
und schließen)
die tatsächliche Übermittlung ab.Codierung
Die Quelle wird als utf-8 gespeichert, was sich in der enormen Byteanzahl der Antwort widerspiegelt. Dies geschieht, weil Node.js nur Quelldateien ausführen kann, die in utf-8 codiert sind.
JavaScript speichert intern Zeichenfolgen mit UTF-16-Codierung, sodass die in JavaScript zurückgegebene Zeichenfolge "Zeichenlänge" nur halb so viele Byte wie die in UTF-16 codierte Zeichenfolge enthält.
quelle
x
anstatt$
es als zusätzliches Bezeichnerzeichen freizugeben?Python 2 , Punktzahl
610+3 dank pizzapants184
+1 dank WheatWizard
Probieren Sie es online!
quelle
print int(True)
zu "nur" wechseln4/4
, können Sieand 7
7 addieren , da Sie die Nummer nicht drucken müssen, sondern nur "produzieren"&2
erhöht Ihre Punktzahl um eins, da es&
eine höhere Priorität hat als^
, aber Sie müssen die Zahl 2 irgendwie machen. (Sie können verwenden[[]==[]][[]<[]]<<[[]==[]][[]<[]]
)ord
widersprachand
, aber ich habe das behobenTI-Basic (Serie 83, OS Version 1.15 oder höher), Punktzahl:
17181924(Tiebreaker: 53 Bytes.)
Sie können eine sehr große Punktzahl erzielen, indem Sie die Länge der Zeichenfolge wie gewohnt missbrauchen: Beginnen Sie mit (wie @Scrooble hervorhebt) und fügen Sie am Ende immer einzelne Token-Schnipsel hinzu. TI-Basic hat über 700 davon, was eigentlich ganz gut funktioniert. Aber hier ist ein anderer Ansatz:
length("A
length("length(
Beachten Sie, dass TI-Basic Token versehen ist, so (zum Beispiel) der
e^(
Befehl nicht alle Zeichen verwendene
,^
,(
.Beruht auf einer undokumentierten Funktion des
sub(
Befehls: Neben der Suche nach Teilzeichenfolgen kann damit auch eine Zahl durch 100 geteilt werden.Dies funktioniert , wenn es auf einem frischen Rechner laufen, was uns vermuten lässt , dass
X
,Y
,Z
alle Null sind , dass die Fenstervariablen auf ihre Standardwerte eingestellt sind, dass der Rechner im Bogenmaß - Modus ist, und dassrand
‚s ersten drei Ausgänge über wird0.943
,0.908
,0.146
.quelle
PowerShell , 25 Byte, Ergebnis 5
Snippet 1:
' '.count
Ausgaben1
. Dies geschieht durch die Verwendung.count
einer Zeichenfolge, da nur eine Zeichenfolge vorhanden ist. Probieren Sie es online!Snippet 2:
*2
gibt aus,2
weil wir das1
vom vorherigen Snippet nehmen und es mit zwei multiplizieren Probieren Sie es online aus!Snippet 3:
+!""
Ausgabe3
durch Hinzufügen des Booleschen Werts eines leeren Strings. Dadurch wird implizit die leere Zeichenfolge in umgewandelt$true
, die wiederum implizit in umgewandelt1
wird. Wir fügen also eine hinzu. Probieren Sie es online aus!Snippet 4:
-(-1)
Ausgänge4
durch einfaches Subtrahieren des Negativen Probieren Sie es online!Snippet 5:
|%{5}
Gibt5
aus, indem die vorherige Nummer in eine Schleife aufgenommen und jede Iteration dieser Schleife (nur eine, da es nur eine Eingangsnummer gibt) ausgegeben wird.5
Probieren Sie es online aus!Vielen Dank an Jan für eine Alternative
4
und eine clevere Art, sich etwas auszudenken5
.quelle
' '.count*2+!""-(-1)|%{5}
einer Punktzahl von 5?$_
drinnen benutzen|%{ }
. Vielen Dank!C, 10 Schnipsel, 45 Bytes
Probieren Sie es online!
quelle
MATL , Score
815,64123 Bytes11,23ZP
war seine Idee, zusammen3
mitI
für Snippet 7 ändern .OO...N&
war seine Idee.Da kommt noch mehr.Ich kenne die MATL-Funktionen nicht auswendig, also musste ich in der Dokumentation hin und her und her gehen ... :)Probieren Sie es online!
quelle
5Yy
ist schön! Ich benutze bereitsY
in 3, um die zweite Primzahl zu erhalten :(OOOOOOON&
. Wenn Sie andere hinzufügen, sollte dies wahrscheinlich der letzte sein, da&
yyyyyyyy...
? Ich musste die Zahly
verdoppeln , 24 , um sie 12-mal zu duplizieren ...?d
. Ich bin jetzt auf dem Handy, versuche aber,X#
den Stack zu debuggen und auszudruckenV , 10 Punkte
Probieren Sie es online!
quelle
Jelly , 253 Bytes, 250 Punkte
Nachfolgende 1-Zeichen-Snippets:
Hinweis:
¶
Kann auch durch ersetzt werden\n
, da dies dasselbe Byte in Jellys Codepage ist.Nachdem Sie alle diese Snippets angehängt haben, können Sie das 2-Zeichen-Snippet anhängen
”‘
.+1 danke an Dennis .
Probieren Sie es online!
quelle
Sprache , 1 112 064 Schnipsel
Das n- te Snippet besteht aus 2 3n-1- Wiederholungen des n- ten Unicode - Nicht-Ersatzzeichens bis einschließlich des 1 112 064- ten und letzten Nicht-Ersatzzeichens des aktuellen Unicode-Standards.
Die Ausgabe erfolgt der Einfachheit halber unär (mit dem Null-Byte als Ziffer). Dezimalstellen sind möglich, verlängern jedoch die Programmdauer. Mit unary können wir die ersten Programme testen.
Für n = 1 erhalten wir 4 Wiederholungen von U + 0000 . Dies entspricht dem Brainfuck-Programm
.
, das ein Null-Byte ausgibt.Für n = 2 erhalten wir 32 Wiederholungen von U + 0001 für insgesamt 36 Zeichen. Dies entspricht dem Programm brainfuck
..
, das zwei Nullbytes ausgibt.Für n = 3 erhalten wir 256 Wiederholungen von U + 0002 für insgesamt 292 Zeichen. Dies entspricht dem Programm brainfuck
...
, das drei Nullbytes ausgibt.Und so weiter, bis zu n = 1 112 064 .
quelle
'+'*(48 + d) +'.>'
jeden Fall würde das Codieren des Brainfuck-Programms für jede Dezimalstelle von n die gleiche Punktzahl erzielen. Es ist nur viel schwieriger zu beschreiben.BASIC (ZX Spectrum), Punktzahl 244 (neue Punktzahl 247) [Betrügt das?]
Snippet 1:
Snippet 2:
:
Snippet 3:
REM
Snippets 4-244: Einzelzeichen-Snippets, wobei alle Zeichen verwendet werden, die nicht in den Snippets 1, 2 und 3 enthalten sind.
Erläuterung
Zeichen
Bei Spectrum
PRINT
handelt es sich um ein einzelnes Zeichen (Code 245). Das Snippet 1 verwendet 11 verschiedene Zeichen:2
,3
,5
,6
,+
,-
,*
,(
,)
,PRINT
undPEEK
was Sie sehen , wie Räume ein Teil der Zeichen sindPRINT
undPEEK
, so dass der Raum selbst nicht benutzt worden ist . Ich habe beschlossen, die Zeilennummer 2356 anzugeben, da dies die einzigen Ziffern im Code sind.Zeichen 13 und 14 sind nicht erlaubt. Das bedeutet, dass für die Snippets 2-244 noch 243 Zeichen zur Verfügung stehen, beginnend mit
:
undREM
um den Code zu vermeiden, der zu Fehlern führen oder andere Aktionen ausführen würde.Wie es funktioniert
Aus diesem Grund bin ich mir nicht sicher, ob diese Antwort von dem Buch stammt.
23635 ist der Speicherort für die 16-Bit-Systemvariable PROG, die als LH gespeichert ist. (Der Wert ist normalerweise 23755. Aber abgesehen von einem falschen Ergebnis, wenn dies nicht der Fall ist, würde mich die direkte Verwendung dieser Nummer, auch wenn sie den Code verkürzen würde, zusätzliche Ziffernzeichen kosten.) Der Wert von PROG ist der Speicherort wo das Programm selbst gespeichert ist. Die ersten zwei Bytes sind die als HL gespeicherte Zeilennummer, die folgenden zwei Bytes sind die als LH gespeicherte Zeilenlänge. Auf diese Weise ermittelt das Programm die Länge seiner eigenen Zeile, sodass etwas Passendes abgezogen werden muss
Zeichen speichern
Wenn man bedenkt, wie Zahlen gespeichert werden, hätte die Zeile mit -114 enden können, sodass Snippet 1 1 ergeben würde. Ich wollte jedoch keine zusätzlichen Ziffern verwenden, nahm stattdessen zwei zweistellige Zahlen weg, die sich dann summieren mussten bis 122; 56 und 66 haben sich gut geschlagen.
Der Code ist ein bisschen hässlich, da alle Werte von PROG (
PEEK 23635+256*PEEK 23636
) zweimal verschachtelt und berechnet werden . Aber wenn ich es speichere und dann den gespeicherten Wert verwende, würde es zusätzliche Zeichen / Schnipsel kosten - die Zeile könnte wie folgt beginnendie 4 zusätzliche Zeichen verwenden würde:
LET
,p
,=
und:
.Vielleicht werde ich das so konstruieren, dass alle Zahlen aus Zahlen berechnet werden, die nur eine Ziffer verwenden und 3 Schnipsel erhalten.
BEARBEITEN:
Hier ist das neue Snippet 1 (so wird eine lange einzelne Zeile im Spektrum umbrochen angezeigt. Wenn Sie also den Code testen möchten, können Sie sehen, dass Sie ihn richtig eingegeben haben):
Ich könnte einen weiteren Ausschnitt gewinnen, indem ich das vermeide
+
und mich nur damit begnüge-
. Ich werde es nicht versuchen, das war genug von einer Tortur.quelle
Klein 011 , 9 Schnipsel
Snippet 1
Probieren Sie es online!
Snippet 2
Probieren Sie es online!
Snippet 3
Probieren Sie es online!
Snippet 4
Probieren Sie es online!
Snippet 5
Probieren Sie es online!
Snippet 6
Probieren Sie es online!
Snippet 7
Probieren Sie es online!
Snippet 8
Probieren Sie es online!
Snippet 9
Probieren Sie es online!
Erläuterung
Dies war eine wirklich lustige Herausforderung für Klein. Die einzigartige Topologie von Klein ermöglicht viele interessante Aufgaben. Wie Sie vielleicht bemerken, fügen die Antworten 5-9 dem Code nur Füllzeichen hinzu (Buchstaben tun in Klein nichts, deshalb habe ich sie als Füllzeichen verwendet), um den Begrenzungsrahmen zu verlängern. Dies führt dazu, dass die IP-Adresse aufgrund der einzigartigen Topologie von Klein einen anderen Pfad durch frühere Teile des Codes nimmt.
Ich werde später eine vollständige Erklärung abgeben, aber im Moment ist hier eine leicht verständliche Version des Programms, bei der alle Buchstaben durch
.
s ersetzt sind.Probieren Sie es online!
quelle
> <> , Score:
Infinity1,112,064-6 = 1,112,058Snippet 1 (6 Bytes)
Dieses Snippet gibt die Anzahl der Zeichen nach dem; Plus eins. Dies kann erweitert werden
unendlichsehr große Menge Schnipsel eines Zeichens jeder. Ein kurzer Blick auf Google sagt mir, dass es 1.112.064 mögliche Unicode-Zeichen gibt, abzüglich der 6, die ich bereits verwendet habe.Probieren Sie es online
quelle
R , Punktzahl: 79
Dank an Seans Perl Antwort für die Inspiration; dies missbraucht einige Macken des R-Interpreters.
Erster Ausschnitt:
Nachfolgende Ausschnitte sind die Zeichen in:
Probieren Sie es online!
Die
scan
Funktion liest Daten aus der Datei,""
die standardmäßig verwendet wirdstdin()
.Die Dokumentation für
stdin()
zeigen , dass:Somit werden die nachfolgenden Daten zur Datei. Dies kann einfach erweitert werden und mit mehreren verschiedenen Codierungen arbeiten.
quelle
Pyke , 256 Bytes, 254 Punkte
Bitte beachten Sie, dass dies Hex-Codes der tatsächlichen Bytes sind, die durch Leerzeichen getrennt sind, da dort das Null-Byte (
\x00
) enthalten ist.Snippet starten:
Nachfolgende 1-Zeichen-Snippets:
Probieren Sie es hier aus!
quelle
Java 8, 7 Schnipsel (19 Bytes)
Nur ein Anfang, werde weiter daran arbeiten.
Probieren Sie es hier aus.
Erläuterung:
Die Priorität der Ausführung wird möglicherweise klarer, wenn ich Klammern hinzufüge:
a*b
: Multiplizierena
mitb
~a
:-a-1
a>b?x:y
:if(a>b){ x }else{ y }
a|b
: Bitweises ODERa
mitb
a^b
: Bitweises XORa
mitb
a%b
:a
modulo-b
quelle
Python 2 , 110 Schnipsel
Hier ist der komplette Ausschnitt:
Probieren Sie es online!
Der erste Ausschnitt ist
Und dann sind die nächsten 109 Snippets die nächsten 109 Bytes.
Das ist ziemlich "betrogen", wie Lynn es ausdrückt. Das erste Snippet öffnet die Datei und subtrahiert 44 von ihrer Länge, dann addiert jedes andere Snippet 1 zur Länge der Datei, ohne die Logik des gesamten Programms zu ändern. Damit wird das Ergebnis der Ausgabe um 1 erhöht.
quelle
Gleichstrom , Punktzahl 13, 58 Bytes
Probieren Sie es online! (Beachten Sie, dass die TIO-Version
f
nach jedem Snippet ein fügt , um den gesamten Stapel zu drucken. Dies zeigt, dass bei jedem Snippet nur ein einziger Wert auf dem Stapel verbleibt. Außerdem habe ich das führende Leerzeichen im letzten Snippet vergessen, was für die Funktionen keine Rolle spielt durch Zeilenumbrüche getrennt, zählt aber zu meiner Zeichenverwendung)Jede zusätzliche Snippet-Verkettung belässt den gewünschten Wert und nur den gewünschten Wert auf dem Stapel. Nachdem ich 12 geschlagen hatte, hatte ich keine Möglichkeit mehr, den Stapel zu essen. Ich habe schon früh versucht, mathematische Operationen zu verwenden, da sie den Stapel auffressen und es schwieriger wird, auf diese Weise mit größeren Zahlen umzugehen. Wenn alles gesagt und getan ist, habe ich nur noch die Ziffer 0, mit der ich spielen kann, und sehr wenig, was das Stack-Popping angeht, also denke ich, dass 13 ziemlich nahe daran ist, das Maximum zu erreichen. Ich bin mir sicher, dass es viele ähnliche (und wahrscheinlich kürzere) Wege gibt, um dies in DC zu erreichen. Beachten Sie, dass Cygwin AF gemischt mit 0-9 anders handhabt als die meisten DC-Versionen
44C4r/CC 4//
. Dies funktioniert für das endgültige Snippet in Cygwin.quelle
Pyth , 124 Schnipsel
Probieren Sie es online!
Nicht druckbare Zeichen wurden mit drei druckbaren Zeichen (
x..
) maskiert . Das erste Snippet ist drei Bytes lang, jedes Snippet danach wird um eins länger.quelle
Beatnik , 22 Bytes, Punktzahl 20
Wenn Sie das Wort "Snippet" annehmen, können Sie den Wert auf dem Stapel verschieben.
quelle
Oktave, Partitur 86
Gefolgt von:
Dies nutzt die Tatsache aus, dass Octave alles nach einem Funktionsnamen als Zeichenfolgeeingabe behandelt. So
nnz n
gibt die Anzahl der Nicht-Null - Elemente in der Zeichenfolge'n'
. Wir kommen zu 86, indem wir die anderen druckbaren ASCII-Zeichen hinzufügen.',"%#
funktioniert nichtquelle
APL (Dyalog) , Punktzahl 12
+1 Punktzahl dank @dzaima
Erster bis dritter Ausschnitt:
Dann jeder von
234567890
.Probieren Sie es online!
quelle
Julia 0,6, 111217
Das folgende Skript erstellt das vollständige Programm:
Erläuterung
Das Makro
gefolgt von allen eindeutigen Unicode-Zeichen, die in Bezeichnern zulässig sind, berechnet mit
isidentifier
. Einige diakritische Zeichen zählen nicht mehr, deshalb habe ich sie entfernt.quelle
TeX, Score 61 (möglicherweise 190)
Erster Ausschnitt:
Andere 60 Schnipsel: in beliebiger Reihenfolge mit jeweils einem Zeichen aus
Erläuterung:
\len
Wird am Ende aufgerufen und konvertiert eine Steuersequenz in eine Zeichenfolge. Jedes Zeichen (einschließlich\
) ist ein Zeichen der Zeichenfolge. Dann\glen
verschlingt er einen Token\
und\tlen
zählt die verbleibenden Token. Es gibt daher die Länge dieser Steuersequenz aus (ohne\
).Zeichen aus anderen Codefragmenten erweitern die anfänglich nur auszuführende Steuersequenz
\t
. Eine aus mehreren Zeichen bestehende Steuersequenz muss nur aus Buchstaben bestehen, sie werden jedoch alle als Buchstaben gezählt, da ihnen der Kategoriecode 11 zugewiesen wurde (unter Verwendung von ASCII-Codes, damit die Zeichen selbst nicht im ersten Snippet erscheinen).Ich entschied mich für die Verwendung von Oktalcodes für einige Zeichen, die mich ein Symbol kosteten,
'
sparte mir jedoch zwei Ziffern, 8 und 9, und erhielt so einen Ausschnitt. Hätte vielleicht noch ein paar mehr verdienen können, wenn ich nicht gebraucht hätte\expandafter
.Ausgabe
Mögliche Änderung: Wrap
\number\count1
in,\message{}
damit die Ausgabe nicht in die.dvi
Ausgabe geht, sondern in die Konsolenausgabe und.log
. Es kostet keine zusätzlichen Briefe.190
Leider arbeitet TeX mit ASCII und nicht mit Unicode (oder jetzt?), Aber meine Lösung könnte möglicherweise um 129 weitere Einzelzeichen-Snippets erweitert werden, die die Zeichen mit den Codes 127-255 enthalten. Vielleicht haben sogar einige Zeichen vor 32 nicht funktioniert. Das Zeichen 32 (Leerzeichen) hat nicht funktioniert, sonst hätte ich es auch in ein Snippet eingefügt - brauchte es nicht im ersten Snippet. Natürlich müsste jedes dieser zusätzlichen Zeichen
\catcode
im ersten Snippet in einen Buchstaben umgewandelt werden.quelle
Pip, 57 Bytes, Score = 16
Beachten Sie, dass es sich
<tab>
um ein literales Tabulatorzeichen handelt (ASCII 9). Probieren Sie es online!Jedes Snippet ist ein vollständiges Programm, das die gewünschte Nummer ausgibt. Die meisten von ihnen arbeiten nach dem Prinzip, dass der letzte Ausdruck in einem Pip-Programm automatisch gedruckt wird: In Snippet 5 wird beispielsweise der vorherige Code ausgewertet, aber der einzige wichtige Teil ist der
5
. Ausnahmen sind:RT9
(Quadratwurzel von 9), aber nach Snippet 2 wird es tatsächlich als2RT9
(2. Wurzel von 9) analysiert - was natürlich dasselbe ist.y
Variable. Snippet 8 gibt dann den Wert von ausy
.o
(vorinitialisiert zu 1). Snippet 13 nimmt dieses Ergebnis und subtrahiert esv
(vorinitialisiert auf -1).1
ohne eine neue Zeile aus (Ok=k
wobeik=k
der Standardwert für die Wahrheit 1 ist) und druckt dann automatisch6
.Andere interessante Sachen:
14
aus dem Wert von pi zu extrahieren ."F"
von hexadezimal.quelle
Zsh , Score> 50 000 (1 112 046?), 16 + + (UTF-8-Codepunktlängen) Bytes
Zsh verarbeitet standardmäßig Multibyte-Codierungen. Das Basis-Snippet enthält 18 eindeutige Zeichen, insgesamt 34. Jeder andere Codepunkt (außer dem Null-Byte) kann hinzugefügt werden. Während ich dies schreibe, befindet sich mein Skript, das diese testet, auf einem Codepunkt von ~ 50.000, einer Gesamtdateigröße von 150 KB und einer Geschwindigkeit von ca. 30 Snippets / Sekunde. Führen Sie hier mein vollständiges Testskript aus. Möglicherweise möchten Sie es anpassen, um an späteren Codepunkten zu beginnen.
Probieren Sie die ersten 2000 Snippets online aus!
Weitere Ausschnitte sind mit dieser Technik möglich .
quelle