Programmez le code le plus court qui calculera le BPM moyen (battements par minute) en utilisant 8 points de temps écoulés. Ceci est mon premier post, et je n'ai pas vu de question similaire à celle-ci. Puisque je suis un fan des jeux de rythme, ce serait bien d'avoir un petit outil pratique pour calculer le BPM en utilisant votre propre clavier et votre propre sens du rythme (si vous en avez un ...)
Défi
- Toutes les entrées doivent être singulières. (c'est-à-dire en appuyant uniquement sur "entrée" comme "entrée")
- Votre programme doit prendre au moins 9 entrées. (Pour créer 8 points de temps de données passés.)
- Votre programme doit sortir le BPM des touches pressées arrondi à 2 décimales. (soit 178,35)
- Le chronométrage commence à la première entrée. Pas de début de programme
C'est le golf de code , donc la réponse la plus courte l'emporte.
Exemple d'entrée et de sortie
Fournissez au moins un exemple d'entrée et de sortie. Assurez-vous qu'ils correspondent à votre propre description de l'aspect de l'entrée.
Contribution:
> [Enter-Key]
# User waits 1 second
... 7 more inputs
> [Enter-Key]
Sortie:
> 60
Le gagnant actuel est KarlKastor à 22 octets utilisant Pyth
Même si le gagnant utilisait Pyth, la réponse Matlab était une réponse notable.
Réponses:
Pyth , 22 octets
(oui il y a un espace de tête)
L'entrée consiste à appuyer sur "Entrée".
Si une sortie supplémentaire est autorisée, je peux supprimer les espaces et obtenir un score de 20 octets.
explication
la source
MATLAB / Octave,
58 5655 octetsMerci @LuisMendo pour -1 octet!
Vous devez appuyer sur Entrée 9 fois. (Fonctionne également dans Octave.)
Ici vous le voyez en action, à gauche MATLAB, à droite Octave:
la source
round(.,2)
ne fonctionne pas, ou est-ce dans les versions plus récentes?JavaScript (ES6),
7774 octetsCrée un
onclick
événement sur l'window
objet global . Envoyez des temps en cliquant n'importe où dans la fenêtre.Extrait de test
Afficher l'extrait de code
la source
Python 3,
939281 octetsEnregistré 11 octets grâce à Felipe .
la source
print('%.2f'%(480/(b-a)))
etprint(f'{480/(b-a):.2f}')
(python3.6 +), mais les deux ont le même bytecountBash + utilitaires Linux courants, 58
la source
Javascript,
100,84grâce à Powelles , 82 octets grâce à Justin MarinerAfficher l'extrait de code
la source
Date.now()
au lieu denew Date().getTime()
et48e4
au lieu de480000
.(a=alert)()
pour votre première utilisation, puis une utilisation ultérieurea()
.48e4
, et instancie et APPELLENTalert
ensemble:(a=alert)()
.s
à l'utilisationDate.now()
et supprimer la.getTime()
dernière. Et puis vous pouvez créerDate.now
un pseudonyme pour un nom plus court. Et l'initialez=
n'est pas nécessaire car vous n'appelez pas la fonction récursivement. Jusqu'à 69 octets iciJava 1.5+,
345339361337 octets-34 octets merci à Michael d'avoir souligné que j'avais oublié de réparer mes importations
Écoute l'utilisateur lorsqu'il appuie sur la barre d'espace. Ensuite, lorsque l'utilisateur l'a pressé 9 fois, il réimprime à l'utilisateur le BPM actuel:
L'image contient des messages de débogage non présents dans le code golfé.
Non golfé:
Un peu amusant d'essayer d'obtenir un meilleur score ...
la source
String[]a) {new java
2027.03
BPM xD légèrement modifié le code pour une meilleure analyse comparativeC # (.NET de base),
193206189186155143137 octets-47 octets grâce à TheLethalCoder
-4 octets grâce à Nazar554
-16 octets grâce à Luc
-2 octets grâce à Kamil Drakari
Également ajouté au nombre d'octets:
Programme complet:
la source
+""
ou même retourner le double serait bien.namespace System.Diagnostics{}
est probablement plus court mais vous ne l'utilisez queDiagnostics
sur lesw
qualifications si complètes qui sont probablement plus courtes aussi. Notez que vous devez inclureusing System;
dans votre nombre d'octets pour l'Console
appel.540000.0
par5.4e5
(end-start).Milliseconds
et ensembleend
etstart
àDateTime.Now
.8/TimeSpan.TotalMinutes
au lieu de54e4/TimeSpan.TotalMilliseconds
. En outre, par une vérification rapide en utilisant `` Math.Round (valeur, 2) '' au lieu devalue.ToString("n2")
sembler enregistrer quelques caractères, en partie parce qu'il avait besoin de moins de parenthèsesC ++, 150 octets
la source
#define
et à la placevoid f(){for(int i=0,auto s=clock();i++<9;){getchar();}std::cout<<round(6000/(double(clock()-s)/8000))/100;}
#define G;getchar()
puis de changerclock();G
enclock()G
?round
.Python + curses, 122 octets
Nécessite le
curses
chargement du module.-9 octets grâce à Felipe Nardi Batista
la source
vba, 57
appuyez sur entrée ou cliquez sur OK dans la boîte de message.
la source
Python 3 , 74 octets
Essayez-le en ligne!
Cela vous donnera des chiffres stupides dans TIO car il exécute toutes les entrées à la fois mais cela fonctionne.
timeit()
renvoie le temps d'exécution de l'instruction'input()'
en secondes, à l'exclusion du paramètre de configurationinput()
. TIO avec un retard de 1 s par entrée pour validation.la source
Java 8,
180135 octets-45 octets grâce à @SocraticPhoenix suggérant d'utiliser
System.in
directement.Une fonction lambda anonyme avec un argument inutilisé qui doit être affecté à une méthode d'interface fonctionnelle qui lance une
Exception
(exemple ci-dessous). Lit à partir de la console; les temps sont envoyés en appuyant sur enter.Non golfé avec code de test environnant
la source
System.in
?System.in.read()
pour bloquer jusqu'à ce que l'entrée soit reçue. Merci! Mettra à jour la réponse.C #, 117 octets
Il existe déjà une réponse C # (.NET Core) sur laquelle celle-ci s'appuie. Ajout d'une chaîne interpolée (que .NET Core semble manquer) pour la sortie et rasage de quelques octets en utilisant un long tableau au lieu de DateTime.
Version humaine
la source
R,
7984 octetsFonctionne uniquement lorsque vous utilisez enter, car cela mettra immédiatement fin à l'analyse. Utilise explicitement
print
pour sondigits
argument, la gestion de l'arrondi.la source
Rubis, 58 octets
la source