程序员经常沉迷于绘制分形。我认为我们需要一种新的基于计算机的介质。
的ħ树是一个相当简单的类型的分形制成的水平线和垂直线。这是第十次迭代(由Wikipedia提供):
现在,假设图像中的每一行都是标准计算机文件系统中的目录(文件夹)。除最小的线外,所有线都相交于比自己小的两条线。这两条较小的线是较大线的子目录。因此,中间的大水平线是两条最大的垂直线的父目录,这两个垂直线又是图像中其余线的父级,祖父母等。
挑战
编写一个程序,该程序通过stdin或命令行(或最接近的替代方案)接收一个正整数N,并创建一个目录树,该目录树反映了H树形的第N次迭代。
第一次迭代(N = 1)是一条水平线。在每个后续迭代中,将一组新的垂直线或水平线添加到当前线的末端。因此,对于N = 2,添加两条垂直线(形成H形),对于N = 3,添加四条水平线,依此类推。
根目录的名称必须始终为tree
。子目录的名称必须是它们相对于它们的父行,使用方向一致right
,left
,up
和down
。
由于根目录始终是一条水平线,因此它将始终具有right
和left
子目录。但是,这两个会up
和down
子目录,以及那些将right
和left
再次,等等。
迭代限制末尾的目录应该为空。
例
对于N = 3,目录树应如下所示:
tree
right
up
down
left
up
down
附加信息
- 理想情况下,该
tree
目录将弹出源代码所在的文件夹,但是如果转到某个工作目录也可以。 - 您可能会假设
tree
您将在其中创建目录的地方没有预先存在的目录。 - 您可能会假设您的程序将始终在相同的常见现代操作系统(Mac / Windows / Linux)上运行。基本上不必担心使用并非在所有操作系统上都起作用的文件分隔符。
计分
这是代码高尔夫球,因此以字节为单位的最短代码获胜。
@KSFT是:“由于根目录始终是水平线,因此它将始终具有左右子目录。”
—
加尔文的爱好
tree
始终必须是left
和right
而不是up
和down
吗?