26
4
Introduction
The Dragon's Curve is a fractal curve that notably appears on section title pages of the Jurassic Park novel.
It can very simply be described as a process of folding a paper strip, as explained in the Wikipedia article about this curve.
The first few iterations of the generation of this curve look like this (credits to Wikipedia for the image):
The challenge
Write a program or function that, given an integer n as input, outputs the n-th iteration of the dragon curve as ASCII art using only the symbols _
and |
- You have to output the figure using only
|
,_
and spaces. You may not output the curve as a plot or anything else. - You can take the input as a program argument, in STDIN or as a function parameter.
- Inputs will always be an integer >= 0. Your program should work for reasonable values of inputs, 12 being the highest in the test cases offered.
The first iterations shall look like this
Iteration 0 is
_
Iteration 1 is
_|
Iteration 2 is
|_ _|
One trailing line at the end is ok. No trailing spaces allowed besides filling the line up to the rightmost character in the curve
No standard loopholes abuse as usual
Test Cases
- Input
0
Output
_
- Input
3
Output
_
|_| |_
_|
- Input
5
Output
_ _
|_|_| |_
_ _| _|
|_|_|_
|_|_|
|_
_|
|_|
- Input
10
Output
_ _
_|_| _|_|
|_|_ _|_|_ _
_|_|_| |_| |_|_|
_ |_|_|_ |_
_|_| _| |_| _|
|_|_ _|_ |_|
_|_|_|_|_|_
|_| |_|_|_|_|_
_|_|_| |_|
|_| |_
_|_ _ _ _ _ _ _
_ |_|_|_|_|_|_|_ |_|_|_|_ |_|_|_|_
_|_| _|_|_|_|_| |_| _ _|_| |_| _ _|_| |_|
|_|_ _|_|_|_|_|_ |_|_|_|_ |_|_|_|_
_|_|_|_|_|_|_|_|_|_ _ _|_|_|_|_ _ _|_|_|_|_ _ _
|_| |_|_|_| |_|_|_| |_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_
_|_| _|_| _|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| |_|
|_| |_| |_| |_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_
_|_|_|_|_|_|_|_|_|_|_| |_| |_|_|_|_
_ |_|_|_|_|_|_|_|_|_|_|_ |_|_|_|_
_|_| _|_|_|_|_|_|_|_|_| |_| _ _|_| |_|
|_|_ _|_|_|_|_|_|_|_|_|_ |_|_|_|_
_|_|_|_|_|_|_|_|_|_|_|_|_|_ |_| |_|
|_| |_|_|_| |_|_|_| |_|_|_|_|_
_|_| _|_| _|_|_| |_|
|_| |_| |_| |_
_|_ _ _
_ |_|_|_|_|_|_|_
_|_| _|_|_|_|_| |_|
|_|_ _|_|_|_|_|_
_|_|_|_|_|_|_|_|_|_ _ _
|_| |_|_|_|_|_|_|_|_|_|_|_|_|_
_|_|_|_|_|_|_|_|_|_|_| |_|
|_| |_|_|_|_|_|_|_|_|_
_ _ _|_|_| |_| |_|_|_|_
|_|_| |_ _ |_|_|_ |_|_|_|_
_ _| _| _|_| _| |_| _ _|_| |_|
|_|_|_ |_|_ _|_ |_|_|_|_
|_|_| _|_|_|_|_|_ |_| |_|
|_ _ _ |_|_|_|_|_|_|_
_ _|_|_| _|_| _|_|_|_|_| |_|
|_|_|_|_|_ _|_|_ _|_|_|_|_|_
|_| |_| |_|_|_|_|_| |_| |_|_|_|_
|_|_|_|_ |_|_|_|_
_ _|_| |_| _ _|_| |_|
|_|_|_|_ |_|_|_|_
|_| |_| |_| |_|
- Input
12
Output
_ _ _ _ _ _ _ _
|_|_|_|_ |_|_|_|_ |_|_|_|_ |_|_|_|_
_ _|_| |_| _ _|_| |_| _ _|_| |_| _ _|_| |_|
|_|_|_|_ |_|_|_|_ |_|_|_|_ |_|_|_|_
|_|_|_|_ _ _|_|_|_|_ _ _ |_|_|_|_ _ _|_|_|_|_ _ _
|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_ |_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_
_ _|_|_|_|_|_|_|_|_|_|_|_|_|_| |_| _ _|_|_|_|_|_|_|_|_|_|_|_|_|_| |_|
|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_ |_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_
_ _ |_|_|_|_|_|_|_|_|_| |_| |_|_|_|_ _ _ |_|_|_|_|_|_|_|_|_| |_| |_|_|_|_
|_|_|_|_ |_|_|_|_|_|_|_|_ |_|_|_|_ |_|_|_|_ |_|_|_|_|_|_|_|_ |_|_|_|_
_ _|_| |_| _ _|_|_|_|_|_| |_| _ _|_| |_| _ _|_| |_| _ _|_|_|_|_|_| |_| _ _|_| |_|
|_|_|_|_ |_|_|_|_|_|_|_|_ |_|_|_|_ |_|_|_|_ |_|_|_|_|_|_|_|_ |_|_|_|_
|_|_|_|_ _ _|_|_|_|_|_|_|_|_ |_| |_| |_|_|_|_ _ _|_|_|_|_|_|_|_|_ |_| |_|
|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_ |_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_
_ _|_|_|_|_|_|_|_|_|_|_|_|_|_| |_| _ _|_|_|_|_|_|_|_|_|_|_|_|_|_| |_|
|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_ |_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_
|_| |_| |_|_|_|_|_|_|_|_|_|_|_|_ _ _ _ _ |_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_ _ _ _ _ _ _
|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_ |_|_|_|_ |_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_ |_|_|_|_ |_|_|_|_
_ _|_|_|_|_|_|_|_|_|_|_|_|_|_| |_| _ _|_| |_| _ _|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| |_| _ _|_| |_| _ _|_| |_|
|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_ |_|_|_|_ |_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_ |_|_|_|_ |_|_|_|_
|_| |_| |_|_|_|_|_|_|_|_|_|_|_|_ _ _|_|_|_|_ _ _|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_ _ _|_|_|_|_ _ _|_|_|_|_ _ _
|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| |_|_|_| |_|_|_|_|_|_|_|_|_|_|_| |_|_|_| |_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_
_ _|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| _|_| _|_|_|_|_|_|_|_|_|_| _|_| _|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| |_|
|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_ |_| |_| |_|_|_|_|_|_|_|_ |_| |_| |_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_
_ _ |_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| _|_|_|_|_|_|_|_| _|_|_|_|_|_|_|_|_|_|_| |_| |_|_|_|_
|_|_|_|_ |_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| |_|_ _ |_|_|_|_|_| |_|_ _ |_|_|_|_|_|_|_|_|_|_|_ |_|_|_|_
_ _|_| |_| _ _|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| _|_| _|_| _|_|_|_| _|_| _|_| _|_|_|_|_|_|_|_|_| |_| _ _|_| |_|
|_|_|_|_ |_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_ |_| |_|_ _|_|_|_|_ |_| |_|_ _|_|_|_|_|_|_|_|_|_ |_|_|_|_
|_|_|_|_ _ _|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| _|_|_|_|_|_|_|_| _|_|_|_|_|_|_|_|_|_|_|_|_|_ |_| |_|
|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_ _ |_| |_|_|_| |_|_ |_| |_|_|_| |_|_|_| |_|_|_|_|_
_ _|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| _|_| _|_| _|_| _|_| _|_|_| |_|
|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_ _ |_| |_| |_| |_| |_| |_
|_| |_| |_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| _|_ _ _
|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| |_|_ _ |_|_|_|_|_|_|_
_ _|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| _|_| _|_| _|_|_|_|_| |_|
|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_ |_| |_|_ _|_|_|_|_|_
|_| |_| |_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| _|_|_|_|_|_|_|_|_|_ _ _
_ _ |_|_|_|_|_|_| |_|_|_| |_|_|_|_|_|_ _ |_| |_|_|_|_|_|_|_|_|_|_|_|_|_
_|_| _|_| _ _|_|_|_|_| _|_| _|_|_|_|_|_|_|_| _|_|_|_|_|_|_|_|_|_|_| |_|
|_|_ _|_|_ _ |_|_|_|_|_|_|_ |_| |_| |_|_|_|_|_|_ _ |_| |_|_|_|_|_|_|_|_|_
_|_|_| |_| |_|_| _ _ |_|_|_|_|_|_| _|_|_|_|_|_|_|_| _ _ _|_|_| |_| |_|_|_|_
_ |_|_|_ |_ |_|_|_|_ |_|_| |_|_ _ |_|_|_|_|_| |_|_ |_|_| |_ _ |_|_|_ |_|_|_|_
_|_| _| |_| _| _ _|_| |_| _ _| _|_| _|_| _|_|_|_| _|_| _ _| _| _|_| _| |_| _ _|_| |_|
|_|_ _|_ |_| |_|_|_|_ |_|_|_ |_| |_|_ _|_|_|_|_ |_| |_|_|_ |_|_ _|_ |_|_|_|_
_|_|_|_|_|_ |_|_|_|_ _ _|_|_| _|_|_|_|_|_|_|_| |_|_| _|_|_|_|_|_ |_| |_|
|_| |_|_|_|_|_ |_|_|_|_|_|_|_|_|_ _ |_| |_|_|_| |_|_ |_ _ _ |_|_|_|_|_|_|_
_|_|_| |_| _ _|_|_|_|_|_|_|_|_|_|_| _|_| _|_| _ _|_|_| _|_| _|_|_|_|_| |_|
|_| |_ |_|_|_|_|_|_|_|_|_|_|_|_|_ _ |_| |_| |_|_|_|_|_ _|_|_ _|_|_|_|_|_
_|_ _ _ _ _ |_|_|_|_|_|_|_|_|_|_|_|_|_|_| |_| |_| |_|_|_|_|_| |_| |_|_|_|_
_ |_|_|_|_|_|_|_ |_|_|_|_ |_|_|_|_|_|_|_|_|_|_| |_|_ |_|_|_|_ |_|_|_|_
_|_| _|_|_|_|_| |_| _ _|_| |_| _ _|_|_|_|_|_|_|_|_| _|_| _ _|_| |_| _ _|_| |_|
|_|_ _|_|_|_|_|_ |_|_|_|_ |_|_|_|_|_|_|_|_|_|_|_ |_| |_|_|_|_ |_|_|_|_
_|_|_|_|_|_|_|_|_|_ _ _|_|_|_|_ _ _|_|_|_|_|_|_|_|_|_|_| |_| |_| |_| |_|
|_| |_|_|_| |_|_|_| |_|_|_|_|_|_|_|_|_|_|_| |_|_|_| |_|_|_|_|_|_ _
_|_| _|_| _|_|_|_|_|_|_|_|_|_| _|_| _|_|_|_|_|_|_|_|
|_| |_| |_| |_|_|_|_|_|_|_|_ |_| |_| |_|_|_|_|_|_ _
_|_|_|_|_|_|_|_| _|_|_|_|_|_|_|_|
_ |_|_|_|_|_| |_|_ _ |_|_|_|_|_| |_|_
_|_| _|_|_|_| _|_| _|_| _|_|_|_| _|_|
|_|_ _|_|_|_|_ |_| |_|_ _|_|_|_|_ |_|
_|_|_|_|_|_|_|_| _|_|_|_|_|_|_|_|
|_| |_|_|_| |_|_ |_| |_|_|_| |_|_
_|_| _|_| _|_| _|_|
|_| |_| |_| |_|
Scoring
This is code-golf, so the shortest program in bytes wins.
I'm sure someone will complain about the vagueness of a 'huge amount of spaces', so how about an asymptotic bound? – feersum – 2015-07-12T09:52:35.940
1@feersum Well I disallowed trailing spaces altogether, so nobody will complain now! – Fatalize – 2015-07-12T09:57:52.010
2I'm complaining... now you're being a whitespace Nazi! – feersum – 2015-07-12T10:21:21.343
@feersum and you are a horizontal ellipsis Nazi! – Optimizer – 2015-07-12T12:35:48.460
This is the best fractal question ever, I hope I have time to participate! Is it ok to rotate the curve through 90,180,270 degrees or does it have to be displayed per the examples? – Level River St – 2015-07-12T13:00:33.690
@steveverrill I based the expected orientation off of the Wikipedia gif. I wouldn't mind seeing rotated curves but that would make fair scoring difficult, so sorry but it has to be outputted exactly like the examples – Fatalize – 2015-07-12T13:04:28.033
Does it need to be ASCII? I made an [SVG] answer only to find that it says it needs to be ASCII :/ – Downgoat – 2015-07-12T15:43:10.810
@vihan1086 Yes it needs to be ASCII. The whole idea for this challenge, is that this fractal is printable with only 2 ASCII characters – Fatalize – 2015-07-12T15:45:32.560