다음과 같은 흥미로운 재귀 패턴을 발견했을 때 무한 저항 네트워크 (긴 이야기)로 혼란 스러웠습니다.
|-||
|---
이 패턴의 각 인스턴스는 키보다 두 배 넓습니다. 패턴의 한 레벨에서 다음 레벨로 이동하려면이 사각형을 두 개의 서브 블록 (각각 NxN 정사각형)으로 나눕니다.
AB =
|-||
|---
so A =
|-
|-
and B =
||
--
그런 다음이 절반은 다음 패턴에 따라 복제되고 재 배열됩니다.
ABAA
ABBB
giving
|-|||-|-
|---|-|-
|-||||||
|-------
도전
숫자가 주어지면 이 재귀 적 디자인의 반복을 N
출력 하는 프로그램 / 함수를 작성하십시오 N
. 이것은 골프입니다.
I / O 형식은 비교적 관대합니다. 단일 문자열, 문자열 목록, 2D 문자 배열 등을 반환 할 수 있습니다. 임의의 후행 공백이 허용됩니다. 0 또는 1 인덱싱을 사용할 수도 있습니다.
예
패턴의 처음 몇 번의 반복은 다음과 같습니다.
N = 0
|-
N = 1
|-||
|---
N = 2
|-|||-|-
|---|-|-
|-||||||
|-------
N = 3
|-|||-|-|-|||-||
|---|-|-|---|---
|-|||||||-|||-||
|-------|---|---
|-|||-|-|-|-|-|-
|---|-|-|-|-|-|-
|-||||||||||||||
|---------------
N = 4
|-|||-|-|-|||-|||-|||-|-|-|||-|-
|---|-|-|---|---|---|-|-|---|-|-
|-|||||||-|||-|||-|||||||-||||||
|-------|---|---|-------|-------
|-|||-|-|-|-|-|-|-|||-|-|-|||-|-
|---|-|-|-|-|-|-|---|-|-|---|-|-
|-|||||||||||||||-|||||||-||||||
|---------------|-------|-------
|-|||-|-|-|||-|||-|||-|||-|||-||
|---|-|-|---|---|---|---|---|---
|-|||||||-|||-|||-|||-|||-|||-||
|-------|---|---|---|---|---|---
|-|||-|-|-|-|-|-|-|-|-|-|-|-|-|-
|---|-|-|-|-|-|-|-|-|-|-|-|-|-|-
|-||||||||||||||||||||||||||||||
|-------------------------------
이 구조를 계산하는 짧은 대수적 방법이 있는지 궁금합니다.
f(n,x,y)
직접 좌표 주어진 포함할지 여부를 계산할 수 있습니다 -
또는 |
. 모듈로 연산 또는 비트 연산이 포함될 수 있습니다. 지금까지 본 기술은 모두 사양에 표시된대로 절단 / 결합 배열과 관련됩니다.
f(x,y)
x,y
유효하면 결과는 다음에 의존하지 않기 때문에 작동합니다 .n
|-
?