R , 88 86 bytes
cat(intToUtf8(rbind(diffinv(matrix(c(66,-32,-31),25,5,T)[,1:3],,,t(c(32,65,97))),10)))
Pruébalo en línea!
R es terrible en la manipulación de cuerdas y aunque tiene algunas incorporaciones de matriz ordenadas, las rotaciones son otra cosa que no hace muy fácilmente. Felizmente daré una recompensa a cualquiera que pueda superarme en R.
A pesar de haber encontrado una respuesta más corta, todavía otorgaré una recompensa de 50 repeticiones a la otra respuesta R más corta que 88 bytes.
Supongo que me otorgaría la recompensa si pudiera, ¡pero esto es un total de dos bytes más corto que la respuesta "aburrida"! Evito las rotaciones simplemente usando la inclinación de R para reciclar.
EDITAR: respuesta del usuario2390246 usuario2390246 me superó por completo y otorgaré una recompensa de 100 puntos ya que esa solución es muy superior.
Para llegar aquí, deconstruí el resultado deseado en sus puntos de código ASCII con utf8ToInt
(eliminando las nuevas líneas), construí una matriz y ejecuté un diff
archivo sobre ellos para obtener las diferencias en columnas. Tomando nota de la periodicidad allí, me propuse construir la matriz de una manera golfística, con la esperanza de usardiffinv
para recrear el original.
Gracias a la periodicidad, podemos recrear la diff
matriz ed forzando a R a reciclar con una longitud no múltiple y extraer las columnas que realmente queríamos:
matrix(c(66,-32,-31),25,5,T)[,1:3]
Luego invertimos este proceso, diffinv
para recrear los puntos de código, agregamos una fila de 10
(líneas nuevas) en la parte inferior, reconvertimos a ASCII intToUtf8
y cat
el resultado.