Introducción
En este desafío, una matriz 2 × 2 se indexa así:
0 1
2 3
Definimos una familia de patrones fractales F(L), donde Lhay una nlista de longitud de estos índices y F(L)tiene tamaño .2n-1 × 2n-1
- Si
L == [], entoncesF(L)es el patrón 1 × 1#. Si
L != [], entoncesF(L)se construye de la siguiente manera. DejePser el patrón obtenido deLcon el primer elemento eliminado. Tome cuatro cuadrículas de tamaño llenas de puntos y reemplace la cuadrícula indexada con el patrón . Luego, pegue las rejillas juntas usando una capa de hashes entre ellas. Aquí hay diagramas para los cuatro casos: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] ...#... ...#... #... ...#
Ejemplo
Considere la entrada L = [2,0]. Comenzamos con la cuadrícula 1 × 1 #, y atravesamos Ldesde la derecha. El elemento más a la derecha es 0, por lo que tomamos cuatro copias de la cuadrícula 1 × 1 ., reemplazamos la primera por #y las pegamos con hashes. Esto da como resultado la cuadrícula 3 × 3
##.
###
.#.
El siguiente elemento es 2, entonces tomamos cuatro copias de la cuadrícula de 3 × 3 de .s, y reemplazamos la tercera con la cuadrícula anterior. Las cuatro cuadrículas son
... ... ##. ...
... ... ### ...
... ... .#. ...
y pegarlos junto con #s resulta en la cuadrícula 7 × 7
...#...
...#...
...#...
#######
##.#...
####...
.#.#...
Este es nuestro resultado final.
Entrada
Su entrada es una lista Lde los índices 0, 1, 2, 3. Puede tomarlo como una lista de enteros o una cadena de dígitos. Tenga en cuenta que puede estar vacío y puede contener duplicados. El largo deL es como máximo 5.
Salida
Tu salida es el patrón F(L) como una cadena delimitada por nueva línea.
Reglas y puntaje
Puede escribir un programa completo o una función. gana el conteo de bytes más bajo y no se permiten las lagunas estándar.
Casos de prueba
[]
#
[0]
##.
###
.#.
[3]
.#.
###
.##
[2,0]
...#...
...#...
...#...
#######
##.#...
####...
.#.#...
[1,1]
...#.##
...####
...#.#.
#######
...#...
...#...
...#...
[1,2,0]
.......#...#...
.......#...#...
.......#...#...
.......########
.......###.#...
.......#####...
.......#.#.#...
###############
.......#.......
.......#.......
.......#.......
.......#.......
.......#.......
.......#.......
.......#.......
[3,3,1]
.......#.......
.......#.......
.......#.......
.......#.......
.......#.......
.......#.......
.......#.......
###############
.......#...#...
.......#...#...
.......#...#...
.......########
.......#...#.##
.......#...####
.......#...#.#.
[0,1,2,3]
.......#...#...#...............
.......#...#...#...............
.......#...#...#...............
.......#########...............
.......#.#.#...#...............
.......#####...#...............
.......#.###...#...............
################...............
.......#.......#...............
.......#.......#...............
.......#.......#...............
.......#.......#...............
.......#.......#...............
.......#.......#...............
.......#.......#...............
###############################
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
[0,0,1,2,3]
.......#...#...#...............#...............................
.......#...#...#...............#...............................
.......#...#...#...............#...............................
.......#########...............#...............................
.......#.#.#...#...............#...............................
.......#####...#...............#...............................
.......#.###...#...............#...............................
################...............#...............................
.......#.......#...............#...............................
.......#.......#...............#...............................
.......#.......#...............#...............................
.......#.......#...............#...............................
.......#.......#...............#...............................
.......#.......#...............#...............................
.......#.......#...............#...............................
################################...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
###############################################################
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
L = [2,0], corta la cabeza y mira el patrón F([0]), luego corta la cabeza [0]y mira el patrón F([]), que es la cuadrícula 1x1 #. Luego, usa el índice cortado 0en él para construir el patrón 3x3, y usa el índice cortado 2en ese para construir el patrón 7x7. Para responder a su pregunta: sí, siempre comienza con la cuadrícula 1x1 ya que ese es el caso base de la recursividad.
#?L !=[]en ese ejemplo, ya que tiene 1 o más elementos. ¿Significa esto que F (L) siempre es un#al principio?