R , 88 86 octets
cat(intToUtf8(rbind(diffinv(matrix(c(66,-32,-31),25,5,T)[,1:3],,,t(c(32,65,97))),10)))
Essayez-le en ligne!
R est terrible en manipulation de corde et bien qu’il ait quelques fonctions de matrice bien définies, les rotations sont une autre chose qu’il ne fait pas très facilement. Je donnerai volontiers une prime à quiconque peut me sur-jouer en R.
Malgré le fait que j'ai trouvé une réponse plus courte, j'accorderai quand même une prime de 50 répétitions à la première autre réponse R de moins de 88 octets.
J'imagine que si je le pouvais, je m'attribuerais cette prime, mais c'est deux octets de moins que la réponse "ennuyeuse"! J'évite les rotations en utilisant simplement le penchant de R pour le recyclage.
EDIT: la réponse de user2390246 m'a complètement gommée et je vais attribuer une prime de 100 points puisque cette solution est de loin supérieure.
Pour arriver ici, j'ai décomposé la sortie souhaitée en leurs points de code ASCII avec utf8ToInt
(suppression des nouvelles lignes), construit une matrice et exécuté un diff
sur eux en obtenant les différences par colonne. Notant la périodicité, je me suis mis à construire la matrice de manière ludique, dans l’espoir diffinv
de recréer l’original.
Grâce à la périodicité, nous pouvons recréer la diff
matrice ed en forçant R à recycler avec une longueur non multiple et en extrayant les colonnes que nous souhaitions réellement:
matrix(c(66,-32,-31),25,5,T)[,1:3]
Ensuite, nous inversons ce processus diffinv
en recréant les points de code, en ajoutant une ligne de 10
(nouvelles lignes) en bas, en le convertissant en ASCII avec intToUtf8
, ainsi que cat
le résultat.