RosettaCodeData/Task/Parsing-RPN-calculator-algorithm/PascalABC.NET/parsing-rpn-calculator-algorithm.pas
2025-06-11 20:16:52 -04:00

15 lines
372 B
ObjectPascal

##
var a := new Stack<real>;
var b := new Dictionary<string, (real, real) -> real>;
b['+'] := (x, y) -> y + x;
b['-'] := (x, y) -> y - x;
b['*'] := (x, y) -> y * x;
b['/'] := (x, y) -> y / x;
b['^'] := (x, y) -> y ** x;
foreach var c in '3 4 2 * 1 5 - 2 3 ^ ^ / +'.Split do
begin
if c in b then a.Push(b[c](a.Pop, a.Pop))
else a.Push(c.ToReal);
println(c, a);
end;