알고리즘

x <- 7
y <- 5
x+y

# 식으로 표현하기
cat(x,"+",y,"x+y")
plus <- function(x,y){
  return(cat(x,"+",y,"=",x+y));
}
plus(3,8)

minus <- function(x,y){
  return(cat(x,"-",y,"=",x-y));
}
minus(3,8)

multi<- function(x,y){
  return(cat(x,"*",y,"=",x*y));
}
multi(3,8)


div.float <- function(x,y){
  return(cat(x,"/",y,"=",x/y));
}
div.float(8,3)


div.integer <- function(x,y){
  return(cat(x,"%/%",y,"=",x%/%y));
}
div.integer(8,3)



div.remainder <- function(x,y){
  return(cat(x,"%%",y,"=",x%%y));
}
div.remainder(8,3)



## 계산기
x <- 3
op <- "+"
y <- 2

if(op=="+") plus(x,y) else
if(op=="-") minus(x,y) else
if(op=="*") multi(x,y) else
if(op=="/") div.float(x,y) else
if(op=="%/%") div.integer(x,y) else
if(op=="%%") div.remainder(x,y) else
print("error")


calc <- function(x,op,y){
if(op=="+") plus(x,y) else
if(op=="-") minus(x,y) else
if(op=="*") multi(x,y) else
if(op=="/") div.float(x,y) else
if(op=="%/%") div.integer(x,y) else
if(op=="%%") div.remainder(x,y) else
print("error")
}


# 데이터 유형 구분 -> 셀 수 있을 땐 이산형 count, 셀 수 없을 땐 연속형


calc2 <- function(x,op,y){
    switch (op,
      "+" = plus(x,y),
      "-" = minus(x,y),
      "*" = multi(x,y),
      "/" = div.float(x,y),
      "%/%" = div.integer(x,y),
      "%%" = div.remainder(x,y)
    )
if(op=="+") plus(x,y) else
  if(op=="-") minus(x,y) else
    if(op=="*") multi(x,y) else
      if(op=="/") div.float(x,y) else
        if(op=="%/%") div.integer(x,y) else
          if(op=="%%") div.remainder(x,y) else
            print("error")
}

calc2(5,"*",6)
LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQrslYzqs6DrpqzsppgNCg0KDQpgYGB7cn0NCnggPC0gNw0KeSA8LSA1DQp4K3kNCg0KIyDsi53snLzroZwg7ZGc7ZiE7ZWY6riwDQpjYXQoeCwiKyIseSwieCt5IikNCnBsdXMgPC0gZnVuY3Rpb24oeCx5KXsNCiAgcmV0dXJuKGNhdCh4LCIrIix5LCI9Iix4K3kpKTsNCn0NCnBsdXMoMyw4KQ0KDQptaW51cyA8LSBmdW5jdGlvbih4LHkpew0KICByZXR1cm4oY2F0KHgsIi0iLHksIj0iLHgteSkpOw0KfQ0KbWludXMoMyw4KQ0KDQptdWx0aTwtIGZ1bmN0aW9uKHgseSl7DQogIHJldHVybihjYXQoeCwiKiIseSwiPSIseCp5KSk7DQp9DQptdWx0aSgzLDgpDQoNCg0KZGl2LmZsb2F0IDwtIGZ1bmN0aW9uKHgseSl7DQogIHJldHVybihjYXQoeCwiLyIseSwiPSIseC95KSk7DQp9DQpkaXYuZmxvYXQoOCwzKQ0KDQoNCmRpdi5pbnRlZ2VyIDwtIGZ1bmN0aW9uKHgseSl7DQogIHJldHVybihjYXQoeCwiJS8lIix5LCI9Iix4JS8leSkpOw0KfQ0KZGl2LmludGVnZXIoOCwzKQ0KDQoNCg0KZGl2LnJlbWFpbmRlciA8LSBmdW5jdGlvbih4LHkpew0KICByZXR1cm4oY2F0KHgsIiUlIix5LCI9Iix4JSV5KSk7DQp9DQpkaXYucmVtYWluZGVyKDgsMykNCg0KDQoNCiMjIOqzhOyCsOq4sA0KeCA8LSAzDQpvcCA8LSAiKyINCnkgPC0gMg0KDQppZihvcD09IisiKSBwbHVzKHgseSkgZWxzZQ0KaWYob3A9PSItIikgbWludXMoeCx5KSBlbHNlDQppZihvcD09IioiKSBtdWx0aSh4LHkpIGVsc2UNCmlmKG9wPT0iLyIpIGRpdi5mbG9hdCh4LHkpIGVsc2UNCmlmKG9wPT0iJS8lIikgZGl2LmludGVnZXIoeCx5KSBlbHNlDQppZihvcD09IiUlIikgZGl2LnJlbWFpbmRlcih4LHkpIGVsc2UNCnByaW50KCJlcnJvciIpDQoNCg0KY2FsYyA8LSBmdW5jdGlvbih4LG9wLHkpew0KaWYob3A9PSIrIikgcGx1cyh4LHkpIGVsc2UNCmlmKG9wPT0iLSIpIG1pbnVzKHgseSkgZWxzZQ0KaWYob3A9PSIqIikgbXVsdGkoeCx5KSBlbHNlDQppZihvcD09Ii8iKSBkaXYuZmxvYXQoeCx5KSBlbHNlDQppZihvcD09IiUvJSIpIGRpdi5pbnRlZ2VyKHgseSkgZWxzZQ0KaWYob3A9PSIlJSIpIGRpdi5yZW1haW5kZXIoeCx5KSBlbHNlDQpwcmludCgiZXJyb3IiKQ0KfQ0KDQoNCiMg642w7J207YSwIOycoO2YlSDqtazrtoQgLT4g7IWAIOyImCDsnojsnYQg65WQIOydtOyCsO2YlSBjb3VudCwg7IWAIOyImCDsl4bsnYQg65WQIOyXsOyGje2YlQ0KDQoNCmNhbGMyIDwtIGZ1bmN0aW9uKHgsb3AseSl7DQogICAgc3dpdGNoIChvcCwNCiAgICAgICIrIiA9IHBsdXMoeCx5KSwNCiAgICAgICItIiA9IG1pbnVzKHgseSksDQogICAgICAiKiIgPSBtdWx0aSh4LHkpLA0KICAgICAgIi8iID0gZGl2LmZsb2F0KHgseSksDQogICAgICAiJS8lIiA9IGRpdi5pbnRlZ2VyKHgseSksDQogICAgICAiJSUiID0gZGl2LnJlbWFpbmRlcih4LHkpDQogICAgKQ0KaWYob3A9PSIrIikgcGx1cyh4LHkpIGVsc2UNCiAgaWYob3A9PSItIikgbWludXMoeCx5KSBlbHNlDQogICAgaWYob3A9PSIqIikgbXVsdGkoeCx5KSBlbHNlDQogICAgICBpZihvcD09Ii8iKSBkaXYuZmxvYXQoeCx5KSBlbHNlDQogICAgICAgIGlmKG9wPT0iJS8lIikgZGl2LmludGVnZXIoeCx5KSBlbHNlDQogICAgICAgICAgaWYob3A9PSIlJSIpIGRpdi5yZW1haW5kZXIoeCx5KSBlbHNlDQogICAgICAgICAgICBwcmludCgiZXJyb3IiKQ0KfQ0KDQpjYWxjMig1LCIqIiw2KQ0KDQoNCmBgYA0KDQo=