R , 88 86 Bytes
cat(intToUtf8(rbind(diffinv(matrix(c(66,-32,-31),25,5,T)[,1:3],,,t(c(32,65,97))),10)))
Probieren 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ß ein diff
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 verwenden diffinv
, 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:
matrix(c(66,-32,-31),25,5,T)[,1:3]
Dann kehren wir diesen Prozess um, indem wir diffinv
die Codepunkte neu erstellen, eine Reihe von 10
(Zeilenumbrüchen) an den unteren Rand anhängen , mit in ASCII konvertieren intToUtf8
und cat
das Ergebnis erhalten.