Мета цього виклику - графічно зобразити прогулянку по площині, де напрямок кожного кроку визначається первинністю та паритетом її двійкового розширення. Зокрема,
- Початковий напрямок фіксований, скажімо, на північ.
- Усі щаблі мають однакову довжину .
- Напрямок етапу може бути Північ, Захід, Південь і Схід, і визначається наступним чином :
- Якщо не є простим, напрямок не змінюється.
- Якщо є простим, а двійкове розширення має парне число одиниць, поверніть праворуч.
- Якщо є простим, а двійкове розширення має непарну кількість одиниць, поверніть ліворуч.
Як відпрацьований приклад , припустимо, що початковий напрямок - північ. Перші кроки:
- не є простим. Тож ми рухаємося на один крок у поточному напрямку, а саме на північ.
- є простим, а його двійкове розширення
10
має, непарне число одиниць. Тож ми повертаємо ліворуч і зараз звернені на Захід. Ми рухаємось одним кроком у цьому напрямку. - є простим, а його двійкове розширення
11
, має і парне число одиниць. Тож ми повертаємо праворуч і зараз звернені на Північ. Ми рухаємось одним кроком у цьому напрямку. - не є простим. Тож ми рухаємося на один крок у поточному напрямку, а саме на північ.
Змагання
Вхідні дані : ціле позитивне число .
Вихід : графік крокової прогулянки, як визначено вище.
Додаткові правила
- Початковий напрямок може бути вільно вибрано (не обов'язково Північ), але повинна бути однаковою для всіх .
- Повороту правило може бути протилежне тому , що було описано вище, тобто, повернути праворуч на непарність і вліво для парних; але він повинен бути однаковим для всіх .
- На виході має бути графічне зображення ходи. Наприклад:
- Прогулянку можна намалювати відрізками ліній.
- Відвідані точки можуть бути показані маркером, наприклад крапкою; з відрізками сполучних ліній або без них.
- Можна надати двоколірне растрове зображення з одним кольором, що відповідає відвідуваним точкам, а іншим для не відвідуваних.
- Масштаби горизонтальної та вертикальної осей не повинні бути однаковими. Крім того, мітки осі та подібні елементи необов’язкові. Поки прогулянку добре видно, сюжет дійсний.
- Зауважте, що деякі пункти відвідуються не раз. Сюжет до цього не чутливий. Наприклад, якщо на графіку показані сегменти рядків, кожен сегмент одиниці відображається однаково, незалежно від того, скільки разів він був пройдений.
- Код повинен працювати для будь-яких
N
необмежених ресурсів. Це прийнятно, якщо на практиці це не вдаєтьсяN
зважаючи на обмеження часу, пам'яті чи типу даних. - Введення та вихід гнучкі, як завжди. Зокрема, можна використовувати будь-який із стандартних засобів для виведення зображень.
- Виграє найкоротший код у байтах.
Тестові справи
Наступні сюжети використовують північ як вихідний напрямок; навіть паритет повертає праворуч; і хода зображена лінійними відрізками.
N = 7
:
N = 3000
:
N = 20000
:
N = 159000
:
N = 1200000
:
N = 11000000
:
[graphical-output]
дозволена лише причина ? Будь-яка причина, зокрема, заборонити вихід ASCII, як-от моя відповідь на тепер видалену деревне вугілля?