当我遇到以下有趣的递归模式时,我正在搞无限电阻网络(长话不说):
|-||
|---
该图案的每个实例的宽度是其高度的两倍。要从图案的一个层次转到下一个层次,请将该矩形分成两个子块(每个子块为NxN正方形):
AB =
|-||
|---
so A =
|-
|-
and B =
||
--
然后根据以下模式复制和重新排列这些半部分:
ABAA
ABBB
giving
|-|||-|-
|---|-|-
|-||||||
|-------
挑战
编写一个程序/函数,给定一个数字N
,输出N
该递归设计的第th次迭代。这是高尔夫。
I / O格式相对宽松:您可以返回单个字符串,字符串列表,二维字符数组等。允许使用任意尾随空格。您也可以使用0或1索引。
例子
模式的前几次迭代如下:
N = 0
|-
N = 1
|-||
|---
N = 2
|-|||-|-
|---|-|-
|-||||||
|-------
N = 3
|-|||-|-|-|||-||
|---|-|-|---|---
|-|||||||-|||-||
|-------|---|---
|-|||-|-|-|-|-|-
|---|-|-|-|-|-|-
|-||||||||||||||
|---------------
N = 4
|-|||-|-|-|||-|||-|||-|-|-|||-|-
|---|-|-|---|---|---|-|-|---|-|-
|-|||||||-|||-|||-|||||||-||||||
|-------|---|---|-------|-------
|-|||-|-|-|-|-|-|-|||-|-|-|||-|-
|---|-|-|-|-|-|-|---|-|-|---|-|-
|-|||||||||||||||-|||||||-||||||
|---------------|-------|-------
|-|||-|-|-|||-|||-|||-|||-|||-||
|---|-|-|---|---|---|---|---|---
|-|||||||-|||-|||-|||-|||-|||-||
|-------|---|---|---|---|---|---
|-|||-|-|-|-|-|-|-|-|-|-|-|-|-|-
|---|-|-|-|-|-|-|-|-|-|-|-|-|-|-
|-||||||||||||||||||||||||||||||
|-------------------------------
我想知道是否有一些简短的代数方法来计算这种结构。
f(n,x,y)
可以直接计算给定坐标应包含-
还是|
。它可能涉及模运算或按位运算。到目前为止,我所见过的技术都涉及剪切/连接数组,如规范所示。
f(x,y)
也有效,因为如果x,y
有效,则结果不依赖n
|-
?