Canadian Computing Competition: 2004 Stage 1, Junior #5
A fractal is a geometric shape where the pattern of the whole shape is self-replicating at each subsection of the shape. A simple "block fractal" is shown below. At each stage of the fractal growth, every straight line in the fractal is divided into three equal parts. The first and last sections stay straight; the middle section contains a square "bump" which has the same height as the width of the middle section. (You will want to consider the four orientations of a line segment within the fractal. Depending upon which line segment is currently being generated, the bump may protrude up, down, left, or right.)
Suppose this fractal is drawn on a Cartesian plane, where is at the bottom left corner. Assume that in the example above, the bottom left point of the fractal is at and the bottom right point of the fractal is at . For example the top of the Level 3 fractal is a line from to .
Write a program that will keep track of the integer coordinate points of the lines in a similar "block fractal" with its bottom left corner at . The program will accept three integers as input: the level of the fractal, the width of the fractal, and an x-coordinate. You may assume that the width of the fractal will be some power of three, and that it will be large enough so that every corner of the fractal will fall on an integer intersection in the Cartesian plane. The width will never be more than . The x-coordinate, , will be in the range – width (inclusive). Your program should output the y-coordinate value(s), , where lines of the fractal intersect the point .
You may draw a graphic representation of the fractal for debugging (and interest). However, test cases may ask you to define fractals that are too large to fit on a single screen.
Sample Input 1
3 27 5
Sample Output 1
4 5 6
Sample Input 2
3 27 18
Sample Output 2
1 2 3 4 7 8 9 10
Sample Input 3
2 27 19
Sample Output 3
1 4 7
Sample Input 4
4 81 38
Sample Output 4
37 38 39
Comments
Note that if is the level, and is the width, then .
Should output be sorted in ascending order?
Yes.
Judging from what level 3 looks like, wouldn't level four have blocks small than 1 part of grid? How would level four look like?