Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling

Re: (Golf) Reversing RPN Notation

by chipmunk (Parson)
on May 21, 2001 at 22:02 UTC ( #82034=note: print w/ replies, xml ) Need Help??

in reply to (Golf) Reversing RPN Notation

Like I said before, figuring out when to use parens is the tricky part. :) MeowChow pointed out that my solution didn't account for operators which aren't associative ("2 3 4 + -" should be "2 - (3 + 4)" instead of "2 - 3 + 4"). Then I noted that this information was missing from the data provided in the original problem.

I decided to tackle the problem of associativity, and came up with this solution, at 171 characters in the body of the sub:

%o = ('+' => 1, '-' => 1, '*' => 2, '/' => 2, ); %a = ('-' => 1, '/' => 1, ); sub rpn2ltr { for$i(@r=@_){if($p=$o{$i}){$r=$p>($r=pop)->[0]||($p==$r-> [0]&&$a{$i})?"($r->[1])":$r->[1];$l=$p>($l=pop)->[0]?"($l->[ 1])":$l->[1]}push@_,[$p||9,$p?"$l $i $r":$i]}$_[-1][1] }
It's pretty ugly. :/ I hope someone will provide a more elegant solution!

Comment on Re: (Golf) Reversing RPN Notation
Download Code

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://82034]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (5)
As of 2016-02-05 23:42 GMT
Find Nodes?
    Voting Booth?

    How many photographs, souvenirs, artworks, trophies or other decorative objects are displayed in your home?

    Results (210 votes), past polls