Programmieren Sie den kürzesten Code, der die durchschnittliche BPM (Beats per Minute) anhand von 8 verstrichenen Datenpunkten berechnet. Dies ist mein erster Beitrag, und ich habe keine ähnliche Frage gesehen. Da ich ein Fan von Rhythmus-Spielen bin, wäre es schön, ein kleines handliches Tool zu haben, um BPM mit Ihrer eigenen Tastatur und Ihrem eigenen Rhythmus-Gefühl zu berechnen (wenn Sie eines haben ...)
Herausforderung
- Alle Eingaben müssen Singular sein. (dh nur "enter" als "input" drücken)
- Ihr Programm muss mindestens 9 Eingaben enthalten. (So erstellen Sie 8 verstrichene Datenzeitpunkte.)
- Ihr Programm sollte die BPM der Tastendrücke auf 2 Dezimalstellen gerundet ausgeben. (dh 178,35)
- Das Timing beginnt bei der ersten Eingabe. Programm nicht gestartet
Das ist Code-Golf , also gewinnt die kürzeste Antwort.
Beispiel für Ein- und Ausgabe
Geben Sie mindestens ein Beispiel für die Eingabe und Ausgabe an. Stellen Sie sicher, dass sie mit Ihrer eigenen Beschreibung der Eingabe übereinstimmen.
Eingang:
> [Enter-Key]
# User waits 1 second
... 7 more inputs
> [Enter-Key]
Ausgabe:
> 60
Aktueller Gewinner ist KarlKastor mit 22 Bytes mit Pyth
Obwohl der Gewinner Pyth verwendete, war die Antwort von Matlab eine bemerkenswerte Antwort.
Antworten:
Pyth , 22 Bytes
(Ja, es gibt ein führendes Leerzeichen)
Die Eingabe erfolgt durch Drücken der Eingabetaste.
Wenn zusätzliche Ausgabe zulässig ist, kann ich die Leerzeichen entfernen und eine Punktzahl von 20 Bytes erhalten.
Erläuterung
quelle
MATLAB / Octave,
58 5655 BytesDanke @LuisMendo für -1 Byte!
Sie müssen die Eingabetaste 9 Mal drücken. (Funktioniert auch in Octave.)
Hier sehen Sie es in Aktion, links MATLAB, rechts Octave:
quelle
round(.,2)
das nicht, oder geht das in den neueren versionen?JavaScript (ES6),
77 bis74 ByteErstellt ein
onclick
Ereignis für das globalewindow
Objekt. Senden Sie Beats, indem Sie auf eine beliebige Stelle im Fenster klicken.Testschnipsel
Code-Snippet anzeigen
quelle
Python 3,
939281 Bytes11 Bytes dank Felipe gespeichert .
quelle
print('%.2f'%(480/(b-a)))
undprint(f'{480/(b-a):.2f}')
(Python3.6 +), aber beide haben die gleichen bytecountBash + gängige Linux-Dienstprogramme, 58
quelle
Javascript,
100,84dank Powelles , 82 Bytes dank Justin MarinerCode-Snippet anzeigen
quelle
Date.now()
anstelle vonnew Date().getTime()
und48e4
anstelle von zu verwenden480000
.(a=alert)()
für Ihre erste Verwendung und spätere Verwendung eine Warnung zuweisena()
.48e4
und Instanciate und rufenalert
zusammen:(a=alert)()
.s
zur Verwendung wechselnDate.now()
und diese.getTime()
später löschen . Und dann können Sie einen AliasDate.now
auf einen kürzeren Namen setzen. Und die Initialez=
wird nicht benötigt, da Sie die Funktion nicht rekursiv aufrufen. Bis zu 69 Bytes hierJava 1.5+,
345339361337 Bytes-34 Bytes Danke an Michael für den Hinweis, dass ich vergessen habe, meine Importe zu reparieren
Hört dem Benutzer beim Drücken der Leertaste zu. Wenn der Benutzer sie dann neunmal gedrückt hat, wird die aktuelle BPM an den Benutzer zurückgedruckt:
Das Bild enthält Debug-Meldungen, die im Golf-Code nicht vorhanden sind.
Ungolfed:
Ein bisschen Spaß zu versuchen und einen Highscore zu bekommen ...
quelle
String[]a) {new java
2027.03
BPM xD leicht verändert den Code für ein besseres BenchmarkingC # (.NET Core),
193206189186155143137 Bytes-47 Bytes dank TheLethalCoder
-4 Bytes dank Nazar554
-16 Bytes dank Luc
-2 Bytes dank Kamil Drakari
Auch zur Byteanzahl hinzugefügt:
Gesamtes Programm:
quelle
+""
dass es in Ordnung wäre, einfach oder gar das Doppelte zurückzugeben.namespace System.Diagnostics{}
ist wahrscheinlich kürzer, aber du verwendest nurDiagnostics
dasw
so vollwertige Qualifying, das wahrscheinlich auch kürzer ist. Beachten Sie, dass Sie dieusing System;
Anzahl der Bytes für denConsole
Aufruf angeben sollten.540000.0
durch5.4e5
(end-start).Milliseconds
und einstellenend
undstart
aufDateTime.Now
.8/TimeSpan.TotalMinutes
anstatt54e4/TimeSpan.TotalMilliseconds
. Auch durch eine schnelle Überprüfung mit 'Math.Round (Wert, 2)' stattvalue.ToString("n2")
schien ein paar Zeichen zu speichern, zum Teil, weil es weniger Klammern benötigtC ++, 150 Bytes
quelle
#define
und stattdessen tunvoid f(){for(int i=0,auto s=clock();i++<9;){getchar();}std::cout<<round(6000/(double(clock()-s)/8000))/100;}
#define G;getchar()
und dann Wechselclock();G
zuclock()G
?round
.Python + Flüche, 122 Bytes
Erfordert das
curses
Laden des Moduls.-9 Bytes dank Felipe Nardi Batista
quelle
vba, 57
Drücken Sie die Eingabetaste oder klicken Sie im Meldungsfeld auf OK.
quelle
Python 3 , 74 Bytes
Probieren Sie es online!
Dies gibt Ihnen dumme Zahlen in TIO, da es alle Eingaben auf einmal ausführt, aber es funktioniert.
timeit()
Gibt die Ausführungszeit der Anweisung'input()'
in Sekunden ohne den Setup-Parameter zurückinput()
. TIO mit einer Verzögerung von 1s pro Eingang zur Validierung.quelle
Java 8,
180135 Bytes-45 Byte dank @SocraticPhoenix, das vorschlägt,
System.in
direkt zu verwenden .Eine anonyme Lambda-Funktion mit einem nicht verwendeten Argument, das einer funktionellen Schnittstellenmethode zugewiesen werden muss, die eine auslöst
Exception
(Beispiel unten). Liest von der Konsole; Beats werden durch Drücken von gesendet enter.Ungolfed mit Umgebungstestcode
quelle
System.in
?System.in.read()
sperren bis eingang ist. Vielen Dank! Wird die Antwort aktualisieren.C #, 117 Bytes
Es gibt bereits eine C # (.NET Core) Antwort , auf der diese aufbaut. Es wurde eine interpolierte Zeichenfolge (die in .NET Core offenbar nicht vorhanden ist) für die Ausgabe hinzugefügt und einige Bytes mithilfe eines langen Arrays anstelle von DateTime rasiert.
Humane Version
quelle
R
7984 BytesFunktioniert nur mit der Eingabetaste, da der Scan sofort beendet wird. Verwendet explizit
print
für seindigits
Argument, die Rundung zu behandeln.quelle
Ruby, 58 Bytes
quelle