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:
_ _ _| _|
Each line in the input will be a RPN expression that you have to calculate.
4 5 8 * 1 +
For each RPN expression, output the calculation as a LED number.
|_| | |_| | | |
Note: All calculations are done using integer arithmetic; there are no decimals.
To submit your work, follow the same procedure you used for Reading 01:
$ cd path/to/cse-34872-su19-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 challenge03 # Create and checkout challenge03 branch $ $EDITOR challenge03/program.cpp # Edit your code $ git add challenge03/program.cpp # Stage your changes $ git commit -m "challenge03: done" # Commit your changes $ git push -u origin challenge03 # Send changes to GitLab
To check your code, you can use the .scripts/submit.py
script or curl:
$ .scripts/submit.py Submitting challenge03 assignment ... Submitting challenge03 code ... Result Success Score 6.00 $ curl -F source=@challenge03/program.cpp https://dredd.h4x0r.space/code/cse-34872-su19/challenge03 {"score": 6, "result": "Success"}
Once you have commited your work and pushed it to GitLab, member to create a merge request.
Woz spilled my french fries. I will never forget. ↩