La serie de televisión de los 80 Knight Rider presentó un auto inteligente y consciente de sí mismo llamado KITT. Un aspecto distintivo del automóvil era una barra de escáner frontal que permitía a KITT "ver" (y que parecía sospechosamente familiar para los fanáticos de otra serie de televisión anterior ).
El escáner tenía ocho luces como se ve en esta imagen:
Las luces "se movieron" como se muestra en esta imagen animada .
Su tarea, como ya lo ha adivinado, es recrear la barra del escáner con las luces en movimiento en el arte ASCII.
El reto
Dado un entero t
, genera el estado de la barra del escáner en ese instante, definido de la siguiente manera:
- El escáner consta de ocho luces.
- En cualquier instante, una de las luces está activa y se muestra como
#
. Las luces que estaban activas a vecest-1
yt-2
ahora están atenuadas , y se muestran como+
; a menos que coincidan con el activo actual. El resto de las luces están apagadas y se muestran como-
. - La luz activa se mueve de izquierda a derecha, luego de derecha a izquierda.
El resultado exacto de cada uno t
se detalla a continuación.
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 del t
ciclo simplemente se extiende:
-1 --> -#++---- % Same as 13
-2 --> --#++--- % Same as 12
Reglas adicionales
Puedes escribir un programa o función.
La salida puede contener espacios en blanco al final y una nueva línea inicial.
El código más corto en bytes gana.
Respuestas:
Jalea ,
2822 bytes-6 bytes gracias a la ayuda de @Dennis! (invertir primero, luego concatenar)
TryItOnline ¡
O realiza cuatro oscilaciones con un huevo de pascua extra !
¿Cómo?
fuente
JavaScript (ES6),
6567 bytesEDITAR - Corregido para valores negativos. Ahora compatible
N >= -8,000,000,000
, lo que debería proporcionar un tiempo de funcionamiento extendido bastante bueno en modo CRUCERO AUTOMÁTICO. :-)Versión animada
Mostrar fragmento de código
fuente
n>=7
lugar den/7&1
n
estuviera dentro[0 ... 13]
, pero no lo está.JavaScript (ES6),
9087 bytes"- + ##" está indexado por una máscara de bits, donde el bit 1 significa una luz activa y el bit 0 significa una luz atenuada. La atenuación activa / atenuación ahora se calcula sumando y restando la posición actual de la posición deseada y viendo si alguno de los resultados es divisible por 14.
fuente
Python, 53 bytes
Crea la cadena
-----++#------
, toma una ventana de longitud 8 según el módulo de entrada 7, invierte las entradas del módulo 14 que se encuentran entre 1 y 7.fuente
> <> , 51 + 3 = 54 bytes
Se espera la entrada en la pila al inicio del programa, por lo que +3 bytes para el
-v
indicadorPruébalo en línea!
fuente
MATL,
343027 bytes7 bytes guardados gracias a @Luis
Pruébalo en línea!
Otro ejemplo con los primeros 25 pasos.
Explicación
fuente
Pyth,
3328 bytesAhorró 5 bytes calculando todas las luces de la misma manera.
Comienza con todas las luces apagadas y las enciende de una en una.
¡Pruébelo en línea!
fuente
JavaScript, 204 bytes
Prueba
fuente
JavaScript (ES6), 72
Menos golf
Prueba
fuente
Perl, 65 bytes
Incluye +1 para
-n
Ejecutar con el número en STDIN:
kitt.pl
:No es muy competitivo, pero merece una publicación por el extraño método.
fuente
Perl,
5655 bytesIncluye +3 para
-p
Ejecutar con el número en STDIN:
kitt.pl
:Ponga esto en un archivo sin la nueva línea final (agregue una final
;
al programa si no quiere molestarse con eso). Desafortunadamente, usar un literal^F
no funcionaEste programa contiene 2 caracteres de comentario (ignore la
#!
línea). Uno de ellos realmente es un comentario y de hecho gana un byte ...Implementa el algoritmo de resplandor posterior real
fuente
Lienzo , 23 bytes.
Pruébalo aquí!
fuente