Estaba jugando con redes de resistencia infinita (larga historia) cuando me encontré con el siguiente patrón recursivo interesante:
|-||
|---
Cada instancia de este patrón es dos veces más ancha que alta. Para pasar de un nivel del patrón al siguiente, divide este rectángulo en dos subbloques (cada uno de los cuales es un cuadrado NxN):
AB =
|-||
|---
so A =
|-
|-
and B =
||
--
Estas mitades se duplican y reorganizan de acuerdo con el siguiente patrón:
ABAA
ABBB
giving
|-|||-|-
|---|-|-
|-||||||
|-------
Reto
Escriba un programa / función que, dado un número N
, produzca la N
iteración de este diseño recursivo. Esto es golf.
El formato de E / S es relativamente indulgente: puede devolver una sola cadena, una lista de cadenas, una matriz 2D de caracteres, etc. Se permite un espacio en blanco al final arbitrario. También puede usar 0 o 1 indexación.
Ejemplos
Las primeras varias iteraciones del patrón son las siguientes:
N = 0
|-
N = 1
|-||
|---
N = 2
|-|||-|-
|---|-|-
|-||||||
|-------
N = 3
|-|||-|-|-|||-||
|---|-|-|---|---
|-|||||||-|||-||
|-------|---|---
|-|||-|-|-|-|-|-
|---|-|-|-|-|-|-
|-||||||||||||||
|---------------
N = 4
|-|||-|-|-|||-|||-|||-|-|-|||-|-
|---|-|-|---|---|---|-|-|---|-|-
|-|||||||-|||-|||-|||||||-||||||
|-------|---|---|-------|-------
|-|||-|-|-|-|-|-|-|||-|-|-|||-|-
|---|-|-|-|-|-|-|---|-|-|---|-|-
|-|||||||||||||||-|||||||-||||||
|---------------|-------|-------
|-|||-|-|-|||-|||-|||-|||-|||-||
|---|-|-|---|---|---|---|---|---
|-|||||||-|||-|||-|||-|||-|||-||
|-------|---|---|---|---|---|---
|-|||-|-|-|-|-|-|-|-|-|-|-|-|-|-
|---|-|-|-|-|-|-|-|-|-|-|-|-|-|-
|-||||||||||||||||||||||||||||||
|-------------------------------
Me pregunto si hay alguna forma algebraica corta de calcular esta estructura.
f(n,x,y)
que puede calcular directamente si una determinada coordenada debe contener -
o |
. Puede implicar operaciones de módulo u operaciones bit a bit. Las técnicas que he visto hasta ahora implican cortar / unir matrices como se muestra en la especificación.
f(x,y)
también funciona, ya que si x,y
es válido, entonces el resultado no depende den
|-
?