Starting from:
$30

$24

Challenge 02: RPN Calculator Solution

Back in the day, when phones were "landlines", computers were the size of minivans, and Brian Kelly was a linebacker at Assumption College, the pride and joy of every engineering geek was his HP scientific calculator. Even the mighty Woz 1 cherished his legendary HP-35.

Of course, since the old timers back then were super awesome (unlike today's young whippersnappers), they didn't use the standard lame infix notation to perform their calculations; instead, they used the uber 1337 reverse polish notation.

That is, rather than entering in <operand
<operation <operand, you would enter in <operand
<operand <operation to perform a calculation on the RPN calculator. Using RPN eliminates the need for paretheses and orders of operation since it is never ambiguous what operands are used with which operation; the operation is always applied to the previous arguments.

This means that if you wanted to perform 3
+ 4, you would have to enter in:

3 4 +
To prove that you too are uber awesome and to relive some of the glory days, you are to create a RPN calulator that can perform: +, -, *, /, and ^. For the sake of nostalgia, you should output the results of the caluation as digital LED numbers as shown here:

_ _ _ _ _ _ _ _
| _| _||_||_ |_ ||_||_|| |
||_ _| | _||_| ||_| _||_|
Each digit is composed of a combination of | and _ and occupies the same amount of space.

For a negative number such as -3, you should display:

_
_ _|
_|
Input
Each line in the input will be a RPN expression that you have to calculate.

Example Input
4
5 8 * 1 +
Output
For each RPN expression, output the calculation as a LED number.

Example Output
|_|
|

|_| |
| |
Submission
To submit your work, follow the same procedure you used for Reading 00:

$ cd path/to/cse-30872-fa18-assignments # Go to assignments repository
$ git checkout master # Make sure we are on master
$ git pull --rebase # Pull any changes from GitLab

$ git checkout -b challenge02 # Create and checkout challenge02 branch

$ $EDITOR challenge02/program.cpp # Edit your code

$ git add challenge02/program.cpp # Stage your changes
$ git commit -m "challenge02: done" # Commit your changes

$ git push -u origin challenge02 # Send changes to GitLab
To check your code, you can use the .scripts/submit.py script or curl:

$ .scripts/submit.py
Submitting challenge02 assignment ...
Submitting challenge02 code ...
Result Success
Score 6.00

$ curl -F source=@challenge02/program.cpp https://dredd.h4x0r.space/code/cse-30872-fa18/challenge02
{"score": 6, "result": "Success"}
Once you have commited your work and pushed it to GitLab, member to create a merge request. Refer to the Reading 01 TA List to determine your corresponding TA for the merge request.


Woz spilled my french fries. I will never forget. ↩

More products