Цель этой задачи состоит в том, чтобы графически изобразить прогулку на плоскости, где направление каждого шага определяется простотой и четностью его двоичного расширения. В частности,
- Начальное направление зафиксировано, скажем, на север.
- Все шаги имеют одинаковую длину .
- Направление этапа может быть Север, Запад, Юг и Восток, и определяется следующим образом :
- Если не простое, направление не меняется.
- Если простое и двоичное разложение имеет четное число единиц, поверните направо.
- Если простое и двоичное разложение имеет нечетное число единиц, поверните налево.
В качестве рабочего примера предположим, что начальное направление - север. Первые шаги:
- не простое число. Таким образом, мы движемся на один шаг в текущем направлении, которое севернее.
- простое, и его двоичное разложение
10
, имеет и нечетное число единиц. Итак, мы поворачиваем налево и теперь лицом к западу. Мы продвигаемся на один шаг в этом направлении. - простое, а его двоичное разложение
11
, имеет и четное число единиц. Таким образом, мы поворачиваем направо, и теперь лицом к северу. Мы продвигаемся на один шаг в этом направлении. - не простое число. Таким образом, мы движемся на один шаг в текущем направлении, которое севернее.
Соревнование
Входные данные : целое положительное число .
Вывод : график обхода шага, как определено выше.
Дополнительные правила
- Начальное направление может быть свободно выбрано (не обязательно Север), но должна быть одинаковой для всех .
- Поворота правило может быть противоположное тому , что было описано выше, то есть, повернуть направо на нечетность и влево для четных; но он должен быть одинаковым для всех .
- Выходными данными должно быть графическое изображение прогулки. Например:
- Прогулка может быть нарисована отрезками.
- Посещенные точки могут быть показаны с помощью маркера, такого как точка; с или без соединительных отрезков.
- Может быть предоставлено двухцветное растровое изображение, один цвет которого соответствует посещенным точкам, а другой - непосещенным.
- Шкалы горизонтальной и вертикальной осей не обязательно должны быть одинаковыми. Также метки оси и подобные элементы являются необязательными. Пока прогулка хорошо видна, сюжет действителен.
- Обратите внимание, что некоторые пункты посещаются более одного раза. Сюжет не чувствителен к этому. Например, если на графике показаны линейные сегменты, каждый сегмент блока отображается одинаково, независимо от того, сколько раз он был пройден.
- Код должен работать для любых
N
неограниченных ресурсов. Это допустимо, если на практике это приводит к большимN
сбоям из-за ограничений по времени, памяти или типу данных. - Ввод и вывод являются гибкими, как обычно. В частности, может быть использовано любое стандартное средство для вывода изображений.
- Самый короткий код в байтах побеждает.
Контрольные примеры
Следующие графики используют Север в качестве начального направления; даже паритет поворачивает направо; и прогулка изображена с отрезками.
N = 7
:
N = 3000
:
N = 20000
:
N = 159000
:
N = 1200000
:
N = 11000000
:
[graphical-output]
разрешена? Есть ли какая-либо причина, в частности, запретить вывод ASCII, например мой удаленный ответ на Charcoal?