Advertisement
Guest User

Untitled

a guest
Mar 18th, 2019
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Erlang 1.68 KB | None | 0 0
  1. %%%-------------------------------------------------------------------
  2. %%% @author eryks
  3. %%% @copyright (C) 2019, <COMPANY>
  4. %%% @doc
  5. %%%
  6. %%% @end
  7. %%% Created : 13. mar 2019 14:07
  8. %%%-------------------------------------------------------------------
  9. -module(onp).
  10. -author("eryks").
  11.  
  12. %% API
  13. -export([onp/1]).
  14.  
  15. onp(List) ->
  16.   Elements = string:tokens(List, " "),
  17.   [Head | Tail] = Elements,
  18.   onp(Tail, [Head]).
  19.  
  20. onp([Head | Tail], Stack) ->
  21.   case Head of
  22.     "+" ->
  23.       [One | OneStack] = Stack,
  24.       [Two | TwoStack] = OneStack,
  25.       NewResult = list_to_integer(Two) + list_to_integer(One),
  26.       ThreeStack = [integer_to_list(NewResult) | TwoStack],
  27.       onp(Tail, ThreeStack);
  28.     "*" ->
  29.       [One | OneStack] = Stack,
  30.       [Two | TwoStack] = OneStack,
  31.       NewResult = list_to_integer(Two) * list_to_integer(One),
  32.       ThreeStack = [integer_to_list(NewResult) | TwoStack],
  33.       onp(Tail, ThreeStack);
  34.     "-" ->
  35.       [One | OneStack] = Stack,
  36.       [Two | TwoStack] = OneStack,
  37.       NewResult = list_to_integer(Two) - list_to_integer(One),
  38.       ThreeStack = [integer_to_list(NewResult) | TwoStack],
  39.       onp(Tail, ThreeStack);
  40.     "/" ->
  41.       [One | OneStack] = Stack,
  42.       [Two | TwoStack] = OneStack,
  43.       NewResult = list_to_integer(Two) div list_to_integer(One),
  44.       ThreeStack = [integer_to_list(NewResult) | TwoStack],
  45.       onp(Tail, ThreeStack);
  46.     "sqrt" ->
  47.       [One | OneStack] = Stack,
  48.       NewResult = math:sqrt(list_to_integer(One)),
  49.       NewerResult = NewResult,
  50.       TwoStack = [float_to_list(NewerResult) | OneStack],
  51.       onp(Tail, TwoStack);
  52.     _ -> onp(Tail, [Head | Stack])
  53.   end;
  54.  
  55. onp([], [Last]) ->
  56.   Last.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement