Проблема:
Ваша задача - написать программу, которая принимает в качестве входных данных рост (в метрах) и вес (в килограммах) и выводит соответствующую категорию ИМТ.
ИМТ - это показатель отношения вашего веса к вашему росту. Это датировано и неточно для многих людей , но это не имеет значения здесь!
ИМТ может быть рассчитан с использованием следующего уравнения:
BMI = (mass in kilograms) / (height in meters)^2
Категории будут определены следующим образом:
ИМТ <18,5: «Недостаточный вес»
18,5 <= ИМТ <25: «Нормальный»
25 <= ИМТ: «Избыточный вес»
Ради вызова я игнорирую все "экстремальные" категории. Кроме того, поскольку некоторые числа, такие как «25», расположены между двумя категориями, я немного скорректировал границы, чтобы получить определенный ответ.
Вы можете написать либо функцию, либо полную программу.
Входные данные:
Ввод может быть в любой разумной форме. Два числа (или строки), либо как 2 отдельных аргумента, либо как одна строка. Массив / список из 2 чисел, словарь с ключами "weight" и "height" ... Должны поддерживаться десятичные значения. Вы можете предположить, что ввод всегда будет действительным (без отрицательных значений, а высота никогда не будет 0).
Выход:
Вывод будет строкой, содержащей имена категорий без учета регистра . Строки должны соответствовать именам категорий точно так же, как указано выше, без учета регистра. Он может быть выведен на стандартный вывод, возвращен (в случае функции) или записан в файл.
Тестовые случаи (вес, рост => результат):
80, 1 => "Overweight"
80, 2 => "Normal"
80, 3 => "Underweight"
50, 1 => "Overweight"
50, 1.5 => "Normal"
50, 2 => "Underweight"
Edge Cases:
41, 1.5 => "Underweight" (18.2 BMI)
42, 1.5 => "Normal" (18.667 BMI)
56, 1.5 => "Normal" (24.889 BMI)
57, 1.5 => "Overweight" (25.3 BMI)
73, 2 => "Underweight" (18.25 BMI)
74, 2 => "Normal" (18.5 BMI)
99, 2 => "Normal" (24.75 BMI)
100, 2 => "Overweight" (25 BMI)
Вот некоторый псевдокод, который показывает пример реализации:
function bmi_category(weight, height):
var bmi = (weight / (height**2))
if (bmi < 18.5):
return "Underweight"
if (18.5 <= bmi < 25):
return "Normal"
if (25 <= bmi):
return "Overweight"
Это код-гольф, поэтому выигрывает наименьшее количество байтов.
(Да, эта задача чрезвычайно тривиальна на большинстве языков. Большинство задач в последнее время кажутся сложнее, чем обычно, поэтому я решил опубликовать более доступную).
НОТА! Спустя час после того, как я опубликовал это задание, мне пришлось немного изменить диапазоны, поскольку указанные диапазоны имели «дыры», как указано в комментариях. Пожалуйста, смотрите новые диапазоны.