Masalah:
Tugas Anda adalah menulis program yang memasukkan tinggi (dalam meter) dan berat (dalam kilogram), dan menampilkan kategori BMI yang sesuai.
BMI adalah ukuran rasio berat Anda dengan tinggi badan Anda. Itu tanggal dan tidak akurat untuk banyak orang , tetapi itu tidak masalah di sini!
BMI dapat dihitung dengan menggunakan persamaan berikut:
BMI = (mass in kilograms) / (height in meters)^2
Kategori akan didefinisikan sebagai berikut:
BMI <18.5: "Kurang Berat"
18,5 <= BMI <25: "Normal"
25 <= BMI: "Kegemukan"
Demi tantangan, saya mengabaikan semua kategori "ekstrem". Juga, karena beberapa angka seperti "25" berada di antara 2 kategori, saya menyesuaikan batasnya sedikit sehingga ada jawaban yang pasti.
Anda dapat menulis fungsi, atau program lengkap.
Memasukkan:
Masukan bisa dalam bentuk apa pun yang masuk akal. Dua angka (atau string), baik sebagai 2 argumen terpisah, atau sebagai string tunggal. Array / daftar 2 angka, kamus dengan kunci "berat" dan "tinggi" ... Nilai desimal harus didukung. Anda dapat mengasumsikan input akan selalu valid (tidak ada nilai negatif, dan tinggi tidak akan pernah menjadi 0).
Keluaran:
Output akan berupa string yang berisi nama kategori case-insensitive . String harus cocok dengan nama kategori persis seperti di atas, mengabaikan case. Ini bisa menjadi output ke stdout, dikembalikan (dalam kasus fungsi), atau ditulis ke file.
Kasus Uji (berat, tinggi => hasil):
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)
Inilah beberapa pseudocode yang memperlihatkan contoh implementasi:
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"
Ini adalah kode-golf, sehingga jumlah byte terkecil yang menang.
(Ya, tugas ini sangat sepele dalam kebanyakan bahasa. Sebagian besar tantangan belakangan ini tampaknya lebih sulit daripada biasanya, jadi saya pikir saya akan memposting yang lebih mudah diakses).
CATATAN! Satu jam setelah saya memposting tantangan ini, saya harus memodifikasi rentang sedikit karena rentang yang dinyatakan memiliki "lubang" seperti yang ditunjukkan dalam komentar. Silakan lihat rentang baru.