Вступ
У цьому виклику матриця 2 × 2 індексується так:
0 1
2 3
Ми визначаємо сімейство фрактальних образів F(L), де перелік Lдовжин nцих індексів і F(L)розмір .2n-1 × 2n-1
- Якщо
L == [], тоF(L)це шаблон 1 × 1#. Якщо
L != [], тоF(L)будується так. НехайPбуде візерунок, отриманийLіз вилученого першого елемента. Візьміть чотири сітки розміром, заповнені періодами , і замініть сітку, індексовану на шаблон . Потім склейте сітки разом, використовуючи один шар хешей між ними. Ось схеми для чотирьох випадків:2n-1-1 × 2n-1-1.L[0]P#L[0]==0 L[0]==1 L[0]==2 L[0]==3 #... ...# ...#... ...#... [P]#... ...#[P] ...#... ...#... #... ...# ...#... ...#... ####### ####### ####### ####### ...#... ...#... #... ...# ...#... ...#... [P]#... ...#[P] ...#... ...#... #... ...#
Приклад
Розглянемо вхідні дані L = [2,0]. Починаємо з сітки 1 × 1 #, і рухаємо Lправоруч. Крайній правий елемент 0, тому ми беремо чотири копії сітки 1 × 1 ., замінюємо перший на #і склеюємо їх хешами. Це призводить до отримання 3 × 3 сітки
##.
###
.#.
Наступним елементом є 2, тому ми беремо чотири копії 3 × 3 сітки .s, а третю замінюємо вищевказаною сіткою. Чотири сітки є
... ... ##. ...
... ... ### ...
... ... .#. ...
і склеюючи їх разом з #s результатами в сітку 7 × 7
...#...
...#...
...#...
#######
##.#...
####...
.#.#...
Це наш підсумковий результат.
Вхідні дані
Ваш вклад - це список Lіндексів 0, 1, 2, 3. Ви можете взяти його як список цілих чисел або рядок цифр. Зауважте, що він може бути порожнім і може містити дублікати. Довжина Lне більше 5.
Вихідні дані
Ваш вихід - це шаблон F(L)у вигляді рядка з обмеженим рядком.
Правила та оцінка
Ви можете написати повну програму або функцію. виграє найменший байт, а стандартні лазівки заборонені.
Тестові справи
[]
#
[0]
##.
###
.#.
[3]
.#.
###
.##
[2,0]
...#...
...#...
...#...
#######
##.#...
####...
.#.#...
[1,1]
...#.##
...####
...#.#.
#######
...#...
...#...
...#...
[1,2,0]
.......#...#...
.......#...#...
.......#...#...
.......########
.......###.#...
.......#####...
.......#.#.#...
###############
.......#.......
.......#.......
.......#.......
.......#.......
.......#.......
.......#.......
.......#.......
[3,3,1]
.......#.......
.......#.......
.......#.......
.......#.......
.......#.......
.......#.......
.......#.......
###############
.......#...#...
.......#...#...
.......#...#...
.......########
.......#...#.##
.......#...####
.......#...#.#.
[0,1,2,3]
.......#...#...#...............
.......#...#...#...............
.......#...#...#...............
.......#########...............
.......#.#.#...#...............
.......#####...#...............
.......#.###...#...............
################...............
.......#.......#...............
.......#.......#...............
.......#.......#...............
.......#.......#...............
.......#.......#...............
.......#.......#...............
.......#.......#...............
###############################
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
[0,0,1,2,3]
.......#...#...#...............#...............................
.......#...#...#...............#...............................
.......#...#...#...............#...............................
.......#########...............#...............................
.......#.#.#...#...............#...............................
.......#####...#...............#...............................
.......#.###...#...............#...............................
################...............#...............................
.......#.......#...............#...............................
.......#.......#...............#...............................
.......#.......#...............#...............................
.......#.......#...............#...............................
.......#.......#...............#...............................
.......#.......#...............#...............................
.......#.......#...............#...............................
################################...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
###############################################################
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
L = [2,0]ви відрубаєте голову і дивитесь на шаблон F([0]), потім відсікаєте голову [0]та дивитесь на шаблон F([]), який є сіткою 1x1 #. Потім ви використовуєте на ньому нарізаний індекс 0для побудови шаблону 3x3, а індекс нарізаного 2на цьому - для побудови шаблону 7x7. Щоб відповісти на ваше запитання: так, ви завжди починаєте з сітки 1x1, оскільки це базовий випадок рекурсії.
#?L !=[]у цьому прикладі, оскільки він містить 1 або більше елементів. Чи означає це, що F (L) завжди#спочатку a ?