Problema:
Su tarea es escribir un programa que tome como entrada una altura (en metros) y un peso (en kilogramos), y genere la categoría de IMC correspondiente.
El IMC es una medida de la relación entre su peso y su altura. Es anticuado e inexacto para muchas personas , ¡pero eso no importa aquí!
El IMC se puede calcular usando la siguiente ecuación:
BMI = (mass in kilograms) / (height in meters)^2
Las categorías se definirán de la siguiente manera:
IMC <18.5: "bajo peso"
18.5 <= IMC <25: "Normal"
25 <= IMC: "Sobrepeso"
Por el bien del desafío, estoy ignorando todas las categorías "extremas". Además, dado que algunos números como "25" se ubican entre 2 categorías, ajusté los límites ligeramente para que haya una respuesta definitiva.
Puede escribir una función o un programa completo.
Entrada:
La entrada puede ser de cualquier forma razonable. Dos números (o cadenas), ya sea como 2 argumentos separados, o como una sola cadena. Una matriz / lista de 2 números, un diccionario con las teclas "peso" y "altura" ... Se deben admitir valores decimales. Puede suponer que la entrada siempre será válida (sin valores negativos, y la altura nunca será 0).
Salida:
La salida será una cadena que contiene los nombres de categoría que no distinguen entre mayúsculas y minúsculas . Las cadenas deben coincidir con los nombres de categoría exactamente como se indica arriba, ignorando mayúsculas y minúsculas. Puede enviarse a la salida estándar, devolverse (en el caso de una función) o escribirse en un archivo.
Casos de prueba (peso, altura => resultado):
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)
Aquí hay un pseudocódigo que muestra una implementación de ejemplo:
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"
Este es el código de golf, por lo que gana la menor cantidad de bytes.
(Sí, esta tarea es extremadamente trivial en la mayoría de los idiomas. La mayoría de los desafíos últimamente parecen ser más difíciles de lo normal, así que pensé en publicar uno más accesible).
¡NOTA! Una hora después de publicar este desafío, tuve que modificar ligeramente los rangos ya que los rangos como se indicaron tenían "agujeros" como se señala en los comentarios. Por favor vea las nuevas gamas.