В этом вопросе мы сосредоточимся только на похудении, выполняя упражнения, хотя есть еще много способов похудеть.
Разные виды спорта сжигают разное количество калорий.
Например, игра в бильярд в течение часа может сжечь 102 калории [1] , в то время как игра в баскетбол в течение 15 минут может уже сжечь 119 калорий [1] , что облегчает потерю веса, играя в баскетбол, по крайней мере с некоторых точек зрения.
Точный способ оценить легкость - это разделить количество сожженных калорий на необходимое время, что дает нам индекс легкости (EI).
Например, ограждение в течение 15 минут может сжечь 85 калорий, что дает EI 85/15.
Вам будет предоставлен список в этом формате:
[["fencing",15,85],["billiards",60,102],["basketball",15,119]]
или другой формат, который вы хотите.
Затем вы выводите виды спорта, которые имеют самый высокий EI.
TL; DR
Учитывая список кортежей, [name,value1,value2]
выведите name
where value2/value1
.
Ограничения
- Вы не можете производить какие-либо действительные числа, которые не являются целыми числами в процессе.
- Вы не можете использовать любую встроенную дробь.
Технические характеристики (спецификации)
- Если существует более одного имени, которое удовлетворяет результату, вы можете вывести любое непустое их подмножество или любой их элемент.
- Имя будет соответствовать регулярному выражению
/^[a-z]+$/
, что означает, что оно будет состоять только из строчного латинского стандартного алфавита. - Список не будет пустым.
Прецедент
Входные данные:
[["fencing",15,85],["billiards",60,102],["basketball",15,119]]
Выход:
basketball
Ссылки
источник
Ответы:
Python 2, 51 байт
Делает очевидную вещь, находя запись с наибольшим отношением, но обходит запрет на поплавки, сначала умножая числитель на огромную зависящую от входа степень 10 перед делением по полу.
Я докажу, что этот коэффициент достаточно велик, чтобы разделение по полу действовало так же, как деление по этажам.
Утверждение: если a 1 / b 1 > a 2 / b 2 , то floor (Na 1 / b 1 )> floor (Na 2 / b 2 ) для любого N≥b 1 b 2 .
Доказательство: обратите внимание, что a 1 / b 1 - a 2 / b 2 кратно 1 / b 1 b 2 , поэтому a 1 / b 1 - a 2 / b 2 > 0 подразумевает, что
Затем, умножив обе стороны на N,
Таким образом, поскольку Na 1 / b 1 и Na 2 / b 2 различаются как минимум на 1, их соответствующие этажи различны. ∎
Теперь обратите внимание, что произведение b 1, b 2 имеет длину цифр, не превышающую их общую длину, которая меньше длины строки ввода. Поскольку вход находится в базе 10, достаточно использовать 10 в степени его длины,
N=10**len(`l`)
чтобы получить число с большим количеством цифр, чем оно, гарантируя условие.источник
9
может работать вместо10
?[('y', 10**296+1, 1), ('x', 10**296, 1)]
.JavaScript (ES6), 43 байта
Или в качестве альтернативы
Сортировка, конечно, излишня для этого, но
reduce
заняла бы 46 байтов:источник
MATL , 8 байт
Все вычисленные числа являются целочисленными значениями. Сначала вычисляется произведение знаменателей (это целое число). Этот продукт делится на каждый знаменатель (который также дает целое число). Каждый результат затем умножается на соответствующий числитель. Это дает целочисленное значение, пропорциональное исходной дроби.
Формат ввода: числовой массив с знаменателями, числовой массив с числителями, массив ячеек со спортивными именами:
Если минимизаторов несколько, выводится первый.
Попробуйте онлайн!
источник
Дьялог АПЛ , 18 байт
Запрашивает время, затем калории, затем имена активности.
⎕
подскажите (на раз)(∧/÷⊢)
LCM∧/
времени, деленного÷
на время⊢
(поэтому не плавает)⎕×
подскажите (для калорий) и умножьте на них(⊢⍳⌈/)
в этом⊢
, получить положение⍳
максимального значения⌈/
⎕⊃⍨
подскажите (для действий), затем выберите n- й.Пример выполнения:
источник
Брахилог , 42 байта
Попробуйте онлайн!
/
выше целочисленное деление, потому что обаJ*D
иI
целые числа (D
является кратнымI
фактически).объяснение
Основной предикат:
Input = [["string":mins:cals]:...]
Предикат 1:
источник
Сетчатка ,
6462 байтаКоличество байтов предполагает кодировку ISO 8859-1.
Ввод - один вид спорта на строку в формате
value1 value2 name
. Вывод является одним из максимальных результатов (если есть связь, он даст тот, у которого наибольшее значение,value1
и если они также связаны, если лексикографически большеname
).Обратите внимание, что это очень медленно (по тем же причинам, что и вчерашний сбой Stack Exchange ). Чтобы запустить его в разумные сроки, вы можете добавить
\b
перед(0+)
(что не повлияет на то, как он обрабатывает входные данные, но сильно ограничивает возврат этого регулярного выражения). Я сделал это в тестовой ссылке ниже.Попробуйте онлайн!
источник
Python 2,
5554 байтаСпасибо @xnor за вывод 1 байта!
Проверьте это на Ideone .
источник
sorted
могу взять функцию сравнения с двумя входами, я собирался взломать это вместе.lambda(a,b,c),(d,e,f):b*f-c*e
.Haskell
7270 байтИспользование :
источник
Mathematica, 46 байт
Порядок кортежей должен быть
{value1,value2,name}
. Возвращает полный набор всех максимальных результатов.Я работаю вокруг использования дробей, умножая числитель на LCM всех
value1
s до деления.источник
R,
4240 байтПринимает ввод в виде фрейма данных с типами столбцов строки (он также работает с факторами), числовой, числовой.
%/%
целочисленное деление.Это мое первое представление, дайте мне знать, если это в рамках правил.
Редактировать: Оказывается, вам не нужны фигурные скобки для определения однострочной функции.
источник
C ++ 14, 89 байт
Лямбда-функция:
Ungolfed:
Использование:
источник
Haskell, 46 байтов
РЕДАКТИРОВАТЬ: Это решение не работает, как указал Дэмиен, это не решает проблему. Я ищу хорошее решение.
источник
s(_,(x,y))=divMod y x
корочеs(n,(x,y))=(divMod y x,n)
g=snd.maximum.map s
тоже ..divMod a b < divMod c d
не эквивалентноa/b < c/d
.divMod 19 4 < divMod 55 12
но19/4 > 55/12
VBA Excel, 109 байт
Вызвать в ячейке электронной таблицы ссылку на таблицу действий и параметров:
источник
05AB1E ,
67 байт+1 байт для исправления моего подхода к divmod ( см. Этот комментарий к другому ответу) ) путем переноса @LuisMendo @LuisMendo на MATL , так что не забудьте его поддержать!
Входные данные аналогичны его ответу: три отдельных списка, представляющих собой целочисленный список знаменателей; целочисленный список номинаторов; и список строк имен.
Попробуйте онлайн или проверьте еще несколько тестов .
Объяснение:
источник
Java 8, 128 байт
источник
Рубин, 72 байта
Я действительно думал, что это будет короче ...
Ввод взят из STDIN в формате
name time calories
О, хорошо, любая помощь, чтобы сократить это ценится.
источник
Clojure, 63 байта
источник
PHP , 98 байт
Использовал более простой формат ввода, чем в примере, просто так:
ограждения, 15,85, бильярд, 60102, баскетбол, 15119
Попробуйте онлайн!
источник