Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1,19 @@
|
|||
def evaluateRPN(expression) {
|
||||
def stack = [] as Stack
|
||||
def binaryOp = { action -> return { action.call(stack.pop(), stack.pop()) } }
|
||||
def actions = [
|
||||
'+': binaryOp { a, b -> b + a },
|
||||
'-': binaryOp { a, b -> b - a },
|
||||
'*': binaryOp { a, b -> b * a },
|
||||
'/': binaryOp { a, b -> b / a },
|
||||
'^': binaryOp { a, b -> b ** a }
|
||||
]
|
||||
expression.split(' ').each { item ->
|
||||
def action = actions[item] ?: { item as BigDecimal }
|
||||
stack.push(action.call())
|
||||
|
||||
println "$item: $stack"
|
||||
}
|
||||
assert stack.size() == 1 : "Unbalanced Expression: $expression ($stack)"
|
||||
stack.pop()
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
println evaluateRPN('3 4 2 * 1 5 - 2 3 ^ ^ / +')
|
||||
Loading…
Add table
Add a link
Reference in a new issue