Adam7 - алгоритм переплетення растрових зображень, наприклад PNG. Його називають алгоритмом "Adam7", оскільки він був винайдений Адамом М. Костелло, і він генерується, дотримуючись певної моделі 7 разів. Один із цікавих моментів алгоритму Адама7, який робить його справді цікавим для кодового гольфу, - це те, що шаблон можна повторювати довільну кількість разів, поки це не дивно. Ще в 1996 році, коли PNG
був розроблений стандарт, було використано лише 7 ітерацій, оскільки 9 ітерацій були надто складними, а 5 ітерацій - не настільки ефективними.
Ось перша ітерація плитки:
a
Досить просто. Це плитка "Adam1". Ось як ми переходимо до наступної ітерації, плитки "Adam3".
Оскільки наша остання плитка була 1x1
, ми подвоюємо висоту та ширину, і наступна буде 2x2
. Спочатку ми починаємо з значка "a" у верхньому лівому куті.
a-
--
Крок 2, скопіюйте цей візерунок праворуч і збільшить літеру, на якій ми працюємо.
ab
--
Крок 3 - те саме, що є кроком 2, але скопіюйте його вниз, а не праворуч.
ab
cc
Бум. Плитка «Адам3». Давайте також зробимо "Adam5", щоб ви могли реально побачити, як працює алгоритм. Ця плитка, знову ж таки, буде вдвічі більшою, значить 4x4
. Знову починаємо з a
лівого верхнього кута:
a---
----
----
----
Подвійно цей візерунок, збільши літеру та перемісти її праворуч:
a-b-
----
----
----
Знову на цей раз вниз.
a-b-
----
c-c-
----
Знову на цей раз праворуч.
adbd
----
cdcd
----
Знову на цей раз вниз.
adbd
eeee
cdcd
eeee
Це плитка «Адам5». Ось представлення ASCII плитки Adam7:
afdfbfdf
gggggggg
efefefef
gggggggg
cfdfcfdf
gggggggg
efefefef
gggggggg
І поки ми це робимо, ось весела анімація кожного кроку плитки Adam7 (хоча це і кілька плиток поруч):
Змагання
Давши додатне непарне число N , виведіть плитку "Адам N ". Ви можете використовувати будь-який метод IO за замовчуванням . Оскільки ми використовуємо алфавіт замість чисел, вам потрібно обробляти лише введеннями до 25. Ви можете виводити символи з малого чи великого регістру до тих пір, поки ви вказали, і це послідовно.
Зразок IO
1:
a
3:
ab
cc
5:
adbd
eeee
cdcd
eeee
7:
afdfbfdf
gggggggg
efefefef
gggggggg
cfdfcfdf
gggggggg
efefefef
gggggggg
9:
ahfhdhfhbhfhdhfh
iiiiiiiiiiiiiiii
ghghghghghghghgh
iiiiiiiiiiiiiiii
ehfhehfhehfhehfh
iiiiiiiiiiiiiiii
ghghghghghghghgh
iiiiiiiiiiiiiiii
chfhdhfhchfhdhfh
iiiiiiiiiiiiiiii
ghghghghghghghgh
iiiiiiiiiiiiiiii
ehfhehfhehfhehfh
iiiiiiiiiiiiiiii
ghghghghghghghgh
iiiiiiiiiiiiiiii
Як завжди, це код-гольф, тому застосовуються стандартні лазівки, і найкоротша відповідь у байтах виграє!
c
в тестовій шафі9
?