devych

about everything

CodeWars - Calculating with Functions 알고리즘 풀이

2019-12-26 devychalgorithm

img

CodeWars Calculating with Functions

Calculating with Functions 알고리즘 문제는 숫자함수와 계산함수 두종류를 이용하여 1의 자리 숫자 두개를 계산 한 값을 return 하는 풀이를 요구한다.

아래 그림을 통해 자세한 설명을 볼 수 있다.

calculating 그림을 클릭하면 Codewars Calculating with Functions 알고리즘 문제 페이지로 이동합니다.

문제 접근 방식

숫자 함수는 인자의 유무를 확인하여 계산함수를 인자로 받는지 확인한다. 계산함수를 인자로 받지 않는 경우, 단순하게 숫자함수는 본인 숫자만 return하면 된다. 그렇지 않은 경우 계산함수를 받아 계산함수의 이름에 따라 수학기호(+,-,*,/)를 구분하여 계산된 값을 return 하도록 한다.

Calculating with Functions javascript 풀이 Code

function compute(arr, val) {
  if (arr[0] === "plus") {
    return val + arr[1];
  } else if (arr[0] === "minus") {
    return val - arr[1];
  } else if (arr[0] === "times") {
    return val * arr[1];
  } else if (arr[0] === "dividedBy") {
    return Math.floor(val / arr[1]);
  }
}
function zero(arg) {
  return !arg ? 0 : compute([...arg], 0);
}
function one(arg) {
  return !arg ? 1 : compute([...arg], 1);
}
function two(arg) {
  return !arg ? 2 : compute([...arg], 2);
}
function three(arg) {
  return !arg ? 3 : compute([...arg], 3);
}
function four(arg) {
  return !arg ? 4 : compute([...arg], 4);
}
function five(arg) {
  return !arg ? 5 : compute([...arg], 5);
}
function six(arg) {
  return !arg ? 6 : compute([...arg], 6);
}
function seven(arg) {
  return !arg ? 7 : compute([...arg], 7);
}
function eight(arg) {
  return !arg ? 8 : compute([...arg], 8);
}
function nine(arg) {
  return !arg ? 9 : compute([...arg], 9);
}

function plus(arg) {
  return ["plus", arg];
}
function minus(arg) {
  return ["minus", arg];
}
function times(arg) {
  return ["times", arg];
}
function dividedBy(arg) {
  return ["dividedBy", arg];
}