Un podómetro simple puede ser modelado por un péndulo con dos interruptores en lados opuestos: uno en x = 0 y otro en x = l . Cuando el péndulo contacta con el interruptor lejano, se puede suponer que el ambulador ha dado medio paso. Cuando entra en contacto con el interruptor cercano, se completa el paso.
Dada una lista de números enteros que representan las posiciones del péndulo, determine el número de pasos completos registrados en el podómetro.
Entrada
Un entero l > 0, la longitud de la pista.
Una lista de enteros que representan las posiciones del péndulo del podómetro en cada momento.
Salida
El número de pasos completos medidos. Se da un paso cuando el péndulo contacta el interruptor lejano (x> = l) y luego el interruptor cercano (x <= 0).
Casos de prueba
8, [8, 3, 0, 1, 0, 2, 2, 9, 4, 7]
1
El péndulo hace contacto inmediatamente con el interruptor lejano en x = 8 en t = 0. Luego toca el interruptor cercano en t = 2 yt = 4, completando un paso. Después de eso, toca el interruptor lejano nuevamente en x = 9 en t = 8, pero nunca más toca el interruptor cercano.
1, [1, 5, -1, -4, -1, 1, -2, 8, 0, -4]
3
15, [10, -7, -13, 19, 0, 22, 8, 9, -6, 21, -14, 12, -5, -12, 5, -3, 5, -15, 0, 2, 11, -11, 12, 5, 16, 14, 27, -5, 13, 0, -7, -2, 11, -8, 27, 15, -10, -10, 4, 21, 29, 21, 2, 5, -7, 15, -7, -14, 13, 27]
7
7, [5, 4, 0]
0
7, [5, 8, 6, 1, 2]
0
fuente
7, [5, 4, 0]
? ¿Es eso 0 o 1? Es decir, ¿asume que un columpio es siempre "completo"? O7, [5, 8, 6, 1, 2]
? ¿Es eso 0 o 1?8, [0 8 0 8]
debería dar1
, no2
. ¿Estoy en lo correcto?Respuestas:
CJam,
2724 bytesEl formato de entrada es la lista de posiciones de péndulo seguidas de
l
una sola línea.Pruébalo aquí.
Explicación
fuente
MATL , 22 bytes
Esto usa la versión actual (14.0.0) del lenguaje / compilador.
Las entradas están en el mismo orden y formato que en el desafío, separadas por una nueva línea.
Pruébalo en línea!
Explicación
fuente
Javascript ES6 57 bytes
Gracias @NotThatCharles por -4
fuente
/10/
?Perl, 28 bytes
Incluye +1 para
-p
Ejecute con la entrada como una larga línea de enteros separados por espacios en STDIN, el primer número es la longitud:
steps.pl
:Utiliza el operador de flip-flop perl y cuenta el número de veces que vuelve a falso
fuente
Pyth, 18 bytes
Banco de pruebas
Explicación:
fuente
Rubí, 42
r
comienza comofalse
. Cambiamosr
a cada extremo de la pista y lo agregamos a nuestra cuenta. Luego, reduzca a la mitad el conteo (redondeando hacia abajo) para obtener el número de pasos.fuente
Retina, 34
Pruébalo en línea! o pruébalo con entrada decimal .
Toma entrada en unario, los números unarios negativos se tratan como
-111...
y cero es la cadena vacía. Cuenta el número de veces que aparece el primer número seguido de un cero. Utiliza un grupo atómico para garantizar que las coincidencias sean mínimas (lamentablemente, los grupos atómicos no capturan, por lo que debe estar envuelto en otro grupo ...).fuente
Pitón 3, 82
Guardado 2 bytes gracias a DSM.
No super golf aún.
Casos de prueba:
fuente
Clojure, 64 bytes
Asigna valores menores o iguales de cero a
0
, mayores que o iguales de longitud1
y otros a una cadena vacía""
. Esto se concatena a una cadena y"10"
se cuentan las ocurrencias de .fuente
APL (Dyalog Unicode) , SBCS de 17 bytes
También conocido como "¿cuánto puedo abusar de iota-underbar?"
Pruébalo en línea!
fuente