R , 88 86 byte
cat(intToUtf8(rbind(diffinv(matrix(c(66,-32,-31),25,5,T)[,1:3],,,t(c(32,65,97))),10)))
Provalo online!
R è terribile nella manipolazione delle stringhe e sebbene abbia alcuni builtin a matrice ordinata, le rotazioni sono un'altra cosa che non fa molto facilmente. Darò felicemente una taglia a chiunque possa battermi a golf in R.
Nonostante abbia trovato una risposta più breve, assegnerò comunque una ricompensa di 50 ripetizioni alla prima altra risposta R inferiore a 88 byte.
Suppongo che mi concederei la ricompensa se potessi, ma questo è di due byte in meno rispetto alla risposta "noiosa"! Evito le rotazioni semplicemente usando l'inclinazione di R per il riciclaggio.
EDIT: la risposta dell'utente2390246 mi ha completamente superato e assegnerò un premio di 100 punti poiché quella soluzione è di gran lunga superiore.
Per arrivare qui, ho decostruito l'output desiderato nei loro punti di codice ASCII con utf8ToInt
(rimuovendo le nuove righe) , ho creato una matrice e diff
ho eseguito un su di essi ottenendo le differenze a livello di colonna. Notando la periodicità lì, ho deciso di costruire la matrice in modo da golf, sperando di usare diffinv
per ricreare l'originale.
Grazie alla periodicità, possiamo ricreare la diff
matrice ed forzando R a riciclare con una lunghezza non multipla ed estrarre le colonne che volevamo effettivamente:
matrix(c(66,-32,-31),25,5,T)[,1:3]
Quindi invertiamo questo processo, con diffinv
per ricreare i punti di codice, aggiungere una riga di 10
(newline) in basso, riconvertire in ASCII con intToUtf8
e cat
il risultato.