В сериале 80-х годов Knight Rider был представлен интеллектуальный автомобиль с самосознанием под названием KITT. Одним из отличительных аспектов автомобиля была передняя панель сканера, которая позволяла KITT «видеть» (и это выглядело подозрительно знакомым поклонникам другого, более раннего сериала ).
У сканера было восемь источников света, как видно на этой картинке:
Огни "переместились", как показано на этом анимированном изображении .
Ваша задача, как вы уже догадались, это воссоздать панель сканера с движущимися огнями в искусстве ASCII.
Соревнование
Получив целое число t
, выведите состояние панели сканера в этот момент, определяемое следующим образом:
- Сканер состоит из восьми источников света.
- В любой момент один из источников света активен и отображается как
#
. Огни, которые были активны время от времениt-1
иt-2
теперь потускнели , и показаны как+
; если они не совпадают с текущим активным. Остальные огни выключены и отображаются как-
. - Активный свет перемещается слева направо, затем справа налево.
Точный вывод для каждого t
подробно описан ниже.
0 --> #++----- % The leftmost light is active, and it just came from the right.
% The two neighbouring lights are dimmed
1 --> +#------ % The active light has bounced to the right, and it is covering
% one of the two lights that should be dimmed. So there is only
% one dimmed light
2 --> ++#----- % The active light has moved one more step to the right, and the
% two trailing dimmed lights are visible
3 --> -++#----
7 --> -----++#
8 --> ------#+ % The active light has bounced to the left
9 --> -----#++
10 --> ----#++-
13 --> -#++----
14 --> #++----- % Same as 0
15 --> +#------ % Same as 1
Для отрицательных значений t
цикл просто расширяется:
-1 --> -#++---- % Same as 13
-2 --> --#++--- % Same as 12
Дополнительные правила
Вы можете написать программу или функцию.
Выходные данные могут содержать завершающий пробел и начальный перевод строки.
Самый короткий код в байтах побеждает.
Ответы:
Желе ,
2822 байта-6 байт благодаря помощи @Dennis! (перевернуть сначала, затем объединить)
TryItOnline
Или совершите четыре колебания с бонусным пасхальным яйцом !!
Как?
источник
JavaScript (ES6),
6567 байтРЕДАКТИРОВАТЬ - Исправлено для отрицательных значений. Теперь поддержка
N >= -8,000,000,000
, которая должна обеспечить довольно неплохое продление времени работы в режиме AUTO CRUISE. :-)Анимированная версия
Показать фрагмент кода
источник
n>=7
вместоn/7&1
n
было[0 ... 13]
, но это не так.JavaScript (ES6),
9087 байт«- + ##» индексируется битовой маской, где бит 1 обозначает активный индикатор, а бит 0 обозначает тусклый индикатор. Активность / затемнение теперь рассчитывается путем сложения и вычитания текущей позиции из требуемой позиции и проверки, делится ли какой-либо результат на 14.
источник
Python, 53 байта
Создает строку
-----++#------
, занимает окно длиной 8 в зависимости от входа по модулю 7, инвертирует для входов по модулю 14, которые лежат между 1 и 7.источник
> <> , 51 + 3 = 54 байта
Ожидается ввод в стек при запуске программы, поэтому +3 байта для
-v
флага.Попробуйте онлайн!
источник
MATL,
343027 байтов7 байтов сохранено благодаря @Luis
Попробуйте онлайн!
Еще один пример с первыми 25 шагами
объяснение
источник
Pyth,
3328 байтСохранено 5 байтов путем одинакового расчета всех источников света.
Начинается с выключенным светом и включает их по одному.
Попробуйте онлайн!
источник
JavaScript, 204 байта
Тестовое задание
источник
JavaScript (ES6), 72
Меньше гольфа
Тестовое задание
источник
Perl, 65 байт
Включает +1 для
-n
Запустите с номером на STDIN:
kitt.pl
:Не очень конкурентоспособный, но заслуживает пост за странный метод
источник
Perl
5655 байтВключает +3 для
-p
Запустите с номером на STDIN:
kitt.pl
:Поместите это в файл без заключительного перевода строки (добавьте окончательный вариант
;
в программу, если вы не хотите беспокоиться об этом). К сожалению, использование литерала^F
не работаетЭта программа содержит 2 символа комментария (игнорируйте
#!
строку). Один из них действительно является комментарием и фактически получает байт ....Реализует фактический алгоритм послесвечения
источник
Холст , 23 байта
Попробуй это здесь!
источник