Data update
This commit is contained in:
parent
4bb20c9b71
commit
cbaf4c4b64
12390 changed files with 318560 additions and 27248 deletions
|
|
@ -0,0 +1,36 @@
|
|||
rpn <- function(s) {
|
||||
stack <- list()
|
||||
ops <- strsplit(s, " ")[[1]]
|
||||
|
||||
for (op in ops) {
|
||||
if (op %in% c("+", "-", "*", "/", "^")) {
|
||||
arg2 <- stack[[length(stack)]]
|
||||
arg1 <- stack[[length(stack) - 1]]
|
||||
stack <- stack[-c(length(stack), length(stack) - 1)]
|
||||
|
||||
if (op == "+") {
|
||||
res <- as.numeric(arg1) + as.numeric(arg2)
|
||||
} else if (op == "-") {
|
||||
res <- as.numeric(arg1) - as.numeric(arg2)
|
||||
} else if (op == "*") {
|
||||
res <- as.numeric(arg1) * as.numeric(arg2)
|
||||
} else if (op == "/") {
|
||||
res <- as.numeric(arg1) / as.numeric(arg2)
|
||||
} else if (op == "^") {
|
||||
res <- as.numeric(arg1) ^ as.numeric(arg2)
|
||||
}
|
||||
|
||||
stack <- c(stack, res)
|
||||
} else {
|
||||
stack <- c(stack, as.numeric(op))
|
||||
}
|
||||
cat(op, ": ", paste(stack, collapse = ", "), "\n", sep = "")
|
||||
}
|
||||
|
||||
if (length(stack) != 1) {
|
||||
stop(paste("invalid RPN expression:", s))
|
||||
}
|
||||
return(stack[[1]])
|
||||
}
|
||||
|
||||
rpn("3 4 2 * 1 5 - 2 3 ^ ^ / +")
|
||||
Loading…
Add table
Add a link
Reference in a new issue