introduzione
In questa sfida, una matrice 2 × 2 viene indicizzata in questo modo:
0 1
2 3
Definiamo una famiglia di modelli frattali F(L), in cui Lè presente un nelenco di F(L)lunghezza di questi indici e ha dimensioni .2n-1 × 2n-1
- Se
L == [], alloraF(L)è il modello 1 × 1#. Se
L != [], alloraF(L)è costruito come segue. SiaPil modello ottenutoLcon il primo elemento rimosso. Prendi quattro griglie di dimensioni riempite con punti e sostituisci la griglia indicizzata da con il motivo . Quindi, incolla le griglie insieme usando uno strato di hash tra di loro. Ecco i diagrammi per i quattro casi: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] ...#... ...#... #... ...#
Esempio
Considera l'input L = [2,0]. Iniziamo con la griglia 1 × 1 #e attraversiamo Lda destra. L'elemento più a destra è 0, quindi prendiamo quattro copie della griglia 1 × 1 ., sostituiamo la prima con #e le incolliamo insieme con gli hash. Ciò si traduce nella griglia 3 × 3
##.
###
.#.
L'elemento successivo è 2, quindi prendiamo quattro copie della griglia 3 × 3 di .s e sostituiamo la terza con la griglia sopra. Le quattro griglie sono
... ... ##. ...
... ... ### ...
... ... .#. ...
e incollandoli insieme ai #risultati di s nella griglia 7 × 7
...#...
...#...
...#...
#######
##.#...
####...
.#.#...
Questo è il nostro risultato finale.
Ingresso
Il tuo input è un elenco Ldi indici 0, 1, 2, 3. Puoi prenderlo come un elenco di numeri interi o una stringa di cifre. Si noti che può essere vuoto e può contenere duplicati. La lunghezza di Lè al massimo 5.
Produzione
L'output è il modello F(L)come stringa delimitata da nuova riga.
Regole e punteggio
È possibile scrivere un programma completo o una funzione. vince il conteggio di byte più basso e non sono consentite scappatoie standard.
Casi test
[]
#
[0]
##.
###
.#.
[3]
.#.
###
.##
[2,0]
...#...
...#...
...#...
#######
##.#...
####...
.#.#...
[1,1]
...#.##
...####
...#.#.
#######
...#...
...#...
...#...
[1,2,0]
.......#...#...
.......#...#...
.......#...#...
.......########
.......###.#...
.......#####...
.......#.#.#...
###############
.......#.......
.......#.......
.......#.......
.......#.......
.......#.......
.......#.......
.......#.......
[3,3,1]
.......#.......
.......#.......
.......#.......
.......#.......
.......#.......
.......#.......
.......#.......
###############
.......#...#...
.......#...#...
.......#...#...
.......########
.......#...#.##
.......#...####
.......#...#.#.
[0,1,2,3]
.......#...#...#...............
.......#...#...#...............
.......#...#...#...............
.......#########...............
.......#.#.#...#...............
.......#####...#...............
.......#.###...#...............
################...............
.......#.......#...............
.......#.......#...............
.......#.......#...............
.......#.......#...............
.......#.......#...............
.......#.......#...............
.......#.......#...............
###############################
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
...............#...............
[0,0,1,2,3]
.......#...#...#...............#...............................
.......#...#...#...............#...............................
.......#...#...#...............#...............................
.......#########...............#...............................
.......#.#.#...#...............#...............................
.......#####...#...............#...............................
.......#.###...#...............#...............................
################...............#...............................
.......#.......#...............#...............................
.......#.......#...............#...............................
.......#.......#...............#...............................
.......#.......#...............#...............................
.......#.......#...............#...............................
.......#.......#...............#...............................
.......#.......#...............#...............................
################################...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
...............#...............#...............................
###############################################################
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
...............................#...............................
L = [2,0], tagliare la testa e guardare il modello F([0]), quindi tagliare la testa di [0]e guardare il modello F([]), che è la griglia 1x1 #. Quindi si utilizza l'indice troncato 0su di esso per costruire il modello 3x3 e si utilizza l'indice troncato 2su quello per costruire il modello 7x7. Per rispondere alla tua domanda: sì, inizi sempre con la griglia 1x1 poiché questo è il caso base della ricorsione.
#?L !=[]in questo esempio, poiché ha 1 o più elementi. Questo significa che F (L) è sempre un#in un primo momento?