Introdução
Nesse desafio, uma matriz 2 × 2 é indexada assim:
0 1
2 3
Definimos uma família de padrões do tipo fractal F(L), onde Lhá uma nlista longa desses índices e F(L)seu tamanho .2n-1 × 2n-1
- Se
L == [], entãoF(L)é o padrão 1 × 1#. Se
L != [], então,F(L)é construído da seguinte maneira. SejaPo padrão obtidoLcom o primeiro elemento removido. Pegue quatro grades de tamanho preenchidas com pontos e substitua a grade indexada por pelo padrão . Em seguida, cole as grades usando uma camada de hashes entre elas. Aqui estão diagramas para os quatro 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] ...#... ...#... #... ...#
Exemplo
Considere a entrada L = [2,0]. Começamos com a grade 1 × 1 #e atravessamos Lda direita. O elemento mais à direita é 0, então, pegamos quatro cópias da grade 1 × 1 ., substituímos a primeira por #e colamos com hashes. Isso resulta na grade 3 × 3
##.
###
.#.
O próximo elemento é 2, então, pegamos quatro cópias da grade 3 × 3 de .s e substituímos a terceira pela grade acima. As quatro grades são
... ... ##. ...
... ... ### ...
... ... .#. ...
e colá-los junto com #s resulta na grade 7 × 7
...#...
...#...
...#...
#######
##.#...
####...
.#.#...
Esta é a nossa saída final.
Entrada
Sua entrada é uma lista Ldos índices 0, 1, 2, 3. Você pode tomá-lo como uma lista de números inteiros ou uma sequência de dígitos. Observe que ele pode estar vazio e pode conter duplicatas. O comprimento de Lé no máximo 5.
Resultado
Sua saída é o padrão F(L)como uma sequência delimitada por nova linha.
Regras e pontuação
Você pode escrever um programa completo ou uma função. a menor contagem de bytes vence e as brechas padrão não são permitidas.
Casos de teste
[]
#
[0]
##.
###
.#.
[3]
.#.
###
.##
[2,0]
...#...
...#...
...#...
#######
##.#...
####...
.#.#...
[1,1]
...#.##
...####
...#.#.
#######
...#...
...#...
...#...
[1,2,0]
.......#...#...
.......#...#...
.......#...#...
.......########
.......###.#...
.......#####...
.......#.#.#...
###############
.......#.......
.......#.......
.......#.......
.......#.......
.......#.......
.......#.......
.......#.......
[3,3,1]
.......#.......
.......#.......
.......#.......
.......#.......
.......#.......
.......#.......
.......#.......
###############
.......#...#...
.......#...#...
.......#...#...
.......########
.......#...#.##
.......#...####
.......#...#.#.
[0,1,2,3]
.......#...#...#...............
.......#...#...#...............
.......#...#...#...............
.......#########...............
.......#.#.#...#...............
.......#####...#...............
.......#.###...#...............
################...............
.......#.......#...............
.......#.......#...............
.......#.......#...............
.......#.......#...............
.......#.......#...............
.......#.......#...............
.......#.......#...............
###############################
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
[0,0,1,2,3]
.......#...#...#...............#...............................
.......#...#...#...............#...............................
.......#...#...#...............#...............................
.......#########...............#...............................
.......#.#.#...#...............#...............................
.......#####...#...............#...............................
.......#.###...#...............#...............................
################...............#...............................
.......#.......#...............#...............................
.......#.......#...............#...............................
.......#.......#...............#...............................
.......#.......#...............#...............................
.......#.......#...............#...............................
.......#.......#...............#...............................
.......#.......#...............#...............................
################################...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
###############################################################
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
L = [2,0], você corta a cabeça e olha para o padrão F([0]), depois corta a cabeça [0]e olha para o padrão F([]), que é a grade 1x1 #. Depois, use o índice cortado 0para criar o padrão 3x3 e use o índice cortado 2para criar o padrão 7x7. Para responder à sua pergunta: sim, você sempre começa com a grade 1x1, pois esse é o caso base da recursão.
#?L !=[]nesse exemplo, pois possui 1 ou mais elementos. Isso significa que F (L) é sempre um#no início?