R , 88 86 байт
cat(intToUtf8(rbind(diffinv(matrix(c(66,-32,-31),25,5,T)[,1:3],,,t(c(32,65,97))),10)))
Спробуйте в Інтернеті!
R страшний при маніпулюванні струнами, і хоча у нього є кілька акуратних вбудованих матриць, обертання - це ще одна річ, що це не дуже легко. Я із задоволенням дарую винагороду тому, хто може перемогти мене в гольфі в Р.
Незважаючи на те, що я знайшов більш коротку відповідь, я все-таки присуджую 50 повторних сум першої другої відповіді R коротше 88 байт.
Я вважаю, що присвоїв би собі винагороду, якби міг, але це цілих два байти коротше, ніж "нудна" відповідь! Я уникаю обертів, просто використовуючи прихильність R для переробки.
Редагувати: відповідь користувача2390246 user2390246 повністю перевершив мене, і я отримаю нагороду в 100 балів, оскільки це рішення набагато перевершує.
Щоб потрапити сюди, я деконструював потрібний вихід до їх ASCII кодових точок за допомогою utf8ToInt
(видалення нових рядків), побудував матрицю та запустив diff
на нихm, отримавши різниці стовпців. Помітивши періодичність там, я вирішив побудувати матрицю по-гольфсьому, сподіваючись використатиdiffinv
для відтворення оригіналу.
Завдяки періодичності ми можемо відтворити diff
матрицю ed, змусивши R переробити з не кратною довжиною та витягнути стовпці, яких ми насправді хотіли:
matrix(c(66,-32,-31),25,5,T)[,1:3]
Тоді ми інвертний цей процес, з diffinv
відтворити елементи коду, додайте рядок 10
(рядки) на дно, реконвертіровать в ASCII з intToUtf8
, і cat
результатом.