Das Programm muss das Alphabet viermal drucken: erstens in der normalen alphabetischen Reihenfolge, zweitens in der Reihenfolge einer QWERTY-Tastatur, drittens in der Reihenfolge einer Dvorak-Tastatur und zuletzt in umgekehrter alphabetischer Reihenfolge. Die Ausgabe sollte ungefähr so aussehen:
abcdefghijklmnopqrstuvwxyz
qwertyuiopasdfghjklzxcvbnm
pyfgcrlaoeuidhtnsqjkxbmwvz
zyxwvutsrqponmlkjihgfedcba
Bei der Ausgabe wird nicht zwischen Groß- und Kleinschreibung unterschieden. Sie können Zeilenumbrüche oder Leerzeichen beliebig hinzufügen oder weglassen.
Der Haken : Das Programm muss kürzer als 104 Zeichen sein, oder, mit anderen Worten, kürzer als die Länge des Alphabets mal vier.
Ich akzeptiere die Antwort mit dem kürzesten Code, es sei denn, ich sehe etwas wirklich Kluges oder Interessantes, von dem ich mehr beeindruckt bin.
EDIT: Ich akzeptiere die kürzeste Antwort am Mittwoch, den 27.04.2011.
EDIT2: Und der Gewinner ist (wie immer) Golfscript in 64 Zeichen! Der zweite Platz , der nur um drei Zeichen zurückliegt, ist ebenfalls in Golfscript mit 67 Zeichen, gefolgt von Bash auf dem dritten Platz mit 72 Zeichen.
Aber es gab ein paar andere, die ich erwähnen wollte, wie dieses , das, abhängig von Ihrer Definition, nur 52 "Zeichen" verwendete, und dieses, in dem er es in einer von ihm erstellten Sprache schrieb.
Es gab ein paar Leute , die gegen eine ungeschriebene Regel verstoßen und sich nicht qualifiziert haben, aber ich werde sie nur für ihre Denkweise ohne die Box erwähnen.
quelle
Antworten:
Python 2, 97 Zeichen
Das Sortieren von QWERTY und das Zurückkonvertieren von Liste zu Zeichenfolge ist kürzer als das Alphabet selbst! *
Eine weitere Option zum Generieren des Alphabets in weniger Zeichen als das Alphabet selbst:
Obwohl dies eine Python-Liste von Zeichen druckt.
In Bezug auf die Datenkomprimierung ist hier nicht viel zu tun. Wenn Sie die Buchstaben in 5 Bits zusammenfassen, werden nur 39 Zeichen gespart, was nicht viel ist, wenn Sie sie dann wieder entfernen müssen (und die Bytes immer noch buchstäblich darstellen müssen). Es sieht so aus, als würde zlib (nur als Beispiel) weniger als 20 Bytes speichern. Das Codieren der Sequenz als Liste von Deltas bis zum nächsten Buchstaben benötigt immer noch 5 Bits für jedes Delta, da die größte in dieser Sequenz -22 ist:
* Obwohl nur geringfügig.
quelle
q="qwertyuiopasdfghjklzxcvbnm";a=sorted(q);print(*a,q,"pyfgcrlaoeuidhtnsqjkxbmwvz",*a[::-1])
PHP, 100 Bytes
Wie ISO 8859-1:
Um zuverlässig zu reproduzieren,
quelle
Ruby 1,9,
88878480quelle
Bash, 82
quelle
Python,
9796 "Zeichen"Wenn Sie das Wort "Zeichen" großzügig verwenden, finden Sie hier einen Python, der 16-Bit-Unicode-Zeichen verwendet, um jeweils 3 normale Zeichen zu codieren. Das Programm besteht aus 96 Zeichen, von denen 35 die seltsamsten Unicode-Zeichen sind, die ich je gesehen habe.
Ich bin mir nicht sicher, ob der Unicode-Garbage korrekt ankommt. Deshalb hier ein Python-Programm, um das obige Python-Programm zu generieren:
quelle
Bash, 72
EDIT: entfernt
tr -d
.Credits: Alexander, Roger.
quelle
|tr -d ' '
, 10 Zeichen speichern und machen diese Version zum Anführer im Moment des Schreibens :-)Golfscript, 64 Zeichen
Anmerkung: auch 64 Bytes. Tatsächlich scheint das Spielen mit Unicode und Basisänderungen kontraproduktiv zu sein, da
base
es sich um ein zu langes Schlüsselwort handelt.quelle
Windows PowerShell, 89
Nicht besonders gut, aber zumindest kürzer als die Ausgabezeichenfolge:
Viel kürzer, als ich sah, dass sich das Leerzeichen entspannt. Und noch ein bisschen kürzer, wenn ich den Fall ignoriere, den ich darf.
quelle
)
. Sollte 88 sein.Golfscript,
76, 67 Zeichenquelle
123,97>+
, um das Anfangsalphabet zu generieren.CI - 92 Zeichen
CI ("Compiler / Interpreter") ist eine einfache stapelbasierte Sprache, die ich für die Herausforderung "Self-Interpreting Interpreter" erstellt habe ( Link zur Antwort ). Ich habe diese Antwort ungefähr zwei Stunden vor der Veröffentlichung dieser Herausforderung gepostet. Es ist kein GolfScript (was ich noch nicht gelernt habe), mein Ziel war es, den Dolmetscher kurz zu machen.
Dieses Programm muss
ci
über die Standardeingabe an den Interpreter übergeben werden. Der Interpreter behandelt Zeichen nach einem Abbruch)
als Eingabe in das Programm. Meine Sprache unterstützt keine Zeichenkettenliterale, daher nimmt stdin seinen Platz ein.quelle
Python 2.7.X - 103 Zeichen ironischerweise ...
Wie sich herausstellt, benötigt das Generieren des Alphabets in Python mehr Zeichen als das Hardcodieren. Ebenso wie der Import des Alphabets. Ich muss manchmal eine Sprache lieben, die auf Lesbarkeit ausgerichtet ist.
quelle
+
anstelle von verwenden,
und diesen Platz sparen.C - 133 Zeichen
Verkürzte Version von Casey:
Leerzeichen:
Transponierte Ausgabe
Hier ist eine Version, die die Ausgabe zum Spaß transponiert. 134 Zeichen.
Leerzeichen:
Drucke:
quelle
i
als global deklarieren undstrcpy(...)
in den ersten Block der for-Schleife setzen, erhalten Sie 129. Trotzdem immer noch zu viel.J
Meine erste Erfahrung mit J. Die Idee ist einfach, die kanonische (lexikografische) Zahl der erforderlichen Permutation zu verwenden; Leider dauert dies mehr Zeichen als hartcodiert. Aber wenn man einen arithmetischen Ausdruck (unter Verwendung von Kräften und so weiter) finden könnte, der die magischen Zahlen ergibt, könnte er verkürzt werden.
quelle
Python, 90 Unicode-Zeichen
Laufen Sie unter ideone - http://ideone.com/R2dlI oder codepad - http://codepad.org/lp77NL9w
quelle
Javascript
139121Neu:
alt:
quelle
alert((a=(q='qwertyuiopasdfghjklzxcvbnm').split('').sort()).join('')+q+'pyfgcrlaoeuidhtnsqjkxbmwvz'+a.reverse().join(''))
Lua - 111 Zeichen
Schlägt C und C ++! :-)
"Clevere" Version in Lua
129 Zeichen
Leerzeichen:
quelle
C -
163135 ZeichenDies entspricht nicht den Anforderungen, da es mehr als 104 Zeichen umfasst, aber es hat Spaß gemacht, es zu machen. Vielleicht hat jemand ein paar Vorschläge.
Kompiliert unter GCC 4.5.1 (andere nicht getestet). Yay für das Weglassen von #includes, Rückgabetypen und Variablendeklarationen! Hardcoding hätte zu einem kürzeren Programm geführt, aber das macht keinen Spaß.
Whitespaced-Version:
C -
124122 lahmHier ist die lahme, hartcodierte Version, und sie schafft es immer noch nicht.
quelle
puts()
stattdessen printf im zweiten Fall - 2 Zeichen weniger.while
mitputs(a);
in ersten Fall Abwurf*p=a
; - 138 Zeichen statt 163.puts
. Geändert.PHP 88 Bytes
quelle
J - 69 Zeichen
Erläuterung:
(,\:~) y
-y
In absteigender Reihenfolge\:~
sortieren (,
) und anhängen ( )y
.x (,~|.) y
- Kehren Sie (|.
) umy
und fügen Sie das an die Vorderseite von anx
.x F&G y
- Ausführen(G y) F (G y)
, dh AusführenF
der Ergebnisse der AnwendungG
auf die Argumente.Alles in allem hängen wir das Alphabet rückwärts an die Zeichenfolgen Dvorak und reverse-QWERTY an, kehren dann die Zeichenfolge QWERTY / Alphabet um und setzen sie vor die Zeichenfolge Dvorak / Alphabet.
quelle
Bash, 64
Ich komme sehr spät zur Party, aber ich habe eine 64-Zeichen-Lösung. Das Programm muss auf der Festplatte gespeichert werden, damit es funktioniert
Wie es funktioniert:
{a..z}
und{z..a}
sind ziemlich selbsterklärend, aber im Grunde druckt das nur jedes Zeichen in dem jeweiligen Bereich.$(sed 1d $0|base64)
gibt das Programm aus, ignoriert die erste Zeile und leitet es dann durch einen base64-Encoder (wie es einige andere Beispiele getan haben).Der Grund dafür ist kürzer als andere ähnliche Beispiele ...
... liegt daran, dass die
{a..z}
Bereiche kürzer sind als Base64-Codierungen, sodass ich nur die Hälfte der Zeichenfolge mit Base64 codieren muss. Und da ich die Binärdaten aus einer Datei lese, anstatt sie in einer Zeichenfolge zu speichern, muss ich kein Zeichen im Code maskieren.So erstellen Sie dieses Skript neu:
Wenn der Code von Stack Exchange in Ihren Texteditor nicht richtig kopiert / eingefügt werden kann, führen Sie in Ihrer Befehlszeile (Shell-Agnostiker) Folgendes aus:
Dann laufen:
quelle
05AB1E , 25 Bytes
Probieren Sie es online!
Erläuterung
quelle
C ++
Es ist traurig, wenn der kürzeste Weg, etwas in einer Sprache zu tun, darin besteht, es hart zu codieren.
quelle
std::cout
ist kürzerusing namespace std
, und Sie können überspringenvoid
.J (77)
3 Zeichen mit einer Variablen abgeschnitten:
2 weitere Zeichen mit einem Value-Level-Ansatz abgeschnitten:
quelle
Haskell
Perl (51)
Es gibt keine Regel, die besagt, dass ich nicht kann.
quelle
Q (68)
Ausgänge:
Versucht, eine Verbesserung der Hardcodierung der beiden mittleren zu finden, hat aber keine gefunden.
quelle
K - 69 Zeichen
Erläuterung:
26#a:
- Weisen Sie die beiden Tastaturlayouts zua
und übernehmen Sie die ersten 26 Zeichen.b:a@<
- Sortierena
und zuweisen anb
:<
Liefert die Permutation für eine aufsteigende Sortierung und@
lässt uns indizieren,a
um sie zu sortieren.b,a,|
- Anfügen in einer Zeileb
, danna
, dann wird der Rücklauf (|
) vonb
.quelle
Pyth, 57
Alphabet, Zeichenfolge, umgekehrtes Alphabet. G ist das Alphabet. Der Ausdruck ist implizit.
quelle
Dyalog APL , 60 Bytes
Drucke:
Was ist nach OP erlaubt:
quelle
Gelee, 36 Bytes (nicht konkurrierend)
Probieren Sie es online!
Erläuterung:
quelle
05AB1E ,
6059 BytesProbieren Sie es online!
AÂ
- drückt das gegabelte Alphabet."qwertyuiopasdfghjklzxcvbnm""pyfgcrlaoeuidhtnsqjkxbmwvz"
- Drückt QWERTY und DROVAK.»
- Druckt Stapel.05AB1E , 57 Bytes (Wenn Sie sich nicht für Zufall interessieren \ n)
Probieren Sie es online!
quelle
""
durch eine neue Zeile ersetzen.