Vấn đề:
Nhiệm vụ của bạn là viết một chương trình lấy chiều cao (tính bằng mét) và trọng lượng (tính bằng kilôgam) và đưa ra loại BMI tương ứng.
BMI là thước đo tỷ lệ cân nặng của bạn với chiều cao của bạn. Nó có niên đại và không chính xác đối với nhiều người , nhưng điều đó không quan trọng ở đây!
BMI có thể được tính bằng phương trình sau:
BMI = (mass in kilograms) / (height in meters)^2
Các danh mục sẽ được xác định như sau:
BMI <18,5: "Thiếu cân"
18,5 <= BMI <25: "Bình thường"
25 <= BMI: "Thừa cân"
Vì lợi ích của thử thách, tôi bỏ qua tất cả các hạng mục "cực đoan". Ngoài ra, vì một số số như "25" nằm giữa 2 loại, tôi đã điều chỉnh giới hạn một chút để có câu trả lời rõ ràng.
Bạn có thể viết một hàm hoặc một chương trình đầy đủ.
Đầu vào:
Đầu vào có thể ở bất kỳ hình thức hợp lý. Hai số (hoặc chuỗi), là 2 đối số riêng biệt hoặc dưới dạng một chuỗi. Một mảng / danh sách gồm 2 số, một từ điển với các phím "weight" và "height" ... Cần hỗ trợ các giá trị thập phân. Bạn có thể giả sử đầu vào sẽ luôn hợp lệ (không có giá trị âm và chiều cao sẽ không bao giờ bằng 0).
Đầu ra:
Đầu ra sẽ là một chuỗi chứa các tên danh mục không phân biệt chữ hoa chữ thường . Các chuỗi phải khớp với tên danh mục chính xác như trên, bỏ qua trường hợp. Nó có thể được xuất ra thiết bị xuất chuẩn, được trả về (trong trường hợp hàm) hoặc được ghi vào tệp.
Các trường hợp thử nghiệm (cân nặng, chiều cao => kết quả):
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)
Đây là một số mã giả cho thấy việc thực hiện ví dụ:
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"
Đây là môn đánh gôn, vì vậy số byte ít nhất sẽ thắng.
(Vâng, nhiệm vụ này cực kỳ tầm thường trong hầu hết các ngôn ngữ. Hầu hết các thử thách gần đây dường như khó hơn bình thường, vì vậy tôi nghĩ rằng tôi sẽ đăng một bài dễ tiếp cận hơn).
CHÚ THÍCH! Một giờ sau khi tôi đăng thử thách này, tôi đã phải sửa đổi các phạm vi một chút vì các phạm vi như đã nêu có "lỗ hổng" như được chỉ ra trong các bình luận. Xin vui lòng xem các phạm vi mới.