Problème:
Votre tâche consiste à écrire un programme qui prend en entrée une hauteur (en mètres) et un poids (en kilogrammes), et sort la catégorie d'IMC correspondante.
L'IMC est une mesure du rapport de votre poids à votre taille. C'est daté et inexact pour beaucoup de gens , mais ça n'a pas d'importance ici!
L'IMC peut être calculé à l'aide de l'équation suivante:
BMI = (mass in kilograms) / (height in meters)^2
Les catégories seront définies comme suit:
IMC <18,5: «insuffisance pondérale»
18,5 <= IMC <25: "Normal"
25 <= IMC: "Surpoids"
Pour relever le défi, j'ignore toutes les catégories «extrêmes». De plus, comme certains nombres comme "25" se situent entre 2 catégories, j'ai légèrement ajusté les limites pour qu'il y ait une réponse définitive.
Vous pouvez écrire soit une fonction, soit un programme complet.
Contribution:
L'entrée peut être sous n'importe quelle forme raisonnable. Deux nombres (ou chaînes), soit sous forme de 2 arguments séparés, soit sous forme de chaîne unique. Un tableau / liste de 2 nombres, un dictionnaire avec les touches "poids" et "hauteur" ... Les valeurs décimales doivent être prises en charge. Vous pouvez supposer que l'entrée sera toujours valide (pas de valeurs négatives et la hauteur ne sera jamais 0).
Sortie:
La sortie sera une chaîne contenant les noms de catégorie insensibles à la casse . Les chaînes doivent correspondre exactement aux noms de catégorie ci-dessus, en ignorant la casse. Il peut être sorti sur la sortie standard, retourné (dans le cas d'une fonction) ou écrit dans un fichier.
Cas de test (poids, taille => résultat):
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)
Voici un pseudocode qui montre un exemple d'implémentation:
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"
Il s'agit de code-golf, donc le plus petit nombre d'octets gagne.
(Oui, cette tâche est extrêmement triviale dans la plupart des langues. La plupart des défis semblent être plus difficiles ces derniers temps que la normale, j'ai donc pensé en publier une plus accessible).
REMARQUE! Une heure après avoir posté ce défi, j'ai dû modifier légèrement les gammes car les gammes comme indiqué avaient des "trous" comme indiqué dans les commentaires. Veuillez voir les nouvelles gammes.