La série télévisée Knight Rider des années 80 présentait une voiture intelligente et consciente appelée KITT. Un aspect distinctif de la voiture était une barre de scanner montée à l'avant qui permettait à KITT de "voir" (et qui semblait étrangement familier aux fans d'une autre série télévisée antérieure ).
Le scanner avait huit lumières comme le montre cette image:
Les lumières ont "bougé" comme le montre cette image animée .
Votre tâche, comme vous l'avez deviné, consiste à recréer la barre du scanner avec les lumières mobiles dans l'art ASCII.
Le défi
Étant donné un entier t
, affichez l'état de la barre du scanner à cet instant, défini comme suit:
- Le scanner se compose de huit lumières.
- À tout instant, l'un des voyants est actif et s'affiche comme
#
. Les lumières qui étaient actives à certains momentst-1
ett-2
sont maintenant atténuées , et sont représentées comme+
; à moins qu'ils ne coïncident avec l'actuel actif. Les autres voyants sont éteints et sont représentés par-
. - La lumière active se déplace de gauche à droite, puis de droite à gauche.
La sortie exacte pour chacun t
est détaillée ci-dessous.
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
Pour les valeurs négatives du t
cycle est simplement étendu:
-1 --> -#++---- % Same as 13
-2 --> --#++--- % Same as 12
Règles supplémentaires
Vous pouvez écrire un programme ou une fonction.
La sortie peut contenir des espaces de fin et une nouvelle ligne de début.
Le code le plus court en octets gagne.
Réponses:
Gelée ,
2822 octets-6 octets grâce à l'aide de @Dennis! (bouleverser d'abord, puis concaténer)
TryItOnline
Ou effectuez quatre oscillations avec un œuf de Pâques en prime !!
Comment?
la source
JavaScript (ES6),
6567 octetsEDIT - Fixé pour les valeurs négatives. Maintenant en charge
N >= -8,000,000,000
, ce qui devrait fournir une assez longue durée de fonctionnement prolongée en mode AUTO CRUISE. :-)Version animée
Afficher l'extrait de code
la source
n>=7
au lieu den/7&1
n
c'était le cas[0 ... 13]
, mais ce n'est pas le cas.JavaScript (ES6),
9087 octets"- + ##" est indexé par un masque de bits, où le bit 1 signifie une lumière active et le bit 0 signifie une lumière atténuée. L'activation / atténuation est maintenant calculée en ajoutant et en soustrayant la position actuelle de la position souhaitée et en voyant si l'un ou l'autre résultat est divisible par 14.
la source
Python, 53 octets
Crée la chaîne
-----++#------
, prend une fenêtre de longueur 8 en fonction du modulo d'entrée 7, inverse les entrées modulo 14 qui se situent entre 1 et 7.la source
> <> , 51 + 3 = 54 octets
Une entrée est attendue sur la pile au démarrage du programme, donc +3 octets pour l'
-v
indicateur.Essayez-le en ligne!
la source
MATL,
343027 octets7 octets économisés grâce à @Luis
Essayez-le en ligne!
Un autre exemple avec les 25 premières étapes
Explication
la source
Pyth,
3328 octetsEnregistré 5 octets en calculant toutes les lumières de la même manière.
Commence avec les lumières éteintes et les allume une à la fois.
Essayez-le en ligne!
la source
JavaScript, 204 octets
Tester
la source
JavaScript (ES6), 72
Moins golfé
Tester
la source
Perl, 65 octets
Comprend +1 pour
-n
Exécutez avec le numéro sur STDIN:
kitt.pl
:Pas très compétitif mais mérite un poste pour l'étrange méthode
la source
Perl,
5655 octetsComprend +3 pour
-p
Exécutez avec le numéro sur STDIN:
kitt.pl
:Mettez-le dans un fichier sans la nouvelle ligne finale (ajoutez une finale
;
au programme si vous ne voulez pas vous embêter avec ça). Malheureusement, l'utilisation d'un littéral^F
ne fonctionne pasCe programme contient 2 caractères de commentaire (ignorez la
#!
ligne). L'un d'eux est vraiment un commentaire et gagne en fait un octet ...Implémente l'algorithme de rémanence réelle
la source
Toile , 23 octets
Essayez-le ici!
la source