Eu estava brincando com infinitas redes de resistores (história longa) quando me deparei com o seguinte padrão recursivo interessante:
|-||
|---
Cada instância desse padrão tem o dobro da largura e a altura. Para ir de um nível do padrão para o próximo, você divide esse retângulo em dois sub-blocos (cada um dos quais é um quadrado NxN):
AB =
|-||
|---
so A =
|-
|-
and B =
||
--
Essas metades são duplicadas e reorganizadas de acordo com o seguinte padrão:
ABAA
ABBB
giving
|-|||-|-
|---|-|-
|-||||||
|-------
Desafio
Escreva um programa / função que, dado um número N
, produza a N
iteração desse design recursivo. Isso é golfe.
O formato de E / S é relativamente branda: você pode retornar uma única string, uma lista de strings, uma matriz 2D de caracteres etc. O espaço em branco à direita é permitido. Você também pode usar a indexação 0 ou 1.
Exemplos
As primeiras várias iterações do padrão são as seguintes:
N = 0
|-
N = 1
|-||
|---
N = 2
|-|||-|-
|---|-|-
|-||||||
|-------
N = 3
|-|||-|-|-|||-||
|---|-|-|---|---
|-|||||||-|||-||
|-------|---|---
|-|||-|-|-|-|-|-
|---|-|-|-|-|-|-
|-||||||||||||||
|---------------
N = 4
|-|||-|-|-|||-|||-|||-|-|-|||-|-
|---|-|-|---|---|---|-|-|---|-|-
|-|||||||-|||-|||-|||||||-||||||
|-------|---|---|-------|-------
|-|||-|-|-|-|-|-|-|||-|-|-|||-|-
|---|-|-|-|-|-|-|---|-|-|---|-|-
|-|||||||||||||||-|||||||-||||||
|---------------|-------|-------
|-|||-|-|-|||-|||-|||-|||-|||-||
|---|-|-|---|---|---|---|---|---
|-|||||||-|||-|||-|||-|||-|||-||
|-------|---|---|---|---|---|---
|-|||-|-|-|-|-|-|-|-|-|-|-|-|-|-
|---|-|-|-|-|-|-|-|-|-|-|-|-|-|-
|-||||||||||||||||||||||||||||||
|-------------------------------
Gostaria de saber se existe alguma maneira algébrica curta de calcular essa estrutura.
f(n,x,y)
que possa calcular diretamente se uma determinada coordenada deve conter -
ou |
. Pode envolver operações de módulo ou operações bit a bit. As técnicas que eu vi até agora envolvem cortar / unir matrizes, como mostrado nas especificações.
f(x,y)
também funciona, pois se x,y
é válido, então o resultado não dependen
|-
?