Submit | All submissions | Best solutions | Back to list |
PROG0501 - Tennis |
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).
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:
- Play on until a difference of two games is reached.
- 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 | +-------------------------------+
- 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).
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:
- Doorspelen totdat er een verschil van twee games wordt bereikt.
- 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 | +-------------------------------+
- 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 |