Problem:
Twoim zadaniem jest napisanie programu, który przyjmuje jako dane wejściowe wysokość (w metrach) i wagę (w kilogramach) i wyświetla odpowiednią kategorię BMI.
BMI jest miarą stosunku masy ciała do wzrostu. Jest przestarzały i niedokładny dla wielu osób , ale to nie ma znaczenia tutaj!
BMI można obliczyć za pomocą następującego równania:
BMI = (mass in kilograms) / (height in meters)^2
Kategorie zostaną zdefiniowane w następujący sposób:
BMI <18,5: „Niedowaga”
18,5 <= BMI <25: „Normalny”
25 <= BMI: „Nadwaga”
Ze względu na wyzwanie ignoruję wszystkie kategorie „ekstremalne”. Ponadto, ponieważ niektóre liczby, takie jak „25”, mieszczą się między 2 kategoriami, nieznacznie dostosowałem granice, aby uzyskać jednoznaczną odpowiedź.
Możesz napisać funkcję lub pełny program.
Wkład:
Dane wejściowe mogą mieć dowolną rozsądną formę. Dwie liczby (lub ciągi), albo jako 2 osobne argumenty, albo jako pojedynczy ciąg. Tablica / lista 2 liczb, słownik z klawiszami „waga” i „wzrost” ... Wartości dziesiętne powinny być obsługiwane. Możesz założyć, że dane wejściowe będą zawsze prawidłowe (brak wartości ujemnych, a wysokość nigdy nie będzie wynosić 0).
Wydajność:
Dane wyjściowe będą ciągiem zawierającym nazwy kategorii bez rozróżniania wielkości liter . Ciągi muszą pasować do nazw kategorii dokładnie tak, jak powyżej, ignorując wielkość liter. Może być wyprowadzony na standardowe wyjście, zwrócony (w przypadku funkcji) lub zapisany w pliku.
Przypadki testowe (waga, wzrost => wynik):
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)
Oto pseudokod pokazujący przykładową implementację:
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"
To jest golf golfowy, więc wygrywa najmniejsza liczba bajtów.
(Tak, to zadanie jest niezwykle trywialne w większości języków. Większość wyzwań wydaje się ostatnio trudniejsza niż zwykle, więc pomyślałem, że opublikuję bardziej dostępne).
UWAGA! Godzinę po opublikowaniu tego wyzwania musiałem nieco zmodyfikować zakresy, ponieważ podane zakresy miały „dziury”, jak wskazano w komentarzach. Zobacz nowe zakresy.