Die Aufgabe ist einfach: Drucken Sie The quick brown fox jumps over the lazy dog
mit möglichst wenigen unterschiedlichen Zeichen in Ihrem Quellcode.
print "The quick brown fox jumps over the lazy dog"
hat eine Punktzahl von 29 Zeichen, da alle 26 Kleinbuchstaben mindestens einmal vorkommen, sowie ein T in Großbuchstaben, Leerzeichen und Anführungszeichen. Ich bin mir aber sicher, dass Sie kreativer werden können!
Brainfuck, Whitespace und ähnliche Sprachen (nach meinem Ermessen) sind nicht erlaubt. Zeilenumbrüche zählen als ein Zeichen. Der Code kann so lang wie nötig sein. Ich akzeptiere eine Lösung am 21. April, 23:59 EST. Bei Stimmengleichheit wird die kürzere Antwort akzeptiert.
code-challenge
Fraxtil
quelle
quelle
least-characters
ein offizielles Kriterium und einen Tagcode-golf
Antworten:
dc: 4 verschiedene Zeichen (
384375363361360350 Zeichen insgesamt)Eine kurze Antwort (aber bei weitem nicht die kürzeste, ich arbeite noch daran) mit nur 4 verschiedenen Zeichen und insgesamt
384375363361360350 Zeichen, ich hoffe, Sie finden sie völlig selbsterklärend:Die frühere Antwort ist etwas ausführlicher (sie enthält 13916 Einsen):
Ah, du musst den alten, vertrauenswürdigen Tischrechner einfach lieben!
quelle
64-Bit-Intel-Maschinencode für Linux in Binärform: 2 verschiedene Zeichen
Ich lehne es ab, es unärgerlich umzuschreiben.
quelle
Lua, 8 verschiedene Zeichen
Alle Zeilenumbrüche müssen aus diesem Code entfernt werden, um eine Zeile mit der Länge 1998 zu erhalten.
Lua 5.2 erforderlich
Wie beliebiges Lua-Programm mit nur 8 Zeichen geschrieben werden könnte
load"\05
Mit Zeichen
05\
ist es möglich, Zeichenfolgenliteral für jede Zeichenfolge zu schreiben, die aus Zeichen besteht0257\
. In der Tat"\\"
bedeutet Backslash"2" == "\50"
und"7" == "\55"
("\ddd"
in Lua bedeutet char mit Dezimalcodeddd
).Mit Zeichen
0257\
ist es möglich, ein String-Literal für jeden String zu schreiben, der aus Zeichen024579\
(as"4" == "\52"
und"9" == "\57"
) besteht.Im nächsten Schritt werden Zeichen
01245679\
verfügbar.Ein weiterer Schritt ist erforderlich, um alle Dezimalstellen abzurufen.
Lua hat eine Funktion,
load
die einen String als Lua-Code behandelt und in eine Funktion konvertiert.ZB
load("print\"Hello\"")()
drucktHello
.Es könnte ohne Klammern geschrieben werden:
load"print\"Hello\""""
(Die letzten beiden Anführungszeichen bedeuten eine leere Zeichenfolge, die als optionaler Parameter an die Funktion übergeben wird.)Jedes Lua-Programm kann in höchstens 5 Schritten in ein reduziertes Alphabet konvertiert werden.
Beispiel: Wenn unser Programm aus einer Ziffer besteht
9
, sind nur zwei Schritte erforderlich:Schritt 0:
9
Schritt 1:
load"\57"""
Schritt 2:
load"load\"\\5\55\"\"\""""
quelle
Python, 9
Mit dieser Idee . (Die Zeilenumbrüche dienen der Lesbarkeit und können entfernt werden.)
Dadurch wird die Zeichenfolge erstellt
'print"The quick brown fox jumps over the lazy dog"'
und ausgeführt.quelle
exec
, dass Sie das entfernen können , indem Sie es auf der Python-Shell ausführen und 7 Zeichen beanspruchen.dc - 5 verschiedene Zeichen (2, i, 1,0, P)
quelle
Tcl 10 verschiedene Zeichen.
Zeichen verwendet:
,
0
,1
,2
,3
,4
,5
,6
,7
,\
Es ist nur jeder Teil des Befehls, der als \ ooo Sequenz codiert ist. Für Tcl spielt es keine Rolle, ob Sie solche lustigen Dinge im Befehlsnamen oder in seinen Argumenten tun. Tatsächlich
$object configure
ist dies in Tcl / Tk sehr verbreitet.Mit dieser Technik
eval
könnte man sogar jedes Programm in Tcl mit 10 verschiedenen Bytes schreiben :)Testprogramm:
quelle
\uXXXX
18 verschiedenen Bytes.GolfScript (4 verschiedene Zeichen, insgesamt 441 Zeichen)
Zeichen verwendet:
]1(+
Erläuterung: Wenn Sie in GolfScript einem Array von Ganzzahlen eine Zeichenfolge hinzufügen, wird das Array in eine Zeichenfolge mit den Ganzzahlen als Codepunkte konvertiert und anschließend die beiden Zeichenfolgen verkettet. Wenn für stdin nichts angegeben ist, beginnt der Stapel mit einer leeren Zeichenfolge. So können wir ein Array von Ganzzahlen mit den richtigen Codepunkten erstellen und dann zu dieser leeren Zeichenfolge verketten.
Wir müssen
+
die Verkettung durchführen,]
um das Array zu erstellen (und entweder[
zu verhindern, dass die leere Zeichenfolge darin enthalten ist, oder um sie später zu extrahieren) und um die ganzen Zahlen zu trennen. Also benutze ich den Dekrementierungsoperator(
, um die ganzen Zahlen zu trennen, was einige zusätzliche Zusätze erfordert, um in einigen Fällen zu kompensieren, aber eine schnelle Möglichkeit gibt, zB 110 zu erhalten; und dieser Operator ist auch der Operator, der das erste Element aus einem Array extrahiert, sodass er dazu dient, die leere Zeichenfolge zur Verkettung abzurufen.quelle
Ruby: 7 verschiedene Zeichen
(Dank an randomra für seinen Kommentar .)
Probelauf:
Zählen:
quelle
Java: 18 verschiedene Zeichen
Ein Java-Programm kann in UNC-Notation geschrieben werden ... Aber es bleibt wortreich!
quelle
J, 6 verschiedene Zeichen
6 verschiedene char version (
u:10 +
) mit einer idee flornquake verwendet. Die Methode addiert Vektoren von0
1
11
und111
zusammen, um den gewünschten84 104 101 32 113 117 ...
Vektor zu addieren :Edit :
1+:1
ist0
ja vielleicht gibt es hier eine 5 Zeichen Lösung ... (Auch+:
als double könnte man die Lösung verkürzen.)13 verschiedene char version:
Verbesserung durch anonymen Benutzer (DirkL): Kürzere Lösung, aber noch Verwendung von 6 Zeichen (
u:23 |
) möglich. Verwendung|
als Restoperator für Dezimalstellen, z223 | 2333333 = 84
.quelle
Befunge-98, 3 verschiedene Zeichen
Verwenden dieses Befunge-98-Interpreters. Zunächst habe ich mich dem 4-Zeichen-Wettbewerb angeschlossen mit einem
@
am Ende zu beendenden. Dieses Programm gibt wiederholt ausThe quick brown fox jumps over the lazy dog\r
, wobei das Beenden\r
den vorherigen Satz löscht. Daher wird der Satz einmal geschrieben.Befunge-98, 4 verschiedene Zeichen (insgesamt 1047 Zeichen)
Die weniger betrügerische Version. Dieser endet normalerweise.
quelle
JavaScript (in der Chrome-Konsole) 17
Ich hatte die gleiche Idee wie ein Flornbeben, aber er hat mich auch geschlagen. Also habe ich mich auf den hässlichen Weg gemacht!
quelle
constructor+[]
ist anders als das, was ich bekomme. Verschiedene Chromversionen nehme ich an. Hab dir gesagt, dass es hässlich istC, 15 verschiedene Zeichen
Einige Inspirationen aus Fors Antwort (die ich von einem Charakter geschlagen habe) und Ecatmurs Kommentar zu dieser Antwort.
Leerzeichen und Zeilenumbrüche dienen nur der Übersichtlichkeit und werden nicht mitgezählt.
Wie es funktioniert?
1. Jede Gruppe von 3 Zeichen wird in einer Nummer dargestellt. Ein Zeiger auf diese Zahl, der als Zeichenzeiger behandelt wird, ist ein Zeiger auf eine Zeichenfolge aus diesen drei Zeichen plus einer abschließenden Null. Nimmt Little-Endian an.
2. Die Funktion
a
hilft dabei, die Adresse einer Literalzahl zu ermitteln, ohne eine Variable zu definieren.quelle
{}
in einer der Zeilen, was es füra
den Rückgabewert empfindlich machte .vba (
168 verschiedene Zeichen)(unter Verwendung von Ideen aus matatwork und AutomatedChaos)
Beachten Sie, dass Sie, wenn Sie dies einfügen möchten, die Zeile in 2 teilen müssen, da dies für den VBA-Editor zu lang ist
quelle
Chr()
? Es scheint , ohne zu funktionieren:?Chr(&0124);Chr(&0150);Chr(&0145);…
.?chr(1+)
Es wird so etwas wie?chr(11+11+11+11+11+11+11+1+1+1+1+1+1+1)+chr(11+11+11+11+11+11+11+11+11+1+1+1+1+1)+ .... etc.
?Chr(&0124)Chr(&0150)Chr(&0145)…
.C: 16 verschiedene Zeichen
quelle
if(putchar(...)+putchar(...)){}
entfernt;
aber fügt hinzuf
(aber stützt sich auf die nicht spezifizierte Bewertungsreihenfolge).if(putchar(...)){}if(putchar(...)){}
etc. behebenif(putchar(...))if(putchar(...)){}
oderif(putchar(putchar(...)+...){}
, aber dennoch speichert dieser Ansatz keinen Charakter.Postscript (19 verschiedene Zeichen)
Verwendet die hexadezimalen Ziffern 0-9, af, Hexadezimalzeichen <> und = zum Drucken.
(13 verschiedene Zeichen)
Binär-Radix-Zahlen erhalten die Daten in 4 Zeichen (0,1,2, #), benötigen jedoch eine leere Zeichenfolge () und einige Buchstaben (put, dup (-up), print (-pt)), um die Binärzahl einzufügen da drin.
quelle
APL 8
Der folgende Befehl konvertiert eine Zeichenfolge in ihre binäre Entsprechung:
Wenn wir den Vektoren die resultierende Binärdatei zuweisen, um zu vermeiden, dass alle Nullen und Einsen angezeigt werden müssen, können wir das Ergebnis ausdrucken, indem wir den Prozess umkehren, indem wir Folgendes anwenden:
Die 8 eindeutigen Zeichen sind also 8,2, ⎕, d, r, Leerzeichen und die 0 und 1 im binären Vektor s.
quelle
k
12 verschiedene Zeichen
Die Charaktere sind
10h$2/:'(b;)
quelle
PHP. 10 verschiedene Zeichen.
e, c, h, o, r, (, 1, +, ), ;
(Zeilenumbrüche können entfernt werden.)quelle
echo(chr(1+1+1+...));
, so dass Sie wieder auf 10 Zeichen zurückgreifen.Bash:
1816 verschiedene ZeichenProbelauf:
Zählen:
quelle
cat
ist nur eine 3-Zeichen-Lösung. Der Haken ist, dass Sie hineinpfeifen müssen"The quick brown fox jumps over the lazy dog"
.K, 9
1 @ 0 h $ (+;)
quelle
Perl, 10 Zeichen
Im Grunde genommen eine Abzocke der Python-Lösung von Flornquake.
Die Verwendung von Substitution mit
ee
ist ein kostengünstigerer Wegeval
. Leider verwendet Perl.
für die Verkettung, die ein Zeichen hinzufügt.Ich hatte gehofft, Klammern (die für Funktionen in Perl optional sind) mit einer Syntax wie der folgenden zu entfernen:
(Ja,
s
ist ein gültiges Regex-Trennzeichen). Ich konnte das jedoch nicht zum Laufen bringen, da die Priorität von.
zu hoch ist und versucht hat, zu verketten, bevor die Funktion aufgerufen wird.quelle
Erlang 8 verschiedene Zeichen
Verwendete Zeichen:
012#<>:.
quelle
C (23 verschiedene Zeichen)
Hinweis: Ich habe keine Zeilenumbrüche in die Anzahl der unterschiedlichen Zeichen aufgenommen, aber diese können bei Bedarf auf Kosten der Lesbarkeit leicht entfernt werden.
quelle