PROG0187 - Butchers

In a large butcher's shop, a number system is usually used where a customer must take a number when he/she comes in and then has to way for his/her turn. Smaller butcher's shops are also getting more and more busy and are forced to use this system. However, the investment is too big for many of them. Therefore, the local self-employed asks you to write such a system.

Assignment

Your assignment consists of making a class NumberSystem. Both the values on the display and the values on the tickets can be numbers from 1 to 99, and in the beginning of the day, both are 0. Your class must have the following methods:

  1. The constructor __init__ gets the current client and the last ticket as optional parameters.
  2. The methods __str__ and __repr__ prints a string representation of the number system. Look at the data that is printed in the example below for the format.
  3. The method currentClient() prints the value on the display.
  4. The method takeNumber() simulates pulling a number. It prints the next number as a result. Keep in mind that the number must be in the interval 1 to 99 and make sure that no numbers are used twice. If no number is available, the method prints None.
  5. The method nextClient() prints the number of the next client on the display. If there is no next client, this method doesn't do anything. If there is a next client, the method currentClient() must print the next number after calling this method.

Example

>>> number = NumberSystem()
>>> number
NumberSystem(0, 0)
>>> print(number)
Current client: 0, last ticket: 0
>>> number.takeNumber()
1
>>> number.takeNumber()
2
>>> number.nextClient()
>>> number.currentClient()
1
>>> number
NumberSystem(1, 2)

Example

>>> number = NumberSystem(96, 98)
>>> number
NumberSystem(96, 98)
>>> print(number)
Current client: 96, last ticket: 98
>>> number.nextClient()
>>> number.nextClient()
>>> print(number)
Current client: 98, last ticket: 98
>>> number.nextClient()
>>> print(number)
Current client: 98, last ticket: 98
>>> number.takeNumber()
99
>>> number.takeNumber()
1

Example

>>> number = NumberSystem(15, 12)
>>> print(number)
Current client: 15, last ticket: 12
>>> number.takeNumber()
13
>>> number.takeNumber()
14
>>> number.takeNumber()
>>> number.nextClient()
>>> number.takeNumber()
15

In een grote slagerij wordt over het algemeen gebruik gemaakt van een nummersysteem waarbij een klant bij het binnenkomen een nummer trekt en vervolgens op een display kan volgen wanneer hij aan de beurt is. Ook bij kleinere slagerijen wordt het steeds drukker en willen steeds meer slagers dit systeem invoeren. Voor velen is dit echter een investering die iets te hoog is. De plaatselijke kleine zelfstandige doet daarom beroep op jou om zo'n systeem te schrijven.

Opgave

Je opdracht bestaat erin een klasse NummerSysteem aan te maken. Zowel de waarden op het display als op de tickets kunnen getallen van 1 tot en met 99 zijn, en aan het begin van de dag staan beiden op 0. Je klasse moet de volgende methoden hebben:

  1. De constructor __init__ krijgt als optionele parameters de huidige klant en het laatste ticket mee.
  2. De methoden __str__ en __repr__ geeft de stringrepresentatie van het nummersysteem terug. Baseer je voor de vorm waarin de gegevens worden uitgeschreven op het voorbeeld hieronder.
  3. De methode huidigeKlant() geeft de waarde op het display terug.
  4. De methode trekNummer() simuleert het trekken van een nummer. Het geeft als resultaat het volgende nummer. Hou er rekening mee dat het nummer in het interval 1 tot en met 99 moet liggen en zorg ervoor dat er geen nummers dubbel gebruikt worden. Indien er geen beschikbaar nummer is, geeft deze methode None terug.
  5. De methode volgendeKlant() laat de display het nummer van de volgende klant tonen. Indien er geen volgende klant is, dan doet deze methode niets. Indien er wel een volgende klant is, dan moet de methode huidigeKlant() na het oproepen van deze methode het volgende nummer teruggeven.

Voorbeeld

>>> nummer = NummerSysteem()
>>> nummer
NummerSysteem(0, 0)
>>> print(nummer)
Huidige klant: 0, laatste ticket: 0
>>> nummer.trekNummer()
1
>>> nummer.trekNummer()
2
>>> nummer.volgendeKlant()
>>> nummer.huidigeKlant()
1
>>> nummer
NummerSysteem(1, 2)

Voorbeeld

>>> nummer = NummerSysteem(96, 98)
>>> nummer
NummerSysteem(96, 98)
>>> print(nummer)
Huidige klant: 96, laatste ticket: 98
>>> nummer.volgendeKlant()
>>> nummer.volgendeKlant()
>>> print(nummer)
Huidige klant: 98, laatste ticket: 98
>>> nummer.volgendeKlant()
>>> print(nummer)
Huidige klant: 98, laatste ticket: 98
>>> nummer.trekNummer()
99
>>> nummer.trekNummer()
1

Voorbeeld

>>> nummer = NummerSysteem(15, 12)
>>> print(nummer)
Huidige klant: 15, laatste ticket: 12
>>> nummer.trekNummer()
13
>>> nummer.trekNummer()
14
>>> nummer.trekNummer()
>>> nummer.volgendeKlant()
>>> nummer.trekNummer()
15

Added by:Peter Dawyndt
Date:2011-11-21
Time limit:5s
Source limit:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Languages:PY_NBC
Resource:None

© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.