Спираль - 2
(Время: 1 сек. Память: 16 Мб Сложность: 59%)
При обучении школьников младших классов программированию часто используется язык «Лого», позволяющий рисовать на экране картинки хвостом виртуальной черепашки.
Рассмотрим упрощенную версию этого языка, в которой разрешается подавать черепашке следующие команды: переместиться вперед на некоторое количество сантиметров, рисуя за собой линию, повернуть налево на 90 градусов и повернуть направо на 90 градусов.
Вам предлагается написать на этом языке программу, изображающую контур спирали.
Спираль - это множество клеток, которое строится по следующим правилам. Рассмотрим прямоугольник, состоящий из m×n единичных клеток. Закрасим некоторые из его клеток в следующей последовательности.
Начнем красить левый столбец снизу вверх. Когда продвижение невозможно, то есть либо следующая клетка лежит вне прямоугольника, либо соприкасается с закрашенной ранее, направление движения поворачивается по часовой стрелке на 90 градусов. Если и после этого поворота дальнейшее движение невозможно, процесс заканчивается. Множество закрашенных таким образом клеток и образует спираль.
Входные данные
Входной файл INPUT.TXT содержит два целых числа m и n (1 ≤ m, n ≤ 20 000).
Выходные данные
В выходной файл OUTPUT.TXT выведите последовательность команд, в результате выполнения которой будет нарисован контур ломаной. Напомним формат, в котором следует выводить результат. Первая строка должна содержать k - количество команд. Последующие k строк задают либо длину отрезка d, который надо провести, в формате f d, либо направление поворота - l для поворота налево и r для поворота направо. Команды рисования отрезка и поворота должны чередоваться, начинаясь и заканчиваясь командой рисования отрезка. Считайте, что начало первого отрезка совпадает с левым нижним углом прямоугольника. При этом контур должен быть выведен в направлении обхода по часовой стрелке, и никакая его часть ненулевой длины не должна быть нарисована дважды.
Пример
№ | INPUT.TXT | OUTPUT.TXT |
1 | 6 7 | 31
f 6
r
f 7
r
f 6
r
f 5
r
f 4
r
f 3
r
f 2
r
f 1
r
f 1
l
f 1
l
f 2
l
f 3
l
f 4
l
f 5
l
f 5
r
f 1 |
Для отправки решения задачи необходимо зарегистрироваться и авторизоваться!
|