ปัญหา:
งานของคุณคือการเขียนโปรแกรมที่ใช้เป็นความสูง (เป็นเมตร) และน้ำหนัก (เป็นกิโลกรัม) และส่งออกหมวดหมู่ BMI ที่เกี่ยวข้อง
ค่าดัชนีมวลกายคือการวัดอัตราส่วนของน้ำหนักต่อส่วนสูงของคุณ มันเก่าและไม่ถูกต้องสำหรับคนจำนวนมากแต่นั่นไม่สำคัญเลย!
BMI สามารถคำนวณได้โดยใช้สมการต่อไปนี้:
BMI = (mass in kilograms) / (height in meters)^2
หมวดหมู่จะถูกกำหนดดังนี้:
BMI <18.5: "Underweight"
18.5 <= BMI <25: "Normal"
25 <= BMI: "น้ำหนักเกิน"
เพื่อความท้าทายฉันจึงเพิกเฉยต่อหมวดหมู่ "สุดขีด" ทั้งหมด นอกจากนี้เนื่องจากตัวเลขบางตัวเช่น "25" อยู่ระหว่าง 2 หมวดหมู่ฉันจึงปรับขอบเขตเล็กน้อยเพื่อให้มีคำตอบที่ชัดเจน
คุณสามารถเขียนฟังก์ชั่นหรือโปรแกรมเต็มรูปแบบ
การป้อนข้อมูล:
อินพุตอาจอยู่ในรูปแบบที่สมเหตุสมผล ตัวเลขสองตัว (หรือสตริง) อาจเป็น 2 อาร์กิวเมนต์แยกกันหรือเป็นสตริงเดียว อาร์เรย์ / รายการของตัวเลข 2 ตัวพจนานุกรมที่มีปุ่ม "น้ำหนัก" และ "ความสูง" ... ควรสนับสนุนค่าทศนิยม คุณสามารถสมมติว่าการป้อนข้อมูลจะถูกต้องเสมอ (ไม่มีค่าลบและความสูงจะไม่เป็น 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"
นี่คือโค้ดกอล์ฟดังนั้นจำนวนไบต์ที่น้อยที่สุดจะเป็นผู้ชนะ
(ใช่งานนี้ยิ่งน่ารำคาญในภาษามากที่สุด. ส่วนใหญ่ของความท้าทายที่เมื่อเร็ว ๆ นี้ดูเหมือนจะหนักกว่าปกติดังนั้นฉันคิดว่าฉันแสดงความเข้าถึงได้มากขึ้นอย่างใดอย่างหนึ่ง)
บันทึก! หนึ่งชั่วโมงหลังจากที่ฉันโพสต์ความท้าทายนี้ฉันต้องแก้ไขช่วงเล็กน้อยเนื่องจากช่วงดังกล่าวมี "รู" ตามที่ระบุไว้ในความคิดเห็น โปรดดูช่วงใหม่