Schreiben Sie in so wenigen Bytes wie möglich ein Programm oder eine Funktion, die Folgendes ausgibt:
Abcdefghijklmnopqrstuvwxyz
aBcdefghijklmnopqrstuvwxyz
abCdefghijklmnopqrstuvwxyz
abcDefghijklmnopqrstuvwxyz
abcdEfghijklmnopqrstuvwxyz
abcdeFghijklmnopqrstuvwxyz
abcdefGhijklmnopqrstuvwxyz
abcdefgHijklmnopqrstuvwxyz
abcdefghIjklmnopqrstuvwxyz
abcdefghiJklmnopqrstuvwxyz
abcdefghijKlmnopqrstuvwxyz
abcdefghijkLmnopqrstuvwxyz
abcdefghijklMnopqrstuvwxyz
abcdefghijklmNopqrstuvwxyz
abcdefghijklmnOpqrstuvwxyz
abcdefghijklmnoPqrstuvwxyz
abcdefghijklmnopQrstuvwxyz
abcdefghijklmnopqRstuvwxyz
abcdefghijklmnopqrStuvwxyz
abcdefghijklmnopqrsTuvwxyz
abcdefghijklmnopqrstUvwxyz
abcdefghijklmnopqrstuVwxyz
abcdefghijklmnopqrstuvWxyz
abcdefghijklmnopqrstuvwXyz
abcdefghijklmnopqrstuvwxYz
abcdefghijklmnopqrstuvwxyZ
abcdefghijklmnopqrstuvwxYz
abcdefghijklmnopqrstuvwXyz
abcdefghijklmnopqrstuvWxyz
abcdefghijklmnopqrstuVwxyz
abcdefghijklmnopqrstUvwxyz
abcdefghijklmnopqrsTuvwxyz
abcdefghijklmnopqrStuvwxyz
abcdefghijklmnopqRstuvwxyz
abcdefghijklmnopQrstuvwxyz
abcdefghijklmnoPqrstuvwxyz
abcdefghijklmnOpqrstuvwxyz
abcdefghijklmNopqrstuvwxyz
abcdefghijklMnopqrstuvwxyz
abcdefghijkLmnopqrstuvwxyz
abcdefghijKlmnopqrstuvwxyz
abcdefghiJklmnopqrstuvwxyz
abcdefghIjklmnopqrstuvwxyz
abcdefgHijklmnopqrstuvwxyz
abcdefGhijklmnopqrstuvwxyz
abcdeFghijklmnopqrstuvwxyz
abcdEfghijklmnopqrstuvwxyz
abcDefghijklmnopqrstuvwxyz
abCdefghijklmnopqrstuvwxyz
aBcdefghijklmnopqrstuvwxyz
Abcdefghijklmnopqrstuvwxyz
Ein abschließender Zeilenumbruch ist zulässig. Eine Referenz zu ungolfed Python finden Sie hier .
code-golf
kolmogorov-complexity
Absinth
quelle
quelle
Antworten:
Pyth, 12 Bytes
Demonstration.
In Pyth
G
ist das Kleinbuchstaben.+Gt_G
istabcdefghijklmnopqrstuvwxyzyxwvutsrqponmlkjihgfedcba
das Zeichen, das in jeder Zeile in Großbuchstaben geschrieben werden muss.V
Richtet eine for-Schleife über dieser Zeichenfolge mitN
als Schleifenvariable ein.Im Körper
XGNrN1
befindet sich eine String-Übersetzungsfunktion.X
übersetztG
das Alphabet und ersetzt esN
durchrN1
die Großbuchstabenversion vonN
.r ... 1
ist die Großbuchstabenfunktion. Dies ergibt die gewünschte Ausgabe.quelle
C 73
Manchmal ist der einfachste Ansatz der beste: Drucken Sie jedes Zeichen einzeln aus. Das schlägt viele Sprachen, die es eigentlich nicht sollte.
Erläuterung
quelle
Python 2, 69 Bytes
Schön und einfach, denke ich.
quelle
Brainfuck (8 Bit), 231 Byte
Ok, es wird nie die kürzeste sein, aber es ist die Teilnahme, die zählt ... richtig ?!
Probieren Sie es hier aus (stellen Sie sicher, dass 'Dynamischer Speicher' angekreuzt ist)
quelle
>
sich zum Beispiel eine Zelle nach rechts verschiebt.MS-DOS Binary, 61
Dieser Code muss nicht kompiliert werden. Er wird unter MS-DOS ausgeführt, wenn Sie ihn in eine Datei namens wave.com schreiben. Der Code in hex:
Oder, wenn Sie etwas besser lesbares bevorzugen, können Sie es wie folgt mit debug.exe erzeugen (die leere Zeile nach dem Code ist wichtig):
quelle
Ruby:
71686563 ZeichenProbelauf:
quelle
puts f=(e=*?a..?z).map{|c|(e*"").tr c,c.upcase},f[0,25].reverse
Matlab,
605854 BytesVielen Dank an Dennis Jaheruddin , der mir 4 Bytes gespart hat.
quelle
char(x)
durch verwenden[x '']
, um ein Byte zu speichern.end-1
Ist auch eine ziemlich ausführliche Art, 25 zu schreiben![x '']
ist Trick nicht üblich , überhaupt für mich. Aber jetzt erinnere ich mich, es in einem Ihrer Antworten gesehen zu haben :-)SWI-Prolog, 136 Bytes
Backtracking missbrauchen, um eine Schleife zu erstellen ...
quelle
Haskell
1008988 BytesDie Lambda-Hilfsfunktion verwendet
\(h,c:t)
zwei Listen mit ASCII-Werten und verknüpft beide, wobei jedoch der erste Wert der zweiten Liste groß geschrieben wird. Die Hauptfunktion teilt das Kleinbuchstaben (in ASCII97..122
) an jeder Position0,..,24,25,24,..,0
und ruft in jedem Schritt das Lambda auf. Vor dem Drucken wird jeder Wert in das entsprechende Zeichen umgewandelt.quelle
Scala
110109 Zeichenquelle
foreach println
zumkString("\n")
und gibt anstatt sie auf den Bildschirm des Druckens einen String als RückgabewertSQL (postgreSQL),
107101Generieren Sie Serien von -25 bis 25 und ersetzen Sie Zeichen mit dem absoluten Wert durch ihre Großbuchstaben. Danke an manatwork für den Tipp zum @ -Operator.
quelle
@
Operator hat?Haskell, 81 Bytes
Zählen von Bytes wie @nimi;
f
ist eine E / A-Aktion, die die gewünschte Ausgabe druckt.quelle
Pyth -
1817 BytesErster Durchgang, wahrscheinlich kann viel kürzer gemacht werden. Verwendet, um
X
zu ersetzen undr1
zu kapitalisieren.Probieren Sie es hier online aus .
quelle
MATLAB - 58 Bytes
Ähnlich wie die Lösung von Luis Mendo , jedoch mit den Sendefähigkeiten von
bsxfun
.Ausgehend davon, dass in ASCII der Unterschied zwischen Groß- und Kleinbuchstaben genau 32 Werte voneinander entfernt ist, erzeugen wir zunächst Kleinbuchstaben aus den ASCII-Codes 97 bis 122, die dann jeweils die ASCII-Codes von Kleinbuchstaben a bis Kleinbuchstaben z sind Erstellen Sie eine Matrix mit 51 Zeilen, die die 26 ASCII-Codes von 97 bis 122 enthält. Daher enthält jede Zeile dieser Matrix eine numerische Folge von Werten von 97 bis 122. Als Nächstes erstellen wir eine weitere Matrix, in der jede i- te Zeile dieser Matrix a enthält 32 in der i- ten Spalte. Die ersten 26 Zeilen dieser Matrix haben dieses Muster, das im Wesentlichen die Identitätsmatrix multipliziert mit 32 ist. Die Funktion
eye
erstellt für Sie eine Identitätsmatrix. Die letzten 25 Zeilen dieser Matrix sind die um 90 Grad gedrehten skalierten Identitätsmatrizen.Indem diese benutzerdefinierte gewichtete Identitätsmatrix verwendet und diese mit der ersten Matrix subtrahiert und dann die resultierenden ASCII-Codes in Zeichen konvertiert wird, wird die gewünschte "Mexican Hat" -Sequenz erzeugt.
Beispiellauf
Sie können dieses Beispiel auch in der Online-Octave-Umgebung von IDEone ausführen. Octave ist im Wesentlichen MATLAB, aber kostenlos: http://ideone.com/PknMe0
quelle
rot90
-- gut durchdacht!J,
31-23Bytes8 Bytes gespart dank @Mauris.
Probieren Sie es hier online aus.
quelle
u:|:(97+i.26)-32*=|i:25
(Monade=
ist hier wirklich nützlich!)=
hier Monade zu verwenden . Es ist sehr nett!Perl, 51 Bytes
50 Byte Code + 1 Byte Befehlszeilenparameter
Kann wie folgt verwendet werden:
Oder online hier (Anmerkung, die ich hinzufügen musste
,"\n"
, da ich das -l Argument nicht hinzufügen konnte).Viel längere Methode Vor der oben verkürzten Version habe ich eine andere Methode ausprobiert, die ziemlich klobig war. Ich habe es trotzdem unten als Referenz gelassen.
86 Byte Code + 1 Byte Befehlszeilenargument
Das erste Perl, das ich jemals richtig golfen habe, also stelle ich mir vor, dass damit eine Menge getan werden kann - bitte schlagen Sie Verbesserungen vor!
Kann wie folgt verwendet werden:
Oder hier online (Anmerkung, ich musste hinzufügen. "\ N", da ich das -l-Argument nicht hinzufügen konnte).
Erläuterung
Der allgemeine Ansatz besteht darin, die Regex-Substitution zu verwenden, um die ganze harte Arbeit zu erledigen. Wir beginnen mit:
Dies entspricht
(([A-Z])|0)(\D)
und wird durch\U\3
(\ U wird in Großbuchstaben geändert) ersetzt, um Folgendes zu erhalten:Ab diesem Zeitpunkt passen wir weiterhin denselben regulären Ausdruck an und ersetzen ihn durch
\L\2\U\3
:Jetzt stimmt die zweite Abwechslung des regulären Ausdrucks überein
(.)((?2))(1)
(das ist dasselbe wie(.)([A-Z])(1)
). Wir ersetzen mit\U\4\6\L\5
zu geben:Dies passt und ersetzt so lange, bis wir Folgendes erreichen:
und es gibt keine regulären Übereinstimmungen mehr.
An jedem Punkt in der Schleife streifen wir die '1' ab und drucken.
quelle
PHP,
877169 BytesNicht die kürzeste, aber sie funktioniert wie vorgesehen.
Vielen Dank an @manatwork für ein paar Tipps, um die Größe um ein Vielfaches zu reduzieren.
Und dank @Blackhole konnte die Größe um 2 Bytes reduziert werden.
Nicht gerade hübsch, aber funktioniert.
quelle
join()
ersten Parameter.$i<25?$i:25-($i-25)
→25-abs($i-25)
for(;$i<51;){$L=range(a,z);$L[25-abs($i++-25)]^=" ";echo join($L),"↵";}
(\n
da war. Die Initialisierung von$i
wurde als Unfall überlassen. Und vielen Dank für die25-abs($i-25)
. Ich würde es nicht alleine schaffen.for
Schleife kann optimiert werden:for(;$L=range(a,z),$L[25-abs($i++-25)]^=' ',$i<52;)echo join($L).'↵';
(-2 Bytes).PowerShell 3.0, 82 Byte
quelle
TIS-Knotentyp T21-Architektur -
216215 BytesSehen Sie es hier in Aktion! Es gibt ein
DOWN
Video in dem ich später Golf gespielt habeANY
, aber es ist funktional identisch.Diese Sprache kennt keine Zeichenketten oder Zeichen, daher sollte ich darauf hinweisen, dass ich ASCII-Werte verwende, dh die Ausgabe beginnt
97, 66, 67
...88, 89, 90, 10, 65, 98
...Hier ist der Code im Format der Sicherungsdaten des TIS-100 zum Zwecke der Bewertung:
Erläuterung
quelle
JavaScript ES6, 121 Byte
Dies ist sehr lang, da es sinnvoller ist, das Alphabet fest zu codieren, als die absurd lange Zeit
String.fromCharCode
zu verwenden, um die Zeichen zu generieren. Testen Sie es unten mit dem Stack-Snippet, das ES5 mit besserer Unterstützung und darunter verwendet.quelle
CJam, 23 Bytes
Probieren Sie es online im CJam-Interpreter aus .
Wie es funktioniert
quelle
R
78,70Verbessert von @MickyT
quelle
M=replicate(26,c(letters,"\n"))
eher als eine Matrix verwendet. Es wird Ihnen ein paar Bytes sparenwrite
: tio.run/##K/r/…Linux Assembly, 289
Leider nicht konkurrenzfähig mit Hochsprachen und wahrscheinlich alles andere als optimal, aber ziemlich unkompliziert. Führen Sie es mit
nasm -f elf64 -o a.o wave.S; ld -s -o a a.o; ./a
(die resultierende Binärdatei ist nur 568 Byte groß) aus:quelle
x86-Assembly für DOS, 41 Bytes kompiliert
Binär:
Quellcode, als "wave.asm" speichern, mit "nasm -f bin -o wave.com wave.asm" kompilieren und mit "dosbox wave.com" ausführen
quelle
C #,
140139135132Erweitert
1 Byte dank @ Gunther34567 gespeichert mit einem Ternär anstelle von
if
4 Bytes gespeichert, dann das ternäre Element innerhalb der Schleife verschachtelt und das Alphabet außerhalb der Schleife verschoben
Dank @eatonphil wurden 3 Byte gespeichert, die Integer-Deklarationen kombinieren
quelle
if(i==25)d=-1;
zud=i==25?-1:d;
var d=1
zuint d=1,i
.Bash:
7666 ZeichenProbelauf:
quelle
printf
Anruf. Ich habe die Bearbeitung abgelehnt , sodass Sie sie selbst testen können.Sed:
135119116111 Zeichen(109 Zeichen Code + 1 Zeichen Befehlszeilenoption + 1 Zeichen Eingabe.)
Probelauf:
quelle
Javascript (ES6), 113 Byte
110 Bytes
102 Bytes
Old School ist unschlagbar, es sei denn, wir haben Range Operator / Funktion / Generator / was auch immer in js
100 Bytes
Leider ist Math.abs zu lang
9694 BytesObwohl ich ohne Erklärung abgelehnt worden bin, setze ich meinen Kampf fort
Wir können ein paar Bytes abschneiden, indem wir die Schleifenanweisungen neu anordnen:
quelle
Perl -
9564 BytesNutzt die Tatsache aus,
\u
dass das nächste gedruckte Zeichen in Perl in Großbuchstaben geschrieben wird.Dank an manatwork für das Speichern und Reparieren von 31 Bytes (mein vorheriger Code hat nicht funktioniert.)
quelle
\u
scheint in einem separaten Beispiel zu funktionieren, aber nicht in Ihrem Code. :( Alle Zeichen blieben in Kleinbuchstaben. Können Sie uns zeigen, wie Ihr Code ausgeführt werden soll? (Ich habe es in eine Datei geschrieben und dannperl
den Dateinamen übergeben, keine Schalter.) Übrigens verwende ichperl
5.20.2.\u
der Buchstabe folgt, um sich in das gleiche String-Literal zu verwandeln:for$c(0..50){$n=1;print map{++$n==27-abs$c-25?"\u$_":$_}a..z,$/}
q (37 Zeichen)
Ein erster Schnitt
quelle
@[.Q.a;;upper]@'x,1_reverse x:til 26
für 36 Bytes . Oder@[.Q.a;;.q.upper]@'x,1_|x:!26
für 29 Bytes in K4.