Program kode terpendek yang akan menghitung rata-rata BPM (Detak per Menit) menggunakan 8 titik data waktu berlalu. Ini adalah posting pertama saya, dan saya belum melihat pertanyaan yang mirip dengan ini. Karena saya penggemar permainan rhythm, alangkah baiknya memiliki alat praktis kecil untuk menghitung BPM menggunakan keyboard Anda sendiri dan rasa ritme Anda sendiri (jika Anda punya ...)
Tantangan
- Semua input harus tunggal. (Yaitu Hanya menekan "enter" sebagai "input")
- Program Anda harus mengambil setidaknya 9 input. (Untuk membuat 8 titik data waktu berlalu.)
- Program Anda harus menampilkan BPM dari penekanan tombol yang dibulatkan pada 2 titik desimal. (yaitu 178,35)
- Pengaturan waktu dimulai pada input pertama. Tidak memulai program
Ini kode-golf , jadi jawaban terpendek menang.
Contoh Input dan Output
Berikan setidaknya satu contoh input dan output. Pastikan mereka cocok dengan deskripsi Anda sendiri tentang bagaimana seharusnya input itu.
Memasukkan:
> [Enter-Key]
# User waits 1 second
... 7 more inputs
> [Enter-Key]
Keluaran:
> 60
Pemenang saat ini adalah KarlKastor dengan 22 Bytes menggunakan Pyth
Meskipun pemenang menggunakan Pyth, jawaban Matlab adalah jawaban penting.
Jawaban:
Pyth , 22 byte
(ya ada ruang terkemuka)
Input adalah tekan 'enter'.
Jika output tambahan diizinkan, saya dapat menghapus spasi dan mendapatkan skor 20 byte.
penjelasan
sumber
MATLAB / Oktaf,
58 5655 byteTerima kasih @LuisMendo untuk -1 byte!
Anda harus menekan enter 9 kali. (Juga berfungsi di Oktaf.)
Di sini Anda melihatnya beraksi, kiri MATLAB, oktaf kanan:
sumber
round(.,2)
apakah tidak berhasil, atau apakah itu dalam versi yang lebih baru?JavaScript (ES6),
7774 byteMembuat
onclick
acara padawindow
objek global . Kirim ketukan dengan mengklik di mana saja di jendela.Cuplikan Tes
Tampilkan cuplikan kode
sumber
Python 3,
939281 byteDisimpan 11 byte berkat Felipe .
sumber
print('%.2f'%(480/(b-a)))
danprint(f'{480/(b-a):.2f}')
(python3.6 +), tetapi keduanya memiliki bytecount yang samaBash + utilitas Linux umum, 58
sumber
Javascript,
100,84terima kasih kepada Powelles , 82 byte terima kasih kepada Justin MarinerTampilkan cuplikan kode
sumber
Date.now()
sebagai gantinew Date().getTime()
dan48e4
bukan480000
.(a=alert)()
untuk penggunaan pertama Anda dan kemudian digunakana()
.48e4
, dan instanciate DAN panggilanalert
bersama-sama:(a=alert)()
.s
untuk menggunakanDate.now()
, dan menjatuhkannya.getTime()
nanti. Dan kemudian Anda bisa aliasDate.now
ke nama yang lebih pendek. Dan inisialz=
tidak diperlukan karena Anda tidak memanggil fungsi secara rekursif. Turun ke 69 byte di siniJava 1.5+,
345339361337 byte-34 byte terima kasih kepada Michael karena telah menunjukkan bahwa saya lupa memperbaiki impor saya
Mendengarkan pengguna saat mereka menekan tombol spasi. Kemudian, ketika pengguna telah menekannya 9 kali, mencetak kembali kepada pengguna BPM saat ini:
Gambar memiliki pesan debug yang tidak ada dalam kode golf.
Tidak Disatukan:
Agak menyenangkan untuk mencoba dan mendapatkan skor tinggi ...
sumber
String[]a) {new java
2027.03
BPM xD sedikit mengubah kode untuk beberapa pembandingan yang lebih baikC # (.NET Core),
193206189186155143137 byte-47 bytes berkat TheLethalCoder
-4 bytes berkat Nazar554
-16 bytes berkat Luc
-2 bytes berkat Kamil Drakari
Juga ditambahkan ke jumlah byte:
Seluruh program:
sumber
+""
atau bahkan mengembalikan double akan baik-baik saja.namespace System.Diagnostics{}
mungkin lebih pendek tetapi Anda hanya menggunakanDiagnostics
padaw
kualifikasi yang sepenuhnya penuh yang mungkin lebih pendek juga. Perhatikan bahwa Anda harus memasukkanusing System;
dalam hitungan byte Anda untukConsole
panggilan tersebut.540000.0
dengan5.4e5
(end-start).Milliseconds
dan setend
danstart
untukDateTime.Now
.8/TimeSpan.TotalMinutes
alih - alih54e4/TimeSpan.TotalMilliseconds
. Selain itu, dengan pemeriksaan cepat menggunakan 'Math.Round (nilai, 2)' alih-alihvalue.ToString("n2")
menghemat beberapa karakter, sebagian karena itu membutuhkan lebih sedikit tanda kurungC ++, 150 byte
sumber
#define
dan sebaliknyavoid f(){for(int i=0,auto s=clock();i++<9;){getchar();}std::cout<<round(6000/(double(clock()-s)/8000))/100;}
#define G;getchar()
dan kemudian mengubahclock();G
keclock()G
?round
.Kutukan Python +, 122 byte
Membutuhkan
curses
modul untuk dimuat.-9 byte berkat Felipe Nardi Batista
sumber
vba, 57
tekan enter, atau klik OK di kotak pesan.
sumber
Python 3 , 74 byte
Cobalah online!
Ini akan memberi Anda angka-angka konyol di TIO karena menjalankan semua input sekaligus tetapi berhasil.
timeit()
mengembalikan waktu eksekusi pernyataan'input()'
dalam hitungan detik tidak termasuk parameter pengaturaninput()
. TIO dengan penundaan 1s per input untuk validasi.sumber
Java 8,
180135 byte-45 byte terima kasih kepada @SocraticPhoenix yang menyarankan untuk digunakan
System.in
secara langsung.Fungsi lambda anonim dengan argumen yang tidak digunakan yang harus ditugaskan ke metode antarmuka fungsional yang melempar
Exception
(contoh di bawah). Membaca dari konsol; ketukan dikirim dengan menekan enter.Tidak Terkotak-kotak dengan Kode Uji Sekitarnya
sumber
System.in
?System.in.read()
untuk memblokir sampai input diterima. Terima kasih! Akan memperbarui jawaban.C #, 117 byte
Sudah ada jawaban C # (.NET Core) yang dibangun di atas ini. Menambahkan string interpolasi (yang. NET Core tampaknya kurang) untuk output dan mencukur beberapa byte dengan menggunakan array panjang, bukan DateTime.
Versi manusiawi
sumber
R,
7984 byteHanya berfungsi ketika menggunakan enter, karena itu akan segera mengakhiri pemindaian. Secara eksplisit menggunakan
print
untuk nyadigits
argumen, penanganan pembulatan.sumber
Ruby, 58 byte
sumber