W serialu telewizyjnym z lat 80. Knight Rider pojawił się inteligentny, samoświadomy samochód o nazwie KITT. Jednym z charakterystycznych aspektów samochodu był zamontowany z przodu pasek skanera, który pozwalał KITT „widzieć” (i wyglądał podejrzanie znajomo dla fanów innego, wcześniejszego serialu ).
Skaner miał osiem świateł, jak widać na tym zdjęciu:
Światła „przesunęły się”, jak pokazano na tym animowanym obrazie .
Twoim zadaniem, jak już zgadłeś, jest odtworzenie paska skanera z ruchomymi światłami w sztuce ASCII.
Wyzwanie
Biorąc pod uwagę liczbę całkowitą t
, wypisuje stan paska skanera w tym momencie, zdefiniowany następująco:
- Skaner składa się z ośmiu świateł.
- W każdej chwili jedno ze świateł jest aktywne i jest pokazane jako
#
. Światła, które są aktywne w czasiet-1
, at-2
obecnie przyciemnione i są pokazane jako+
; chyba że pokrywają się z bieżącą aktywną. Reszta świateł jest wyłączona i są pokazane jako-
. - Aktywne światło przesuwa się od lewej do prawej, a następnie od prawej do lewej.
Dokładne dane wyjściowe dla każdego t
są wyszczególnione poniżej.
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
Aby ujemne wartości t
cyklu zostały po prostu rozszerzone:
-1 --> -#++---- % Same as 13
-2 --> --#++--- % Same as 12
Dodatkowe zasady
Możesz napisać program lub funkcję.
Dane wyjściowe mogą zawierać końcowe białe znaki i wiodący nowy wiersz.
Najkrótszy kod w bajtach wygrywa.
Odpowiedzi:
Galaretka ,
2822 bajtów-6 bajtów dzięki pomocy @Dennis! (najpierw wstaw, a następnie połącz)
TryItOnline
Lub wykonaj cztery oscylacje z dodatkowym jajkiem wielkanocnym !!
W jaki sposób?
źródło
JavaScript (ES6),
6567 bajtówEDYCJA - Naprawiono dla wartości ujemnych. Teraz wsparcie
N >= -8,000,000,000
, które powinno zapewnić dość dobry wydłużony czas pracy w trybie AUTO CRUISE. :-)Wersja animowana
Pokaż fragment kodu
źródło
n>=7
zamiastn/7&1
n
było[0 ... 13]
, ale tak nie jest.JavaScript (ES6),
9087 bajtów„- + ##” jest indeksowane przez maskę bitów, gdzie bit 1 oznacza światło aktywne, a bit 0 oznacza światło przyciemnione. Aktywność / przyciemnienie jest teraz obliczane przez dodanie i odjęcie bieżącej pozycji od pożądanej pozycji i sprawdzenie, czy którykolwiek wynik jest podzielny przez 14.
źródło
Python, 53 bajty
Tworzy ciąg
-----++#------
, przyjmuje okno o długości 8 w zależności od wejściowego modulo 7, odwraca dla wejściowego modulo 14, które leżą między 1 a 7.źródło
> <> , 51 + 3 = 54 bajtów
Dane wejściowe są oczekiwane na stosie na początku programu, więc +3 bajty dla
-v
flagi.Wypróbuj online!
źródło
MATL,
343027 bajtów7 bajtów zapisanych dzięki @Luis
Wypróbuj online!
Kolejny przykład z pierwszymi 25 krokami
Wyjaśnienie
źródło
Pyth,
3328 bajtówZaoszczędzono 5 bajtów, obliczając wszystkie światła w ten sam sposób.
Zaczyna się z wyłączonymi światłami i włącza je pojedynczo.
Wypróbuj online!
źródło
JavaScript, 204 bajty
Test
źródło
JavaScript (ES6), 72
Mniej golfa
Test
źródło
Perl, 65 bajtów
Obejmuje +1 dla
-n
Uruchom z numerem na STDIN:
kitt.pl
:Niezbyt konkurencyjny, ale zasługuje na stanowisko za dziwną metodę
źródło
Perl,
5655 bajtówObejmuje +3 za
-p
Uruchom z numerem na STDIN:
kitt.pl
:Umieść to w pliku bez ostatniej nowej linii (dodaj ostatnią
;
do programu, jeśli nie chcesz się tym przejmować). Niestety użycie literału^F
nie działaTen program zawiera 2 znaki komentarza (zignoruj
#!
wiersz). Jeden z nich naprawdę jest komentarzem i faktycznie zyskuje bajt ....Implementuje rzeczywisty algorytm poświaty
źródło
Płótno , 23 bajty
Wypróbuj tutaj!
źródło