Іноді, коли мені дуже нудно ( дуже нудно), мені подобається малювати відрізок лінії і малювати на ній точки.
По-перше, я малюю відрізок рядка певного розміру, який становить 2 ^ N для деякого значення N. Рядок буде представлений рядом .символів.
................
Потім я накреслюю крапку в лівому кінці. Очки будуть представлені Xсимволами.
X...............
Потім я слідую за схемою. Починаючи з останньої наміченої точки (яку я зателефоную A), я переходжу до наступної накресленої точки (B) на лінії (обертаючись по мірі необхідності). Потім я переходжу до наступної наміченої точки на лінії (С). Потім я будую нову точку на півдорозі між цією третьою точкою (С) та наступною вже наміченою точкою (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негативу?