Иногда, когда мне очень скучно ( очень скучно), мне нравится рисовать отрезок линии и рисовать на нем точки.
Сначала я рисую отрезок линии определенного размера, который равен 2 ^ N для некоторого значения N. Линия будет представлена серией .
символов.
................
Затем я рисую точку на левом конце. Точки будут представлены X
символами.
X...............
Затем я следую шаблону. Начиная с самой последней нанесенной точки (которую я назову A), я перехожу к следующей нанесенной точке (B) на линии (при необходимости оборачиваясь). Затем я перехожу к следующей нанесенной точке на линии (С). Затем я строю новую точку на полпути между этой третьей точкой (C) и следующей уже нанесенной точкой (D).
Всякий раз, когда вы оборачиваете линию, «середина» определяется в виде обтекания. Вновь построенная точка всегда находится справа от C.
Допустим, следующая строка была моей текущей строкой. Вот как я бы наметил следующие две точки. Для этого примера я обозначу каждый важный пункт буквой.
X...A...X.X...X.
^
X...A...B.X...X.
^
X...A...B.C...X.
^
X...A...B.C...D.
^
X...X...X.X.A.X.
^
X...X...X.X.A.B.
^
C...X...X.X.A.B.
^
C...D...X.X.A.B.
^
X.A.X...X.X.X.X.
^
Возвращаясь к предыдущему примеру, следующая точка будет построена в середине линии.
X.......X.......
Это, возможно, немного особый случай: переход к следующему пункту просто оставляет вас, где вы начали. Единственной полезной точкой на полпути является «циклическая» точка на полпути (точка на полпути на линии), в отличие от построения точки сверху самой себя.
Ниже приведен ряд точек, которые я нанесу на линию отсюда до конца.
X.......X.......
X.......X...X...
X.......X.X.X...
X...X...X.X.X...
X...X...X.XXX...
X.X.X...X.XXX...
X.X.X...XXXXX...
Больше нет места для построения следующей точки, так как она должна быть втиснута между двумя соседними точками, поэтому я достиг максимальной глубины для данного значения N = 4. Последняя строка в приведенном выше списке - «завершена» «.
Соревнование
Цель состоит в том, чтобы написать самую короткую программу / именованную функцию, которая будет печатать / возвращать завершенную строку для заданного значения N. Выше показано N = 4.
вход
На входе будет одно неотрицательное целое число N. Длина сгенерированной строки будет тогда 2 ^ N.
Выход
Выход будет завершена линией длиной 2 ^ N, образованная .
и X
символы. Завершающий перевод строки не имеет значения.
Пример ввода / вывода
0
X
1
XX
2
X.XX
3
X.X.XXX.
4
X.X.X...XXXXX...
5
X.X.X...X...X...X.XXX.XXX.......
(c%b+b)%b
? Вы ожидаетеc
быть отрицательным?