Problema:
Il tuo compito è quello di scrivere un programma che accetta come input un'altezza (in metri) e un peso (in chilogrammi) e genera la categoria BMI corrispondente.
BMI è una misura del rapporto tra il tuo peso e la tua altezza. È datato e impreciso per molte persone , ma non importa qui!
L'IMC può essere calcolato usando la seguente equazione:
BMI = (mass in kilograms) / (height in meters)^2
Le categorie saranno definite come segue:
BMI <18.5: "Sottopeso"
18.5 <= BMI <25: "Normale"
25 <= BMI: "Sovrappeso"
Per il bene della sfida, sto ignorando tutte le categorie "estreme". Inoltre, poiché alcuni numeri come "25" si collocano tra 2 categorie, ho modificato leggermente i limiti in modo che ci sia una risposta definitiva.
È possibile scrivere una funzione o un programma completo.
Ingresso:
L'input può essere in qualsiasi forma ragionevole. Due numeri (o stringhe), come 2 argomenti separati o come singola stringa. Un array / elenco di 2 numeri, un dizionario con i tasti "peso" e "altezza" ... I valori decimali devono essere supportati. Puoi supporre che l'input sia sempre valido (nessun valore negativo e l'altezza non sarà mai 0).
Produzione:
L'output sarà una stringa contenente i nomi delle categorie senza distinzione tra maiuscole e minuscole . Le stringhe devono corrispondere ai nomi delle categorie esattamente come sopra, ignorando il caso. Può essere inviato allo stdout, restituito (nel caso di una funzione) o scritto su file.
Casi di prova (peso, altezza => risultato):
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)
Ecco alcuni pseudocodici che mostrano un'implementazione di esempio:
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"
Questo è code-golf, quindi vince il minor numero di byte.
(Sì, questo compito è estremamente banale nella maggior parte delle lingue. La maggior parte delle sfide ultimamente sembrano essere più difficili del normale, quindi ho pensato di pubblicarne una più accessibile).
NOTA! Un'ora dopo aver pubblicato questa sfida, ho dovuto modificare leggermente gli intervalli poiché gli intervalli come indicato avevano "buchi", come sottolineato nei commenti. Si prega di consultare le nuove gamme.