Programe el código más corto que calculará el promedio de BPM (latidos por minuto) utilizando 8 puntos de datos de tiempo transcurrido. Esta es mi primera publicación, y no he visto una pregunta similar a esta. Como soy un fanático de los juegos de ritmo, sería bueno tener una pequeña herramienta útil para calcular BPM usando su propio teclado y su propio sentido del ritmo (si tiene uno ...)
Reto
- Todas las entradas deben ser singulares. (es decir, solo presionando "enter" como "input")
- Su programa debe tomar al menos 9 entradas. (Para crear 8 puntos de datos de tiempo pasado).
- Su programa debería generar los BPM de las pulsaciones de teclas redondeadas a 2 puntos decimales. (es decir, 178.35)
- El tiempo comienza en la primera entrada. No inicio del programa
Este es el código de golf , por lo que gana la respuesta más corta.
Ejemplo de entrada y salida
Proporcione al menos un ejemplo de entrada y salida. Asegúrese de que coincidan con su propia descripción de cómo debería verse la entrada.
Entrada:
> [Enter-Key]
# User waits 1 second
... 7 more inputs
> [Enter-Key]
Salida:
> 60
El ganador actual es KarlKastor a 22 Bytes usando Pyth
Aunque el ganador estaba usando Pyth, la respuesta de Matlab fue una respuesta notable.
Respuestas:
Pyth , 22 bytes
(sí, hay un espacio principal)
La entrada es 'enter' presiona.
Si se permite una salida adicional, puedo eliminar los espacios y obtener una puntuación de 20 bytes.
explicación
fuente
MATLAB / Octave,
58 5655 bytes¡Gracias @LuisMendo por -1 byte!
Tienes que presionar enter 9 veces. (También funciona en Octave).
Aquí lo ves en acción, izquierda MATLAB, derecha Octave:
fuente
round(.,2)
no funciona o funciona en las versiones más recientes?JavaScript (ES6),
7774 bytesCrea un
onclick
evento en elwindow
objeto global . Envíe ritmos haciendo clic en cualquier lugar de la ventana.Fragmento de prueba
Mostrar fragmento de código
fuente
Pitón 3,
939281 bytesGuardado 11 bytes gracias a Felipe .
fuente
print('%.2f'%(480/(b-a)))
yprint(f'{480/(b-a):.2f}')
(python3.6 +), pero ambos tienen el mismo bytecountBash + utilidades comunes de Linux, 58
fuente
Javascript,
100,84gracias a Powelles , 82 bytes gracias a Justin MarinerMostrar fragmento de código
fuente
Date.now()
lugar denew Date().getTime()
y en48e4
lugar de480000
.(a=alert)()
su primer uso y luego su uso posteriora()
.48e4
, y instanciar y llamar aalert
juntos:(a=alert)()
.s
a usarDate.now()
, y soltar el.getTime()
posterior. Y luego puedes aliasDate.now
a un nombre más corto. Y la inicialz=
no es necesaria ya que no está llamando a la función de forma recursiva. Hasta 69 bytes aquíJava 1.5+,
345339361337 bytes-34 bytes gracias a Michael por señalar que olvidé arreglar mis importaciones
Escucha al usuario cuando presiona la barra espaciadora. Luego, cuando el usuario lo ha presionado 9 veces, imprime al usuario el BPM actual:
La imagen tiene mensajes de depuración que no están presentes en el código de golf.
Sin golf:
Un poco divertido para tratar de obtener una puntuación más alta ...
fuente
String[]a) {new java
2027.03
BPM xD ligeramente modificado el código para una mejor evaluación comparativaC # (.NET Core),
193206189186155143137 bytes-47 bytes gracias a TheLethalCoder
-4 bytes gracias a Nazar554
-16 bytes gracias a Luc
-2 bytes gracias a Kamil Drakari
También agregado al conteo de bytes:
Programa completo:
fuente
+""
o incluso devolver el doble estaría bien.namespace System.Diagnostics{}
es probablemente más corto, pero solo se usaDiagnostics
en law
calificación tan completa que probablemente también sea más corta. Tenga en cuenta que debe incluirusing System;
en su conteo de bytes para laConsole
llamada.540000.0
con5.4e5
(end-start).Milliseconds
y conjuntoend
ystart
aDateTime.Now
.8/TimeSpan.TotalMinutes
lugar de54e4/TimeSpan.TotalMilliseconds
. Además, mediante una comprobación rápida utilizando 'Math.Round (valor, 2)' en lugar devalue.ToString("n2")
guardar algunos caracteres, en parte porque necesitaba menos paréntesisC ++, 150 bytes
fuente
#define
y en su lugar lo hacesvoid f(){for(int i=0,auto s=clock();i++<9;){getchar();}std::cout<<round(6000/(double(clock()-s)/8000))/100;}
#define G;getchar()
y luego cambiarclock();G
aclock()G
?round
.Python + maldiciones, 122 bytes
Requiere el
curses
que se cargue módulo.-9 bytes gracias a Felipe Nardi Batista
fuente
vba, 57
presione enter o haga clic en Aceptar en el cuadro de mensaje.
fuente
Python 3 , 74 bytes
Pruébalo en línea!
Esto le dará números tontos en TIO, ya que ejecuta todas las entradas a la vez pero funciona.
timeit()
devuelve el tiempo de ejecución de la declaración'input()'
en segundos, excluyendo el parámetro de configuracióninput()
. TIO con un retraso de 1s por entrada para la validación.fuente
Java 8,
180135 bytes-45 bytes gracias a @SocraticPhoenix sugiriendo usar
System.in
directamente.Una función lambda anónima con un argumento no utilizado que debe asignarse a un método de interfaz funcional que arroje un
Exception
(ejemplo a continuación). Lee desde la consola; los latidos se envían presionando enter.Ungolfed con código de prueba circundante
fuente
System.in
?System.in.read()
para bloquear hasta que se reciba la entrada. ¡Gracias! Se actualizará la respuesta.C #, 117 bytes
Ya hay una respuesta C # (.NET Core) en la que se basa. Se agregó una cadena interpolada (que .NET Core parece carecer) para la salida y redujo algunos bytes usando una matriz larga en lugar de DateTime.
Versión humana
fuente
R,
7984 bytesSolo funciona cuando se usa enter, ya que eso finalizará el escaneo de inmediato. Utiliza explícitamente
print
para sudigits
argumento, manejando el redondeo.fuente
Ruby, 58 bytes
fuente