Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- %%%-------------------------------------------------------------------
- %%% @author eryks
- %%% @copyright (C) 2019, <COMPANY>
- %%% @doc
- %%%
- %%% @end
- %%% Created : 13. mar 2019 14:07
- %%%-------------------------------------------------------------------
- -module(onp).
- -author("eryks").
- %% API
- -export([onp/1]).
- onp(List) ->
- Elements = string:tokens(List, " "),
- [Head | Tail] = Elements,
- onp(Tail, [Head]).
- onp([Head | Tail], Stack) ->
- case Head of
- "+" ->
- [One | OneStack] = Stack,
- [Two | TwoStack] = OneStack,
- NewResult = list_to_integer(Two) + list_to_integer(One),
- ThreeStack = [integer_to_list(NewResult) | TwoStack],
- onp(Tail, ThreeStack);
- "*" ->
- [One | OneStack] = Stack,
- [Two | TwoStack] = OneStack,
- NewResult = list_to_integer(Two) * list_to_integer(One),
- ThreeStack = [integer_to_list(NewResult) | TwoStack],
- onp(Tail, ThreeStack);
- "-" ->
- [One | OneStack] = Stack,
- [Two | TwoStack] = OneStack,
- NewResult = list_to_integer(Two) - list_to_integer(One),
- ThreeStack = [integer_to_list(NewResult) | TwoStack],
- onp(Tail, ThreeStack);
- "/" ->
- [One | OneStack] = Stack,
- [Two | TwoStack] = OneStack,
- NewResult = list_to_integer(Two) div list_to_integer(One),
- ThreeStack = [integer_to_list(NewResult) | TwoStack],
- onp(Tail, ThreeStack);
- "sqrt" ->
- [One | OneStack] = Stack,
- NewResult = math:sqrt(list_to_integer(One)),
- NewerResult = NewResult,
- TwoStack = [float_to_list(NewerResult) | OneStack],
- onp(Tail, TwoStack);
- _ -> onp(Tail, [Head | Stack])
- end;
- onp([], [Last]) ->
- Last.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement