Intro
Les panneaux d'information sont partout. Lorsque la technologie est devenue moins chère, les affiches en papier ont été transformées en panneaux lumineux qui montrent des mots qui apparaissent d'un côté et ressortent de l'autre, comme celui de la figure:
Lorsque l'un de ces signes démarre, il commence généralement à vide et le texte part du côté droit vers la gauche, se déplaçant jusqu'à ce qu'il disparaisse.
Sa fonctionnalité est d'allumer et d'éteindre les petites ampoules (LED) pour donner la sensation de mouvement.
Si au lieu du texte, nous devons seulement afficher des nombres, l'affiche peut être beaucoup moins sophistiquée en utilisant les marqueurs dits à sept segments comme suit:
Dans ce cas, chaque nombre est représenté par la combinaison marche / arrêt de seulement 7 segments lumineux qui permettent de représenter tous les nombres:
La question que nous nous posons est de savoir combien de changements de lumières (combien d'allumer et éteindre) doivent être effectués pour traverser une de ces affiches un certain nombre?
Par exemple, pour afficher le 123 dans un signe à 3 chiffres qui commence avec toutes les LED éteintes, nous aurons:
Cela fait un total de 42 changements de lumières.
Défi
Étant donné un nombre non négatif et une longueur de signe positive, calculez le nombre de changements de lumière.
Règles
- Supposons que l'entrée consiste en un nombre non négatif (N> = 0) et une longueur de signe positive (M> 0)
- Supposons que la longueur du signe> = longueur du nombre (M> = chiffres (N))
Cas de test
123, 3 => 42
45, 5 => 60
111, 3 => 12
98765, 10 => 220
0, 3 => 36
0,3 => 36
Réponses:
Python 2 ,
129126119 119104 octetsEssayez-le en ligne!
Thx pour un gros 15 octets de ovs .
Comme spécifié, prend un nombre non négatif et une longueur de signe positive et renvoie le total des modifications.
la source
'7367355777e0d93bf0fb'
\x7f
) entrep
et{
.Gelée , 23 octets
Un lien dyadique acceptant l'entier à afficher à gauche et la longueur du signe à droite qui donne le nombre de changements (fonctionne également si le nombre de chiffres dans l'entier à afficher est supérieur à la longueur du signe).
Essayez-le en ligne!
Comment?
Pendant tout le spectacle, chaque affichage à 7 segments (à un moment donné) passe du vide au premier chiffre, puis au deuxième et ainsi de suite, et enfin du dernier au vide à nouveau. Les transitions coûtent chacune le XOR au niveau du bit des segments actifs des segments de début et de fin (où vide est un "chiffre" avec 0 segment). J'ai volé les on-segments sous forme d'entiers dans une précédente révision de la réponse d' ETHproductions , mais toute permutation des 7 segments ferait aussi bien.
la source
JavaScript (Node.js) ,
104949393 octets1 octet enregistré grâce à @Shaggy
Essayez-le en ligne!
la source
0,3
devrait donner36
; vous donnez0
. (J'ai eu le même problème - réparer cela m'a coûté environ 10 octets grrrr ... :)).Japt,
3130 octetsAdapté de la solution Jelly de Jonathan. Prend la saisie dans l'ordre inverse avec le nombre à afficher sous forme de tableau de chiffres.
Essayez-le
la source
Nettoyer , 280 octets
Essayez-le en ligne!
Il doit y avoir un moyen plus court ..
la source
Fusain , 40 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Fonctionne en convertissant l'entrée en valeurs de segment binaire, puis en comptant le nombre de changements entre chaque caractère. Explication:
la source
JavaScript (Node.js) , 88 octets
Prend l'entrée comme
(integer)(width)
.Essayez-le en ligne!
Comment?
Commenté
la source