A série de TV dos anos 80 Knight Rider apresentava um carro inteligente e autoconsciente chamado KITT. Um aspecto distintivo do carro era uma barra de scanner montada na frente que permitia ao KITT "ver" (e que parecia suspeitamente familiar aos fãs de outra série de TV anterior ).
O scanner tinha oito luzes, como visto na figura:
As luzes "se moveram", como mostrado nesta imagem animada .
Sua tarefa, como você já adivinhou, é recriar a barra do scanner com as luzes móveis da arte ASCII.
O desafio
Dado um número inteiro t
, imprima o estado da barra do scanner naquele instante, definido da seguinte maneira:
- O scanner consiste em oito luzes.
- A qualquer momento, uma das luzes está ativa e é mostrada como
#
. As luzes que estavam ativas às vezest-1
et-2
agora estão esmaecidas e são mostradas como+
; a menos que coincidam com o ativo atual. O restante das luzes estão apagadas e são mostradas como-
. - A luz ativa se move da esquerda para a direita e depois da direita para a esquerda.
A saída exata para cada um t
é detalhada abaixo.
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
Para valores negativos do t
ciclo é simplesmente estendido:
-1 --> -#++---- % Same as 13
-2 --> --#++--- % Same as 12
Regras adicionais
Você pode escrever um programa ou função.
A saída pode conter espaços em branco à direita e uma nova linha principal.
O menor código em bytes vence.
Respostas:
Geléia ,
2822 bytes-6 bytes graças à ajuda de @Dennis! (upend primeiro e concatenar)
TryItOnline
Ou faça quatro oscilações com um ovo de páscoa bônus !!
Quão?
fonte
JavaScript (ES6),
6567 bytesEDIT - Fixado para valores negativos. Agora suportando
N >= -8,000,000,000
, o que deve fornecer um tempo de operação estendido bastante bom no modo AUTO CRUISE. :-)Versão animada
Mostrar snippet de código
fonte
n>=7
vez den/7&1
n
estivesse dentro[0 ... 13]
, mas não é.JavaScript (ES6),
9087 bytes"- + ##" é indexado por uma máscara de bits, onde o bit 1 significa uma luz ativa e o bit 0 significa uma luz esmaecida. O ativo / escurecimento agora é calculado adicionando e subtraindo a posição atual da posição desejada e verificando se um dos resultados é divisível por 14.
fonte
Python, 53 bytes
Cria a string
-----++#------
, pega uma janela de comprimento 8, dependendo do módulo de entrada 7, reverte para as entradas do módulo 14 que se situam entre 1 e 7.fonte
> <> , 51 + 3 = 54 bytes
A entrada é esperada na pilha no início do programa, portanto, +3 bytes para o
-v
sinalizador.Experimente online!
fonte
MATL,
343027 bytes7 bytes salvos graças a @Luis
Experimente Online!
Outro exemplo com as primeiras 25 etapas
Explicação
fonte
Pyth,
3328 bytesEconomizou 5 bytes calculando todas as luzes da mesma maneira.
Começa com as luzes apagadas e as acende uma de cada vez.
Experimente online!
fonte
JavaScript, 204 bytes
Teste
fonte
JavaScript (ES6), 72
Menos golfe
Teste
fonte
Perl, 65 bytes
Inclui +1 para
-n
Execute com o número em STDIN:
kitt.pl
:Não é muito competitivo, mas merece uma publicação pelo método estranho
fonte
Perl,
5655 bytesInclui +3 para
-p
Execute com o número em STDIN:
kitt.pl
:Coloque isso em um arquivo sem a nova linha final (adicione uma final
;
ao programa se você não quiser se preocupar com isso). Infelizmente, usar um literal^F
não funcionaEste programa contém 2 caracteres de comentário (ignore a
#!
linha). Um deles é realmente um comentário e ganha um byte ...Implementa o algoritmo real de pós-brilho
fonte
Tela , 23 bytes
Experimente aqui!
fonte