Geben Sie die folgenden drei Textzeilen genau so aus oder zeigen Sie sie an, wie unten gezeigt. Ein abschließender Zeilenumbruch wird akzeptiert.
bC#eF&hI)kL,nO/qR2tU5wX8z
A!cD$fG'iJ*lM-oP0rS3uV6xY9
aB"dE%gH(jK+mN.pQ1sT4vW7yZ
Dieser Textblock ist derselbe wie der folgende, wobei jedoch die n-te Spalte n-mal nach unten gedreht wird:
!"#$%&'()*+,-./0123456789
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
Denken Sie daran, dass dies eine Herausforderung für die Kolmogorov-Komplexität ist , sodass das Ausgabeformat nicht flexibel ist.
code-golf
string
kolmogorov-complexity
alphabet
Stewie Griffin
quelle
quelle
Antworten:
Java 8,
16916215014611611310695949392919084 BytesJa, wir haben es endlich geschafft! Wir haben die 88-Byte-Literalausgabe übertroffen, die unten zu finden ist. Vielen Dank an alle, die am Golfen teilgenommen haben!
-7 Bytes dank @StewieGriffin .
-42 Bytes dank @Neil .
-11 Bytes dank @PeterTaylor .
-3 Bytes dank @ OlivierGrégoire .
-6 Bytes dank @ OlivierGrégoire und @Neil (Olivier schlug eine Portierung von Neils JavaScript-Antwort vor ).
Probieren Sie es online aus.
Erläuterung:
Sehen Sie hier, was die einzelnen arithmetischen Teile bewirken und wie sie zu den richtigen Zeichen führen.
Java 8, 88 Bytes
Langweilig,
aber das Ausnutzen der beabsichtigten Rotation von Spalten wird in Java sicher nicht kürzer sein.Ich stehe korrigiert da!Posten Sie eine Lösung in einem Moment, um festzustellen, wie viel Bytes sich unterscheiden.Anscheinend beträgt der Unterschied nur -4 Bytes! : DProbieren Sie es online aus.
quelle
(x, y)
, die wahrscheinlich Ihren 169-Byte-Ansatz und möglicherweise sogar die Literalzeichenfolge übertrifft .v->{String a="";for(int i=2,j,t;++i<6;){for(j=31;++j<58;a+=(char)(t<1?j+65:t>1?j:j+33))t=(j-i)%3;a+="\n";}return a;}
v->{for(int i=0,r,c;++i<81;System.out.printf("%c",c<1?10:32*++r+c-1/r))r=(i/27+28-(c=i%27))%3;}
c
vollständig entfernt )Schale , 13 Bytes
Beachten Sie das nachfolgende Leerzeichen. Probieren Sie es online!
Erläuterung
quelle
SPL (Shakespeare Programming Language),
167916181600 BytesIch hatte einige Probleme mit dem Interpreter ( https://github.com/drsam94/Spl ), daher ist er nicht so klein, wie ich es für möglich gehalten hätte. Aber zumindest funktioniert das :)
Hier ist die gleiche Logik in PHP, um es ein bisschen einfacher zu machen, zu sehen, was los ist.
quelle
JavaScript (ES6),
86 bis75 ByteBearbeiten: 11 Bytes dank @Ryan gespeichert. Jetzt 10 Bytes kürzer als das Literal!
JavaScript (Node.js) , 64 Byte
Probieren Sie es online! Vielen Dank an @ Ryan.
quelle
f=(i=k=0)=>i-80?String.fromCharCode(++i%27?(4-k++%3)*32%97+i%27:10)+f(i):''
und 11 weitere Bytes in einer Node-Umgebung:f=(i=k=0)=>i-80?Buffer([++i%27?(4-k++%3)*32%97+i%27:10])+f(i):''
05AB1E ,
1715 BytesDank Erik the Outgolfer 2 Bytes gespart
Probieren Sie es online!
Erläuterung
quelle
εN
sollte eine Sache sein. Kombiniert die beiden Ideen vonvyNFÁ])ø»
und von dir.N
während der Verwendungε
. Es passt technisch nicht, daε
es keine Schleife ist, obwohl es, wie wir es manchmal als solche verwenden, schön wäre, es zu haben.CJam (18 Bytes)
Online-Demo
Präparation
Der naheliegende Ansatz besteht darin, die ursprünglichen Linien zu generieren, zu zipen, mitzudrehen
ee::m>
und rückwärts zu zipen. Istee::
aber recht lang und es ist kürzer die Spalten direkt zu generieren.quelle
Python 2 , 72 Bytes
Probieren Sie es online!
Dies funktioniert, indem
31.333..
aus dem vorherigen Zeichen entfernt, hinzugefügt wird,97
wenn der vorherige Codepunkt kleiner als 60 ist, und26
am Ende jeder Zeile subtrahiert wird.quelle
R ,
6463 BytesProbieren Sie es online!
-1 Byte danke an Giuseppe
Ich bin durch einiges an Versuch und Irrtum dazu gekommen, daher habe ich mit einer kurzen Erklärung zu kämpfen. Anstelle der Zeichencodes begann ich mit einer einfacheren Sequenz von 1:81, die den ursprünglichen Textblock darstellt (3 * 26 plus 3 Zeilenumbrüche), und untersuchte die Indizes, in denen diese Werte im gedrehten Block landen. Dies folgt einer regulären Sequenz, die jedes Mal um 26 abfällt, modulo 81 (oder entsprechend um 55 mod 81 erhöht). Es galt dann, diese Sequenz neu zu
(0:80*55)%%81+1])
erstellen, auf die tatsächlichen Unicode-Werte abzubildenc(32:57,10,65:90,10,97:122,10)
, in Zeichen umzuwandeln und zu drucken.quelle
55
anstatt mit-26
since-26 == 55
(mod 81).Japt ,
1715 BytesOnline testen!
Erläuterung
7 weitere mögliche 15-Byte:
quelle
CJam ,
2321 BytesProbieren Sie es online!
Erläuterung
quelle
MATL , 16 Bytes
Probieren Sie es online!
Erläuterung
quelle
1:26
als shift zu verwenden. Ich sollte das in meiner R-Antwort versuchen ...&
war eine großartige Ergänzung, von Suever Idee :-)Jelly , 13 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
Perl 5 , 46 Bytes
13 Bytes gespart dank @TonHospels arkaner Zauberei!
Probieren Sie es online!
quelle
$i++
ist gerecht$_
und Sie könnensay
stattdessen verwenden,print
so ist dies wirklich50
{}
in der Karte auch für loszuwerden49
:say map$/x/26|52/.chr$_%26+(32,65,97)[$_%3],0..77
47
:print map{chr$n+++$_,$/x!($n%=26)}(32,97,65)x26
. Leidersay
gibt eine Newline zu viele.48
:say map$/x/.A/.chr$n++%26+(65,32,97)[$n%3],A..BZ
R ,
8886 BytesProbieren Sie es online!
R ist furchtbar bei der Manipulation von Strings und obwohl es einige nette Matrix-Builtins hat, sind Rotationen eine andere Sache, die es nicht so leicht macht.Ich werde jedem, der mich in R übertreiben kann, gerne ein Kopfgeld geben.Obwohl ich eine kürzere Antwort gefunden habe, werde ich der ersten anderen R-Antwort, die kürzer als 88 Byte ist, immer noch eine Prämie von 50 Wiederholungen gewähren.
Ich nehme an, ich würde mir das Kopfgeld geben, wenn ich könnte, aber das sind ganze zwei Bytes weniger als die "langweilige" Antwort! Ich vermeide Rotationen, indem ich nur Rs Vorliebe für das Recycling verwende.
BEARBEITEN : Die Antwort von user2390246 hat mich völlig überrumpelt und ich werde ein Kopfgeld von 100 Punkten vergeben, da diese Lösung weit überlegen ist.
Um hierher zu kommen, dekonstruierte ich die gewünschte Ausgabe in ihre ASCII-Codepunkte mit
utf8ToInt
(Entfernen der Zeilenumbrüche), erstellte eine Matrix und ließ eindiff
auf ihnen, um die spaltenweisen Unterschiede zu erhalten. Da ich die Periodizität dort bemerkte, machte ich mich daran, die Matrix auf eine golferische Weise zu konstruieren, in der Hoffnung, sie zu verwendendiffinv
, um das Original wiederherzustellen.Dank der Periodizität können wir die
diff
ed-Matrix neu erstellen , indem wir R zwingen, mit einer nicht multiplen Länge zu recyceln, und die Spalten extrahieren, die wir eigentlich wollten:Dann kehren wir diesen Prozess um, indem wir
diffinv
die Codepunkte neu erstellen, eine Reihe von10
(Zeilenumbrüchen) an den unteren Rand anhängen , mit in ASCII konvertierenintToUtf8
undcat
das Ergebnis erhalten.quelle
Stax ,
1412 BytesFühren Sie es aus und debuggen Sie es
Ausgepackt, ungolfed und kommentiert sieht es so aus.
Führen Sie dieses aus
Dieses Programm verwendet nur Funktionen, die seit der ersten Veröffentlichung von stax verfügbar waren, aber anscheinend habe ich
K
bei der ursprünglichen Erstellung dieser Antwort vergessen, Cross-Map zu verwenden.Eine beinahe interessante Bemerkung zu dieser Antwort ist, dass
R
es sich um eine unnötige Anweisung handelt, daK
ganze Zahlen implizit in Bereiche umgewandelt werden. Allerdings gibt es keine Möglichkeit zu schieben3
und26
ohne einige zusätzliche Byte dazwischen.quelle
PowerShell , 53 Byte
Probieren Sie es online!
Ich sehe, dass dies Doms Perl-Antwort ähnlich ist, aber ich bin unabhängig dazu gekommen.
Dies nutzt die Tatsache aus, dass das Muster
Symbol - Lowercase - Capital
auch beim Umbrechen von Zeilenumbrüchen (8 - z - A
z. B.) verloren geht, und fügt$j++%3
der aktuellen Zahl nur den entsprechenden Versatz (ausgewählt über ) hinzu,$_
bevor-join
diese zu einer einzigen Zeichenfolge zusammengefasst werden. Dies geschieht dreimal, um die drei Zeilen zu erstellen ($j
zwischen den Iterationen beibehalten). Diese drei ZeilenWrite-Output
verbleiben in der Pipeline, und das Implizite gibt uns die neuen Zeilen kostenlos.quelle
Julia 0,6 , 79 Bytes
[' ':'9' 'A':'Z' 'a':'z']
ist das nicht gedrehte 2d-Array von Zeichen,[n,mod1(i-n,3)]
das bei entsprechender Drehung in dieses Array indiziert wird.prod
Nimmt einen Vektor von Zeichen in einen String (da die Multiplikation für den String-Join verwendet wird). Es gibt zwei verschachtelte Vektorbegriffe, die dazu führen, dass ein Vektor 3 Zeichenfolgen enthält. Anschließend wirdprintln.
jede Zeichenfolge im Vektor gefolgt von einer neuen Zeile gedruckt.TIO fehlt die geeignete Methode, um
prod
zwei Zeichen (mit ) zu multiplizieren , um einen String zu erhalten. Ich weiß, dass diese Methode vor kurzem hinzugefügt wurde, aber die TIO-Version scheint mit der Version auf meinem PC identisch zu sein, auf der dieser Code funktioniert. Daher kann ich nicht vollständig erklären, warum sie auf TIO nicht funktioniert.Kopieren Einfügen Beispiel (das
;
ist nicht notwendig, es unterdrückt nur die zusätzliche Ausgabe in der REPL):quelle
Charcoal ,
262115 BytesProbieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
quelle
J ,
29, 27,25 Bytes-2 Bytes dank FrownyFrog -2 Bytes dank Meilen
Probieren Sie es online!
Anfänglicher Ansatz: J , 29 Bytes
Erklärung:
i.26
- Bereich 0-2632 65 97+/]
- Erstellen Sie eine 3-zeilige Tabelle für die Zeichen&.|:
transponiere dann das nächste Verb (|.
) und transponiere erneut-|."_1
Drehe jede Reihe n-malu:
zu Unicode konvertierenProbieren Sie es online!
quelle
|:u:(<26)2&(|.>:)32 65 97
Spart 2 Bytes.C
7069676064 Bytes+4 Bytes, um die Funktion wiederverwendbar zu machen .
Ungültige 60-Byte-Antwort, die nicht wiederverwendbar ist:
Port
meiner Java 8-Antwort@Neils JavaScript-Antwort .Probieren Sie es online aus.
quelle
i=t=0
.APL + WIN, 26 Bytes
Indexursprung 0
Generieren Sie eine Matrix aus ganzzahligen Indexwerten der Zeichen im APL-Atomvektor.
Drehen Sie jede Spalte um ihren Zahlenwert nach unten.
Verwenden Sie die resultierenden Indizes, um die Zeichen aus dem atomaren Vektor anzuzeigen.
quelle
Vim,
8179 BytesErklärung (vereinfacht)
quelle
C 72 Bytes
quelle
Python 2 , 65 Bytes
Probieren Sie es online!
quelle
Brainfuck ,
121115 BytesVielen Dank an @JoKing für das Speichern von 6 Bytes!
Probieren Sie es online!
quelle
+++[[<+>>++<-]>]
Ist wirklich der Anfang von allem? Vielen Dank!Japt , 17 Bytes
Probier es aus
Erläuterung
quelle
;Bå_cÄ é}"@`" ·y
C
nach dem Mittagessen eine kürzere Lösung finden könnte, indem ich sie überarbeite . Ich weiß nicht wiey
und·
bin in die falsche Richtung gelandet. Ich mussCtrl+Z
zu oft gearbeitet haben, bevor ichCtrl+A
!Python 2 , 79 Bytes
Probieren Sie es online!
quelle
APL (Dyalog Unicode) , 23 Byte ( Adáms SBCS )
Probieren Sie es online!
-1 danke an Adám .
Läuft in einer interaktiven Umgebung.
Geht davon aus
⎕IO←0
.quelle
(⎕UCS-⊖∘↑32 65 97+⊂)⍳26
oder(⎕UCS-⊖32 65 97∘.+⊢)⍳26
K4 , 38 Bytes
Lösung:
Beispiel:
Erläuterung:
9 Zeichen, um die Rotation durchzuführen ...
quelle
Perl,
4946 Bytesoder
quelle
$^x8
, kann mir aber keine andere Variable mit ausreichender Länge vorstellen, vielleicht ist sie"@INC"
aber zu lang und verwendet"@-"
statt$n++
, aber immer noch, dieselbe Länge. Es sei denn, das hilft Ihnen, dies weiter zu verkleinern? Es sei denn, Sie fügen ein-p
Flag hinzu und haben implizite Ausgaben?