Introducción
Los paneles de información están en todas partes. Cuando la tecnología se volvió más barata, los carteles de papel se transformaron en signos luminosos que muestran palabras que aparecen en un lado y salen por el otro, como el de la figura:
Cuando se inicia uno de estos signos, generalmente comienza vacío y el texto sale del lado derecho hacia la izquierda, moviéndose hasta que desaparece.
Su funcionalidad es encender y apagar las pequeñas bombillas (LED) para dar la sensación de movimiento.
Si en lugar de texto solo necesitamos mostrar números, el póster puede ser mucho menos sofisticado usando los llamados marcadores de siete segmentos como los siguientes:
En este caso, cada número está representado por la combinación de encendido / apagado de solo 7 segmentos de luz que permiten representar todos los números:
La pregunta que nos hacemos es cuántos cambios de luces (cuántos encendidos y apagados) se deben hacer para pasar por uno de estos carteles un número determinado.
Por ejemplo, para mostrar el 123 en un signo de 3 dígitos que comienza con todos los LED apagados tendremos:
Esto hace un total de 42 cambios de luces.
Desafío
Dado un número no negativo y una longitud de signo positivo, calcule el número de cambios de luces.
Reglas
- Suponga que la entrada consiste en un número no negativo (N> = 0) y una longitud de signo positivo (M> 0)
- Asumir longitud del signo> = longitud del número (M> = dígitos (N))
Casos de prueba
123, 3 => 42
45, 5 => 60
111, 3 => 12
98765, 10 => 220
0, 3 => 36
0,3 => 36
Respuestas:
Python 2 ,
129126119104 bytesPruébalo en línea!
Thx para un gran 15 bytes de ovs .
Como se especifica, toma un número no negativo y una longitud de signo positivo, y devuelve los cambios totales.
fuente
'7367355777e0d93bf0fb'
\x7f
) entrep
y{
.Jalea , 23 bytes
Un enlace diádico que acepta el número entero para mostrar a la izquierda y la longitud del signo a la derecha que produce el número de cambios (también funciona si el número de dígitos en el número entero para mostrar es mayor que la longitud del signo).
Pruébalo en línea!
¿Cómo?
Durante todo el espectáculo, cada pantalla de 7 segmentos (en algún momento) pasa del vacío al primer dígito, luego al segundo y así sucesivamente, y finalmente del último al vacío nuevamente. Cada una de las transiciones cuesta el XOR bit a bit de los segmentos activos de los dígitos desde y hacia los dígitos (donde vacío es un "dígito" con 0 segmentos activos). Robé los segmentos en forma de números enteros de una revisión anterior de la respuesta de ETHproductions , pero cualquier permutación de los 7 segmentos funcionaría igual de bien.
fuente
JavaScript (Node.js) ,
104949393 bytesGuardado 1 byte gracias a @Shaggy
Pruébalo en línea!
fuente
0,3
debería dar36
; das0
. (Tuve el mismo problema: solucionar esto me costó unos 10 bytes grrrr ... :)).Japt,
3130 bytesAdaptado de la solución Jonathan's Jelly. Toma la entrada en orden inverso con el número que se mostrará como una matriz de dígitos.
Intentalo
fuente
Limpio , 280 bytes
Pruébalo en línea!
Tiene que haber un camino más corto ...
fuente
Carbón , 40 bytes.
Pruébalo en línea! El enlace es a la versión detallada del código. Funciona convirtiendo la entrada en los valores del segmento binario y luego contando el número de cambios entre cada carácter. Explicación:
fuente
JavaScript (Node.js) , 88 bytes
Toma entrada como
(integer)(width)
.Pruébalo en línea!
¿Cómo?
Comentado
fuente