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. (The >
are there for formatting purposes in this
write-up, but should not be included in your program output).
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.
|_| | |_| | | |
To submit your work, follow the same procedure you used for Reading 00:
$ cd path/to/cse-30872-fa17-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-fa17/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. ↩