R , 88 86 bayt
cat(intToUtf8(rbind(diffinv(matrix(c(66,-32,-31),25,5,T)[,1:3],,,t(c(32,65,97))),10)))
Çevrimiçi deneyin!
R, string manipülasyonunda korkunçtur ve bazı düzgün matris yerleşiklerine sahip olmasına rağmen, rotasyonlar çok kolay yapamadığı başka bir şeydir. Mutlu bir şekilde bana R'de golf attırabilecek birine lütuf vereceğim.
Daha kısa bir cevap bulmama rağmen, 88 bayttan daha kısa olan ilk R cevabına hala 50 rep ödül vereceğim.
Galiba mümkünse kendime ödül verirdim, ama bu "sıkıcı" cevabından daha kısa bir iki bayt! Sadece R'nin geri dönüşüm için kullandığı tutkuyu kullanarak rotasyonları önlüyorum.
EDIT: kullanici2390246'nın cevabı beni çok kızdı ve bu çözüm çok daha üstün olduğundan 100 puanlık bir ödül vereceğim.
Buraya gelmek için, istenen çıktıyı ASCII kod noktalarına göre utf8ToInt
(yeni satırları kaldırarak) yapıyorum , bir matris oluşturdum ve diff
sütunlara göre farklılıkları elde ederek üzerlerine koştum . Orada periyodikliğe dikkat ederek diffinv
, orijinali yeniden yaratmayı umarak matrisi golf golf tarzında inşa etmeye başladım .
Periyodiklik sayesinde, diff
R matrisini çoklu olmayan bir uzunlukla geri dönüştürmeye zorlayarak ed matrisini yeniden oluşturabilir ve gerçekte istediğimiz sütunları çıkarabiliriz:
matrix(c(66,-32,-31),25,5,T)[,1:3]
Sonra diffinv
kod sürecini yeniden oluşturmak 10
, tabana bir satır (yeni satırlar) eklemek, ASCII'ye dönüştürmek intToUtf8
ve cat
sonucu ile birlikte bu süreci tersine çeviririz .