Запрограммируйте самый короткий код, который будет вычислять среднее значение ударов в минуту (ударов в минуту), используя 8 временных точек данных. Это мой первый пост, и я не видел подобного вопроса. Так как я фанат ритм-игр, было бы неплохо иметь небольшой удобный инструмент для расчета BPM, используя вашу собственную клавиатуру и ваше собственное чувство ритма (если оно у вас есть ...)
Вызов
- Все входные данные должны быть единичными. (т.е. только нажимая «ввод» как «ввод»)
- Ваша программа должна принимать не менее 9 входов. (Для создания 8 точек данных прошло время.)
- Ваша программа должна выводить удары в минуту нажатий клавиш, округленные до 2 десятичных знаков. (т.е. 178,35)
- Сроки начинается с первого ввода. Не запуск программы
Это код-гольф , поэтому выигрывает самый короткий ответ.
Пример ввода и вывода
Предоставьте хотя бы один пример ввода и вывода. Убедитесь, что они соответствуют вашему собственному описанию того, как должен выглядеть ввод.
Входные данные:
> [Enter-Key]
# User waits 1 second
... 7 more inputs
> [Enter-Key]
Выход:
> 60
Текущий победитель - KarlKastor на 22 байта, использующий Pyth
Хотя победитель использовал Pyth, ответ Matlab был заметным ответом.
Ответы:
Pyth , 22 байта
(да, там ведущий пробел)
Ввод осуществляется нажатием кнопки ввода.
Если разрешен дополнительный вывод, я могу удалить пробелы и получить оценку 20 байт.
объяснение
источник
MATLAB / Octave,
58 5655 байтСпасибо @LuisMendo за -1 байт!
Вы должны нажать Enter 9 раз. (Также работает в Октаве.)
Здесь вы видите это в действии, слева MATLAB, справа Octave:
источник
round(.,2)
не работает или в новых версиях?JavaScript (ES6),
7774 байтаСоздает
onclick
событие на глобальномwindow
объекте. Отправить удары, нажав в любом месте окна.Тестовый фрагмент
Показать фрагмент кода
источник
Python 3,
939281 байтСохранено 11 байтов благодаря Фелипе .
источник
print('%.2f'%(480/(b-a)))
иprint(f'{480/(b-a):.2f}')
(python3.6 +), но у обоих одинаковое количество участниковBash + общие утилиты Linux, 58
источник
Javascript,
100,84благодаря Пауэлл , 82 байта благодаря Джастину МаринеруПоказать фрагмент кода
источник
Date.now()
вместоnew Date().getTime()
и48e4
вместо480000
.(a=alert)()
при первом использовании, а затем при последующем использованииa()
.48e4
, и создать экземпляр И позвонитьalert
вместе(a=alert)()
.s
на использованиеDate.now()
, и отказаться от.getTime()
позже. И тогда вы можете использовать псевдонимDate.now
для более короткого имени. И инициалz=
не нужен, так как вы не вызываете функцию рекурсивно. Здесь до 69 байтJava 1,5+,
345339361337 байт-34 байта спасибо Майклу за указание, что я забыл исправить мой импорт
Слушает пользователя, когда он нажимает пробел. Затем, когда пользователь нажал его 9 раз, печатает обратно текущий BPM:
Изображение содержит сообщения отладки, которых нет в коде для игры в гольф.
Ungolfed:
В некотором роде весело, чтобы попытаться получить рекорд ...
источник
String[]a) {new java
2027.03
BPM xD немного изменил код для лучшего тестированияC # (.NET Core),
193206189186155143137 байт-47 байт благодаря TheLethalCoder
-4 байт благодаря Nazar554
-16 байт благодаря Luc
-2 байт благодаря Камилу Дракари
Также добавлено к количеству байтов:
Вся программа:
источник
+""
или даже возвращение двойного было бы хорошо.namespace System.Diagnostics{}
Вероятно, короче, но вы используете толькоDiagnostics
наw
настолько полной квалификации, что, вероятно, тоже короче. Обратите внимание, что вы должны включитьusing System;
в свой счетчик байтов дляConsole
вызова.540000.0
на5.4e5
(end-start).Milliseconds
и наборend
иstart
кDateTime.Now
.8/TimeSpan.TotalMinutes
вместо54e4/TimeSpan.TotalMilliseconds
. Кроме того, путем быстрой проверки с использованием «Math.Round (value, 2)» вместоvalue.ToString("n2")
сохранения нескольких символов, частично потому, что требовалось меньше скобокC ++, 150 байт
источник
#define
и вместо этого сделаетеvoid f(){for(int i=0,auto s=clock();i++<9;){getchar();}std::cout<<round(6000/(double(clock()-s)/8000))/100;}
#define G;getchar()
а затем изменитьclock();G
наclock()G
?round
.Python + curses, 122 байта
Требуется
curses
модуль для загрузки.-9 байт благодаря Фелипе Нарди Батисте
источник
vba, 57
нажмите ввод или нажмите ОК в окне сообщения.
источник
Python 3 , 74 байта
Попробуйте онлайн!
Это даст вам глупые числа в TIO, поскольку он запускает все входы одновременно, но работает.
timeit()
возвращает время выполнения оператора'input()'
в секундах, исключая параметр настройкиinput()
. TIO с задержкой 1 с на вход для проверки.источник
Java 8,
180135 байт-45 байт благодаря @SocraticPhoenix, предлагающему использовать
System.in
напрямую.Анонимная лямбда-функция с неиспользуемым аргументом, которая должна быть назначена методу функционального интерфейса, который выдает
Exception
(пример ниже). Читает из консоли; удары посылаются нажатием enter.Ungolfed с окружающим тестовым кодом
источник
System.in
?System.in.read()
для блокировки, пока не получен ввод. Благодарность! Буду обновлять ответ.C #, 117 байт
Уже есть ответ на C # (.NET Core), на котором он основывается. Добавлена интерполированная строка (которой, по-видимому, не хватает .NET Core) для вывода и сокращенная часть байтов с использованием длинного массива вместо DateTime.
Гуманная версия
источник
R,
7984 байтаРаботает только при использовании Enter, так как это немедленно завершит сканирование. Явно использует
print
в качествеdigits
аргумента обработку округления.источник
Рубин, 58 байт
источник