Проблема:
Ваше завдання - написати програму, яка приймає як введення висоту (в метрах) і вагу (в кілограмах), і виводить відповідну категорію ІМТ.
ІМТ - це показник відношення ваги до вашого зросту. Він датований і неточний для багатьох людей , але це не має значення!
ІМТ можна обчислити, використовуючи наступне рівняння:
BMI = (mass in kilograms) / (height in meters)^2
Категорії визначатимуться наступним чином:
ІМТ <18,5: "Недостатня вага"
18,5 <= ІМТ <25: "Нормальний"
25 <= ІМТ: "Зайва вага"
Заради виклику я ігнорую всі "крайні" категорії. Крім того, оскільки деякі цифри, наприклад, "25", перебувають між двома категоріями, я трохи відкоригував межі, так що є однозначна відповідь.
Ви можете написати або функцію, або повну програму.
Вхід:
Введення даних може бути в будь-якій розумній формі. Два числа (або рядки), або як 2 окремі аргументи, або як один рядок. Масив / список з 2 чисел, словник з клавішами "вага" та "висота" ... Десяткові значення повинні підтримуватися. Ви можете припустити, що введення завжди буде дійсним (від’ємних значень немає, а висота ніколи не буде 0).
Вихід:
Виведенням буде рядок, що містить імена категорії, що не залежать від регістру . Рядки повинні відповідати назвам категорій точно, як вище, ігноруючи регістр. Він може бути виведений у stdout, повернутий (у випадку функції) або записаний у файл.
Випробування (вага, зріст => результат):
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"
Це код-гольф, тому виграє найменша кількість байтів.
(Так, це завдання надзвичайно банальне для більшості мов. Більшість проблем останнім часом здаються складнішими, ніж звичайні, тому я подумав, що опублікую більш доступне).
ПРИМІТКА! Через годину після того, як я опублікував цей виклик, мені довелося трохи змінити діапазони, оскільки вказані діапазони мали «дірки», як зазначено в коментарях. Перегляньте нові діапазони.