PROG0501 - Tennis

no tags 

Tennis is a ball sport for two players (singles) or pairs (doubles), where a ball must be passed from one side of the field to the other side by means of a racket. Tennis has its origin in France and has been played in its current form since 1873. The name is derived from the French word "tenez!" - in Dutch: "take this!! (the ball)!" In tennis, the ball must be hit over the net on the halve of the field of the opponent(s). The aim is to make it impossible for the opponent(s) to hit the ball back in the same manner. In every tennis season, there are four large tournaments, named Grand Slams. In January, the Australian Open is played, around May and June the clay tournament Roland Garros is played, in June and July, the grass tournament Wimbledon is played, and lastly, the US Open is played in August and September. In Belgium, Justin Henin and Kim Clijsters are famous tennis players. Two of the best tennis players of the past years are the Swiss Roger Federer (who has won 17 grand slams) and the Spanish Rafaël Nadal (who has won 14 grand slams).

Scorebord bij tennis
Scoreboard in tennis

In tennis, the scores are counted on the basis of a system that might originate in the medieval France: 15,30,40, game, set and match.

  • A match or game is played to two won sets, although the men have to win three sets in larger tournaments, and a five-setter is played at the maximum. For women, the maximum of sets is always three.
  • A set is won by the player that first wins 6 games, if the difference is 2 games at the least. If the score in a set is 6-5 and the player that is on 6 wins the following game, the score will be 7-5 and the set is done, however, if the score is 6-6, there are two possibilities: 
    1. Play on until a difference of two games is reached.
    2. A tiebreak is played. This is to be considered as a special game and the winner of this tiebreak wins the set.
  • A game is won by four won points, that are counted as 15,30,40 and 'game '. Here, there must also be a difference of two. If the score is 40-40 (deuce), at least two more points are played. First, a player comes on advantage (indicated with A) and if he wins the following point, he has won the game. If he loses the next point, the score is 40-40 again.

In this assignment we will construct a score table for a match between Roger Federer and Rafaël Nadel given a string of won points This string consists solely of the letters 'F' and 'N'. If a F is on the i-th place, this means that Roger Federer has won the i-th point. If there is an N, Rafaël Nadal has won the point. The score table must look as follows:

+-------------------------------+
|         | SET | GAME | POINTS |
+-------------------------------+
|FEDERER* |   0 |    0 |      0 |
|NADAL    |   0 |    0 |      0 |
+-------------------------------+
Here, the number of won sets from Federer and Nadal must be written under sets. Under Game, the number of games that were won in the current set, must be written. And under Points, the number of points in the current game (0, 15, 30, 40 or A) must be written. We assume that with a 6-6 score in sets, the players just keep on playing. Above that, an asterisk must come for the player that has the next service in the current game. This goes as follows:
  • Within the same set, the service is switched after each game.
  • Federer has the first service during the first set.
  • At the beginning of a new set, the person that did not have the first service in the last set, has the first service.

Input

A string consisting from the letters 'F' and 'N'. An 'F' on the i-th place means that Federer had won the i-th point, an 'N' means that Nadal has won.

Output

The scoreboard in the format as described above. 

Example

Input:

FNFFFFFFFFNFFNFFFNF

Output:

+-------------------------------+
|         | SET | GAME | POINTS |
+-------------------------------+
|FEDERER  |   0 |    3 |     40 |
|NADAL*   |   0 |    0 |     15 |
+-------------------------------+

Input:

NNFNFFNFNNNFNFFNFFNFNFFFFNFNNFNFNFFNNFFNNFNFNFFNFNNFNNNNNFFFNNFNFNFNF

Output:

+-------------------------------+
|         | SET | GAME | POINTS |
+-------------------------------+
|FEDERER  |   0 |    2 |      A |
|NADAL*   |   0 |    3 |        |
+-------------------------------+

Invoer:

FFFFNNNFNNNNNFFFNFNNFFNFFFNNFFNFFFFNFNNNNFFNFFNNFNNFFFFNFNNFNNFFNFFFFNNNNFNFFFNNNFFFNNNNNFNFFNNFFFN

Uitvoer:

+-------------------------------+
|         | SET | GAME | POINTS |
+-------------------------------+
|FEDERER  |   1 |    3 |     15 |
|NADAL*   |   0 |    4 |     15 |
+-------------------------------+

Tennis is een balsport voor twee spelers (enkelspel) of paren (dubbelspel), waarbij een bal met een racket over een net gespeeld moet worden. Tennis is ontstaan in Frankrijk en wordt in zijn hedendaagse vorm gespeeld sinds 1873. De naam is afgeleid van het Franse woord "tenez!" - in het Nederlands: "pak aan!! (de bal)!" Bij tennis moet de bal over het net op de speelhelft van de tegenstander(s) worden geslagen. Het doel is om het de tegenstander(s) onmogelijk te maken de bal op dezelfde wijze terug te slaan. In ieder tennisseizoen zijn er vier grote tennistoernooien, genaamd Grand Slams. In januari wordt de Australian Open gespeeld, rond mei en juni het graveltoernooi Roland Garros, in juni en juli het grastoernooi van Wimbledon, en ten slotte in augustus en september de US Open. In België zijn Justin Henin en Kim Clijsters bekende tennis speelsters. Twee van de beste tennis spelers van de afgelopen jaren zijn de zwitser Roger Federer (17 grand slams gewonnen) en de spanjaar Rafaël Nadal (14 grand slams gewonnen).

Scorebord bij tennis
Scorebord bij tennis

De punten bij tennis worden geteld volgens een systeem dat waarschijnlijk zijn oorsprong vindt in middeleeuws Frankrijk: 15,30,40, game, set en match.

  • Een match of wedstrijd wordt gespeeld naar twee gewonnen sets, hoewel de heren in grote toernooien drie sets moeten winnen, en men dan maximaal een vijfsetter speelt. Voor vrouwen is het maximale aantal te spelen sets altijd drie.
  • Een set wordt gewonnen door de speler die het eerst 6 games wint, mits het verschil minimaal twee games bedraagt. Als de stand in een set 6-5 is en de speler die op 6 staat de volgende game wint, dan wordt het 7-5 en is de set afgelopen. Wordt het echter 6-6 dan zijn er twee mogelijkheden:
    1. Doorspelen totdat er een verschil van twee games wordt bereikt.
    2. Er wordt een tiebreak gespeeld. Dit is te beschouwen als een bijzondere game en de winnaar van deze tiebreak wint de set.
  • Een game wint men door vier gewonnen punten, die geteld worden als 15,30,40 en 'game '. Ook hier echter een verschil van twee. Als het 40-40 (deuce) wordt dan worden er nog minimaal 2 punten gespeeld. Eerst komt een speler op advantage (aangeduid met A) en als hij het volgende punt wint, heeft hij het game gewonnen. Als hij het volgende punt verliest, wordt de stand terug 40-40.

In deze opgave zullen we de scoretabel voor een match tussen Roger Federer en Rafaël Nadal opstellen gegeven een string van gewonnen punten. Deze string bestaat alleen uit de letters 'F' en 'N'. Als er op de i-de plaats een F staat betekent dit dat Roger Federer het i-de punt gewonnen heeft. Als er een N staat heeft Rafaël Nadal dat punt gewonnen. De scoretabel moet er als volgt uitzien.

+-------------------------------+
|         | SET | GAME | POINTS |
+-------------------------------+
|FEDERER* |   0 |    0 |      0 |
|NADAL    |   0 |    0 |      0 |
+-------------------------------+
Hierbij moet er onder sets het aantal gewonnen sets van Federer en Nadal komen. Onder Game moet het aantal games dat in de huidige set gewonnen is, komen. En onder Points komt het aantal points in de huidige game (0, 15, 30, 40 of A). We nemen aan dat er bij een 6-6 stand in sets gewoon doorgespeeld wordt. Daarboven moet er een sterretje komen bij de speler die mag opslaan in het huidige game. Dit verloop als volgt:
  • Binnen dezelfde set wordt er na iedere game gewisseld.
  • Federer mag tijdens de eerste set als eerste opslaan.
  • Bij het begin van een nieuwe set mag de persoon opslaan die de vorige set niet begonnen is.

Invoer

Een string bestaande uit de letters 'F' en 'N'. Een 'F' op de i-de plaats betekent dat Federer het i-de punt gewonnen heeft, een 'N' dat Nadal het punt gewonnen heeft.

Uitvoer

Het scorebord in het formaat dat hierboven beschreven werd.

Voorbeeld

Invoer:

FNFFFFFFFFNFFNFFFNF

Uitvoer:

+-------------------------------+
|         | SET | GAME | POINTS |
+-------------------------------+
|FEDERER  |   0 |    3 |     40 |
|NADAL*   |   0 |    0 |     15 |
+-------------------------------+

Invoer:

NNFNFFNFNNNFNFFNFFNFNFFFFNFNNFNFNFFNNFFNNFNFNFFNFNNFNNNNNFFFNNFNFNFNF

Uitvoer:

+-------------------------------+
|         | SET | GAME | POINTS |
+-------------------------------+
|FEDERER  |   0 |    2 |      A |
|NADAL*   |   0 |    3 |        |
+-------------------------------+


Added by:Peter Dawyndt
Date:2014-08-29
Time limit:10s
Source limit:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Languages:PY_NBC
Resource:None