Вступ
У цьому виклику матриця 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 ?