A la luz del Abierto de Australia 2014 en Melbourne, y la victoria de Stanislas Wawrinka contra Novak Djokovic, ¡propongo el siguiente desafío de código de golf!
Wawrinka y Djokovic vuelven a hacerlo en base a este CGC. Su desafío es tomar una cuerda que consta de 1 y 2 y determinar los puntajes de tenis en función del sistema de puntuación de tenis. Un "1" indica que Wawrinka ha anotado un punto, mientras que un "2" indica que Djokovic ha anotado un punto.
Por el bien de ejemplo: 1211222122111122111
generará una salida de dos líneas:
Wawrinka 1 - 40
Djokovic 1 - 30
Cuanto más larga sea la cuerda, más avanzado será el puntaje.
Reglas:
- El código más corto gana, puro y simple.
- Los puntajes cuando se muestran deben estar alineados a la derecha y también alineados a la columna; p.ej
Muestra de alineación de salida:
Wawrinka 7 5 3 - 0 Djokovic 6 7 4 - 15
Si un juego está en progreso, la puntuación debe mostrarse después de las puntuaciones establecidas. Los puntajes del juego deben seguir los puntajes establecidos con un separador espacio-guión-espacio. Si este es el primer juego, se debe mostrar una puntuación de 0-0.
Wawrinka 0 - 0 Djokovic 0 - 15
Un juego irá en orden de 0, 15, 30, 40 y punto de juego. Si un juego alcanza 40-40, se declara un deuce, y el puntaje debe mostrar el deuce en la fila del jugador que anota el punto:
Wawrinka 7 5 3 - 40 Djokovic 6 7 4 - 40 Deuce
Si se alcanza un deuce, el siguiente punto será una ventaja para el jugador que anota el punto:
Wawrinka 7 5 3 - Ad Djokovic 6 7 4 - 40
El punto después de eso, si es anotado por el jugador con ventaja, gana el juego, de lo contrario el juego vuelve a decaer.
Si se anota más de un deuce entre puntos de ventaja, el número del deuce se indicará entre paréntesis:
Wawrinka 7 5 3 - 40 Djokovic 6 7 4 - 40 Deuce (2)
Se gana un set si un jugador llega a 6 juegos o más y con un margen de dos juegos en ventaja, por ejemplo, 7-5, 6-4 ... 9-7 (en el caso del quinto set de la noche anterior)
Los conjuntos consecutivos deben separarse con un espacio.
Hay desempates en el Abierto de Australia, por lo tanto, si se alcanza un set de 6-6, el primer jugador establece un desempate que alcanza siete puntos con una ventaja de margen de dos puntos. La visualización de los desempates se muestra entre corchetes de la siguiente manera:
Wawrinka 7 6 [6] Djokovic 6 6 [4]
Se dice que el ganador del desempate ganó el set anterior 7-6.
Si el quinto set llega a 6-6, el juego continúa sin tie-break hasta que se alcanza un margen de dos juegos con un jugador, siendo ese jugador el ganador de ese set. NO hay tie-breaks en el quinto set.
Si un jugador ha ganado tres sets, se mostrará una tercera línea que dice
Wawrinka wins
oDjokovic wins
depende de quién ganó y el código termina.Wawrinka 2 6 6 3 9 Djokovic 6 4 2 6 7 Wawrinka wins
Si la cadena termina de tal manera que el último punto haya ganado un juego, un set o un partido, la puntuación del juego no se muestra ...
Wawrinka 7 5 3 Djokovic 6 7 4
Si la cadena va más allá de una partida ganada, se ignora el resto de la cadena, se muestra el puntaje y se declara el ganador.
Respuestas:
Perl - 424 bytes
Saltos de línea se han añadido para
mejorar la legibilidadcordura horizontal.Creo que esta es una solución completa, según la puntuación del Abierto de Australia :
Casos de prueba
Todos los puntajes intermedios para el último caso de prueba se pueden ver aquí: http://codepad.org/FzDIcf0W
fuente
ECMAScript 6 - 635 caracteres
Con comentarios:
Pruebas
Salidas de prueba
fuente
Javascript - 743 bytes
Sin compilador de cierre:
fuente