CCC '10 J3 - Punchy

View as PDF

Submit solution

Points: 5
Time limit: 2.0s
Memory limit: 256M

Problem type
Canadian Computing Competition: 2010 Stage 1, Junior #3

In the early days of computing, instructions had to be "punched" onto rectangular cards, one instruction per card. This card deck was then fed into a card reader so the program could be read and executed. Students put elastic bands around their card deck, and, often, carried their cards in a box for fear that they would become rearranged, and thus, their program would be incorrect.

Poor Bill though… he left his cards right near a window and the wind blew his neat deck of cards all over the place, and thus his program is out of order! Bill decides to pick up the cards in some random order and then execute the program.

Write a program to read and execute the commands in Bill's "new" program.

Input Specification

The programming language that Bill is using has only two variables (A and B) and seven different types of instructions.

Initially, the variables A and B contain the value 0.

There is one instruction per line. An instruction is an integer in the range 1 \dots 7, possibly followed by a variable name, which in turn is possibly followed by either a number or a variable.

In all instructions below, the variable X or Y may refer to either A or B. The specific instructions are:

  • 1 X n means set the variable X to the integer value n;
  • 2 X means output the value of variable X to the screen;
  • 3 X Y means calculate X + Y and store the value in variable X;
  • 4 X Y means calculate X \times Y and store the value in variable X;
  • 5 X Y means calculate X - Y and store the value in variable X;
  • 6 X Y means calculate the quotient of \frac{X}{Y} and store the value in variable X as an integer, discarding the remainder.
  • 7 means stop execution of this program.

You may assume that all division instructions do not cause a division by zero, and that all other operations (including instruction 1) do not cause the computed/stored value to be larger than 10\,000 or smaller than -10\,000.

(To clarify division of negative numbers, \frac{-3}{2} and \frac{3}{-2} both have quotient -1 and \frac{-3}{-2} has quotient 1.)

Output Specification

Your program should output the value of the indicated variables, one integer per line, until the "stop" instruction has been read in, at which time your program should stop execution.

Sample Input

1 A 3
1 B 4
2 B
2 A
3 A B
2 A
5 A A
2 A
2 B
7

Sample Output

4
3
7
0
4

Comments


  • -2
    Badmode  commented on Nov. 29, 2020, 11:55 p.m.

    What is the least amount of lines possible on this question for Python?


    • 1
      yea  commented on June 6, 2022, 12:26 a.m. edited

      i mean i did it in 49 lines but I'm sure that's not the shortest way to do it, I guess one way you can check is by looking at other people's code who got full marks.

      Edit: I found 1 with 19 lines


  • 3
    Orion222  commented on May 10, 2020, 1:02 a.m.

    bruh why test case 5 not working


    • 5
      iWolf22  commented on Nov. 13, 2020, 11:05 p.m.

      I had the same problem, make sure all your numbers are whole numbers by using int() or else it won't be marked correctly.


  • 4
    Ironboy4000  commented on Dec. 30, 2018, 9:58 p.m.

    Can someone tell me what's wrong with my code? Thanks for your help.


    • 4
      JustinXu  commented on Dec. 31, 2018, 1:13 a.m.

      Notice that X and Y can refer to both A and A or B and B. I suggest you re-look the parts in your code when X and Y are both A's. Also be careful that A/B ≠ B/A.


      • 8
        Ironboy4000  commented on Dec. 31, 2018, 2:38 a.m. edited

        Thanks for your response, JustinXu, but I'm already aware of this, and my code considers this as it functions.