問題:
あなたの仕事は、入力として身長(メートル単位)と体重(キログラム単位)を取り、対応するBMIカテゴリを出力するプログラムを書くことです。
BMIは、身長に対する体重の比率の尺度です。それは多くの人々にとって古く不正確です、しかしそれはここでは重要ではありません!
BMIは、次の式を使用して計算できます。
BMI = (mass in kilograms) / (height in meters)^2
カテゴリは次のように定義されます。
BMI <18.5:「体重不足」
18.5 <= BMI <25:「通常」
25 <= BMI:「太りすぎ」
挑戦のために、私はすべての「極端な」カテゴリーを無視しています。また、「25」のようないくつかの数値は2つのカテゴリの間にあるため、明確な答えが得られるように境界をわずかに調整しました。
関数または完全なプログラムのいずれかを作成できます。
入力:
入力は、任意の合理的な形式にすることができます。2つの独立した引数または単一の文字列としての2つの数値(または文字列)。2つの数字の配列/リスト、「weight」および「height」キーのある辞書... 10進数の値がサポートされる必要があります。入力は常に有効であると仮定できます(負の値はなく、高さは決して0になりません)。
出力:
出力は、大文字と小文字を区別しないカテゴリ名を含む文字列です。文字列は大文字と小文字を無視して、上記とまったく同じカテゴリ名に一致する必要があります。これは、stdoutへの出力、返される(関数の場合)、またはファイルへの書き込みが可能です。
テストケース(重量、高さ=>結果):
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)
実装例を示す疑似コードを次に示します。
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"
これはコードゴルフなので、バイト数が最も少なくなります。
(はい、このタスクはほとんどの言語で非常に簡単です。最近の課題のほとんどは通常よりも難しいようですので、よりアクセスしやすいものを投稿したいと思いました)。
注意!このチャレンジを投稿してから1時間後、コメントで指摘されている範囲に「穴」があったため、範囲をわずかに変更する必要がありました。新しい範囲をご覧ください。