À la lumière de l'Open d'Australie 2014 à Melbourne et de la victoire de Stanislas Wawrinka contre Novak Djokovic, je vous propose le challenge de golf code suivant!
Wawrinka et Djokovic sont à nouveau à la base de cette CGC. Votre défi consiste à prendre une chaîne composée de 1 et de 2 et de déterminer les scores de tennis en fonction du système de notation du tennis. Un "1" indique que Wawrinka a marqué un point, tandis qu'un "2" indique que Djokovic a marqué un point.
Par exemple: 1211222122111122111
va générer une sortie sur deux lignes:
Wawrinka 1 - 40
Djokovic 1 - 30
Plus la chaîne est longue, plus le score est avancé dans le jeu.
Règles:
- Le code le plus court gagne, pur et simple.
- Les scores affichés doivent être alignés à droite et également alignés sur les colonnes; par exemple
Exemple d'alignement de la sortie:
Wawrinka 7 5 3 - 0 Djokovic 6 7 4 - 15
Si un jeu est en cours, le score doit être affiché après les scores définis. Les scores du jeu doivent suivre les scores définis avec un séparateur espace-tiret-espace. Si cela s'avère être le premier match, un score de 0-0 doit être affiché.
Wawrinka 0 - 0 Djokovic 0 - 15
Une partie se déroulera par ordre de 0, 15, 30, 40 et point de partie. Si une partie atteint 40-40, une égalité est déclarée et le score doit afficher la égalité sur la ligne du joueur marquant le point:
Wawrinka 7 5 3 - 40 Djokovic 6 7 4 - 40 Deuce
Si une égalité est atteinte, le point suivant sera un avantage pour le joueur marquant le point:
Wawrinka 7 5 3 - Ad Djokovic 6 7 4 - 40
Le point après cela, s'il est marqué par le joueur avantagé, gagne la partie, sinon la partie retourne à égalité.
Si plus d'un diable est marqué entre les points d'avantage, le numéro du diable sera indiqué par un nombre entre parenthèses:
Wawrinka 7 5 3 - 40 Djokovic 6 7 4 - 40 Deuce (2)
Un set est gagné si un joueur atteint 6 matchs ou plus et avec une marge de deux matchs en tête, par exemple 7-5, 6-4 ... 9-7 (dans le cas du cinquième set de la nuit dernière)
Les ensembles consécutifs doivent être séparés par un espace.
Il y a des tie-breaks à l'Open d'Australie, donc si un set 6-6 est atteint, un tie-break est établi par le premier joueur atteignant sept points avec une avance de deux points. L'affichage des bris d'égalité est indiqué entre crochets comme suit:
Wawrinka 7 6 [6] Djokovic 6 6 [4]
Le vainqueur du tie-break aurait gagné le set précédent 7-6.
Si le cinquième set atteint 6-6, le jeu se poursuit sans bris d'égalité jusqu'à ce qu'une marge de deux matchs soit atteinte avec un joueur, ce joueur étant le gagnant de ce set. Il n'y a AUCUN tie-break dans le cinquième set.
Si un joueur a gagné trois sets, une troisième ligne s'affichera disant
Wawrinka wins
ouDjokovic wins
selon qui a gagné et le code se termine alors.Wawrinka 2 6 6 3 9 Djokovic 6 4 2 6 7 Wawrinka wins
Si la chaîne se termine de telle sorte que le dernier point a gagné un jeu, un set ou un match, le score du jeu ne s'affiche pas ...
Wawrinka 7 5 3 Djokovic 6 7 4
Si la chaîne va au-delà d'un match gagné, le reste de la chaîne est ignoré, le score affiché et le gagnant déclaré.
Réponses:
Perl - 424 octets
De nouvelles lignes ont été ajoutées pour une
lisibilitéhorizontale.Je pense que c'est une solution complète, selon le score de l' Open d'Australie :
Cas de test
Tous les scores intermédiaires pour le dernier cas de test peuvent être consultés ici: http://codepad.org/FzDIcf0W
la source
ECMAScript 6 - 635 caractères
Avec commentaires:
Essai
Sorties de test
la source
Javascript - 743 octets
Sans compilateur de fermeture:
la source