R , 88 86 bajtów
cat(intToUtf8(rbind(diffinv(matrix(c(66,-32,-31),25,5,T)[,1:3],,,t(c(32,65,97))),10)))
Wypróbuj online!
R jest okropny w manipulowaniu strunami i chociaż ma pewne porządne wbudowane macierze, rotacje to kolejna rzecz, której nie robi się łatwo. Z radością dam nagrodę każdemu, kto może wygrać w golfa w R.
Pomimo znalezienia krótszej odpowiedzi, nadal przyznam 50 powtórzeń za pierwszą inną odpowiedź R krótszą niż 88 bajtów.
Chyba przyznałbym sobie nagrodę, gdybym mógł, ale to całe dwa bajty krótsze niż „nudna” odpowiedź! Unikam rotacji, wykorzystując skłonność R. do recyklingu.
EDYCJA: odpowiedź użytkownika2390246 całkowicie mnie przerosła i przyznam nagrodę w wysokości 100 punktów, ponieważ to rozwiązanie jest znacznie lepsze.
Aby się tu dostać, zdekonstruowałem pożądane dane wyjściowe do ich punktów kodowych ASCII za pomocą utf8ToInt(usuwając znaki nowego wiersza), zbudowałem macierz i uruchomiłem diffna nich, uzyskując różnice między kolumnami. Biorąc pod uwagę okresowość, postanowiłem skonstruować matrycę w golfowy sposób, mając nadzieję diffinvna odtworzenie oryginału.
Dzięki okresowości możemy odtworzyć diffmacierz ed, zmuszając R do recyklingu o długości innej niż wielokrotna i wyodrębniając kolumny, które tak naprawdę chcieliśmy:
matrix(c(66,-32,-31),25,5,T)[,1:3]
Następnie odwracamy ten proces, diffinvaby odtworzyć punkty kodowe, dołączyć wiersz 10(nowe linie) na dole, ponownie przekonwertować na ASCII za pomocą intToUtf8i catwynik.