문제:
당신의 임무는 높이 (미터)와 무게 (킬로그램)를 입력으로 받아 해당 BMI 범주를 출력하는 프로그램을 작성하는 것입니다.
BMI 는 체중과 키의 비율을 측정 한 것입니다. 그것은 많은 사람들에게 날짜가 있고 부정확 하지만, 여기서는 중요하지 않습니다!
BMI는 다음 방정식을 사용하여 계산할 수 있습니다.
BMI = (mass in kilograms) / (height in meters)^2
범주는 다음과 같이 정의됩니다.
BMI <18.5 : "언더 웨이트"
18.5 <= BMI <25 : "정상"
25 <= BMI : "과체중"
도전을 위해, 나는 모든 "극단적 인"카테고리를 무시하고 있습니다. 또한 "25"와 같은 숫자가 두 범주 사이에 있기 때문에 경계를 약간 조정하여 명확한 대답을 얻었습니다.
함수 또는 전체 프로그램을 작성할 수 있습니다.
입력:
입력은 합리적인 형태 일 수 있습니다. 두 개의 개별 인수 또는 단일 문자열로 된 두 개의 숫자 (또는 문자열). "무게"및 "높이"키가있는 사전 인 2 개의 숫자로 구성된 배열 / 목록 ... 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 시간 후에 언급 한 범위에 "구멍"이 있었기 때문에 범위를 약간 수정해야했습니다. 새로운 범위를 참조하십시오.