Problem:
Ihre Aufgabe ist es, ein Programm zu schreiben, das eine Größe (in Metern) und ein Gewicht (in Kilogramm) als Eingabe verwendet und die entsprechende BMI-Kategorie ausgibt.
Der BMI ist ein Maß für das Verhältnis Ihres Gewichts zu Ihrer Körpergröße. Es ist veraltet und für viele Leute ungenau , aber das spielt hier keine Rolle!
Der BMI kann mit der folgenden Gleichung berechnet werden:
BMI = (mass in kilograms) / (height in meters)^2
Die Kategorien werden wie folgt definiert:
BMI <18.5: "Untergewicht"
18,5 <= BMI <25: "Normal"
25 <= BMI: "Übergewicht"
Um der Herausforderung willen ignoriere ich alle "extremen" Kategorien. Da einige Zahlen wie "25" zwischen zwei Kategorien liegen, habe ich die Grenzen leicht angepasst, damit es eine eindeutige Antwort gibt.
Sie können entweder eine Funktion oder ein vollständiges Programm schreiben.
Eingang:
Die Eingabe kann in jeder vernünftigen Form erfolgen. Zwei Zahlen (oder Zeichenfolgen), entweder als zwei separate Argumente oder als einzelne Zeichenfolge. Ein Array / eine Liste mit 2 Zahlen, ein Wörterbuch mit den Tasten "weight" und "height" ... Dezimalwerte sollten unterstützt werden. Sie können davon ausgehen, dass die Eingabe immer gültig ist (keine negativen Werte, und die Höhe wird niemals 0 sein).
Ausgabe:
Die Ausgabe erfolgt als Zeichenfolge mit den Kategorienamen , bei denen die Groß- und Kleinschreibung nicht berücksichtigt wird. Die Zeichenfolgen müssen genau wie oben mit den Kategorienamen übereinstimmen, Groß- und Kleinschreibung wird ignoriert. Es kann auf die Standardausgabe ausgegeben, zurückgegeben (im Falle einer Funktion) oder in eine Datei geschrieben werden.
Testfälle (Gewicht, Größe => Ergebnis):
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)
Hier ist ein Pseudocode, der eine Beispielimplementierung zeigt:
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"
Das ist Code-Golf, also gewinnt die geringste Anzahl von Bytes.
(Ja, diese Aufgabe ist in den meisten Sprachen äußerst trivial. Die meisten Herausforderungen scheinen in letzter Zeit schwieriger als normal zu sein, daher dachte ich, ich würde eine zugänglichere Aufgabe veröffentlichen .)
HINWEIS! Eine Stunde, nachdem ich diese Herausforderung gepostet hatte, musste ich die Bereiche geringfügig ändern, da die angegebenen Bereiche "Löcher" aufwiesen, wie in den Kommentaren ausgeführt. Bitte beachten Sie die neuen Sortimente.