R , 88 bytes 86
cat(intToUtf8(rbind(diffinv(matrix(c(66,-32,-31),25,5,T)[,1:3],,,t(c(32,65,97))),10)))
Experimente online!
R é terrível na manipulação de cordas e, embora tenha algumas matrizes bem organizadas, as rotações são outra coisa que não faz com muita facilidade. Felizmente, darei uma recompensa a qualquer um que possa me jogar fora na R.
Apesar de ter encontrado uma resposta mais curta, ainda concederei uma recompensa de 50 repetições à primeira outra resposta R com menos de 88 bytes.
Suponho que me daria a recompensa se pudesse, mas isso é dois bytes mais curto que a resposta "chata"! Evito rotações usando apenas a propensão de R para reciclagem.
EDIT: a resposta do user2390246 me superou completamente e eu concederei uma recompensa de 100 pontos, já que essa solução é muito superior.
Para chegar aqui, desconstruí a saída desejada para seus pontos de código ASCII com utf8ToInt
(removendo as novas linhas), construí uma matriz e executei uma diff
delas, obtendo as diferenças entre as colunas. Observando a periodicidade lá, propus-me a construir a matriz de uma forma de golfe, esperando usardiffinv
para recriar o original.
Graças à periodicidade, podemos recriar a diff
matriz ed forçando R a reciclar com um comprimento não múltiplo e extrair as colunas que realmente queríamos:
matrix(c(66,-32,-31),25,5,T)[,1:3]
Em seguida, invertemos esse processo, com o diffinv
objetivo de recriar os pontos de código, anexamos uma linha de 10
(novas linhas) na parte inferior, reconvertemos em ASCII com intToUtf8
e cat
o resultado.