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 L
há uma n
lista 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. SejaP
o padrão obtidoL
com 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 L
da 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 L
dos í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 0
para criar o padrão 3x3 e use o índice cortado 2
para 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?