Como fanático de un equipo BE de fútbol como mínimo con éxito moderado , hacia el final de la temporada a menudo me pregunto si mi equipo favorito aún tiene alguna posibilidad teórica de convertirse en campeón. Su tarea en este desafío es responder esa pregunta por mí.
Entrada
Recibirá tres entradas: la tabla actual, la lista de partidos restantes y la posición actual del equipo que nos interesa.
Entrada 1: La tabla actual , una secuencia de números donde el número i son los puntos ganados por el equipo i hasta ahora. Por ejemplo, la entrada
[93, 86, 78, 76, 75]codifica la siguiente tabla (solo la última columna es importante):
Entrada 2 : Los partidos restantes , una secuencia de tuplas donde cada tupla ( i , j ) representa un partido restante entre el equipo i y j . En el ejemplo anterior, una segunda entrada de [(1,2), (4,3), (2,3), (3,2), (1,2)]significaría que las coincidencias restantes son:
Chelsea vs Tottenham, Liverpool vs Man. City, Tottenham vs Man. City, Man. City vs Tottenham, Chelsea vs Tottenham
Entrada 3: La posición actual del equipo en el que estamos interesados. Por ejemplo, una entrada 2para el ejemplo anterior significaría que nos gustaría saber si Tottenham todavía puede convertirse en campeón.
Salida
Para cada coincidencia restante del formulario ( i , j ), hay tres resultados posibles:
- El equipo i gana: el equipo i obtiene 3 puntos , el equipo j obtiene 0 puntos
- El equipo j gana: el equipo i obtiene 0 puntos , el equipo j obtiene 3 puntos
- Draw: Equipo i y j tanto obtener 1 punto
Debe generar un valor verdadero si hay algún resultado para todos los juegos restantes, de modo que al final, ningún otro equipo tenga más puntos que el equipo especificado en la tercera entrada. De lo contrario, genera un valor falso.
Ejemplo : considere la entrada ejemplar de la sección anterior:
Entrada 1 = [93, 86, 78, 76, 75], Entrada 2 = [(1,2), (4,3), (2,3), (3,2), (1,2)], Entrada 3 =2
Si el equipo 2gana todos sus partidos restantes (es decir (1,2), (2,3), (3,2), (1,2)), obtiene 4 * 3 = 12 puntos adicionales; ninguno de los otros equipos obtiene puntos de estos partidos. Digamos que el otro partido restante (es decir (4,3)) es un empate. Entonces los puntajes finales serían:
Team 1: 93, Team 2: 86 + 12 = 98, Team 3: 78 + 1 = 79, Team 4: 76 + 1 = 77, Team 5: 75
Esto significa que ya hemos encontrado algún resultado para los partidos restantes, de modo que ningún otro equipo tiene más puntos que el equipo 2, por lo que el resultado de esta entrada debe ser verdadero.
Detalles
- Puede suponer que la primera entrada es una secuencia ordenada, es decir, para i < j , la entrada i -ésima es igual o mayor que la entrada j -ésima. La primera entrada puede tomarse como una lista, una cadena o similar.
- Puede tomar la segunda entrada como una cadena, una lista de tuplas o similares. Alternativamente, puede tomarlo como una matriz bidimensional
adondea[i][j]es el número de entradas del formulario(i,j)en la lista de coincidencias restantes. Por ejemplo,a[1][2] = 2, a[2][3] = 1, a[3][2] = 1, a[4][3] = 1corresponde a[(1,2), (4,3), (2,3), (3,2), (1,2)]. - Para la segunda y tercera entrada, puede asumir la indexación 0 en lugar de la indexación 1.
- Puede tomar las tres entradas en cualquier orden.
Especifique el formato de entrada exacto que eligió en su respuesta.
Nodo lateral : se demostró que el problema que subyace a este desafío es NP completo en "La eliminación del fútbol es difícil de decidir bajo la regla de los 3 puntos ". Curiosamente, si solo se otorgan dos puntos por una victoria, el problema se resuelve en tiempo polinómico.
Casos de prueba
Todos los casos de prueba están en el formato Input1, Input2, Input3.
Verdad:
[93, 86, 78, 76, 75]`[(1,2), (4,3), (2,3), (3,2), (1,2)]`2[50]`[]`1[10, 10, 10]`[]`3[15, 10, 8]`[(2,3), (1,3), (1,3), (3,1), (2,1)]`2
Falsy
[10, 9, 8]`[]`2[10, 9, 9]`[(2,3), (3,2)]`1[21, 12, 11]`[(2,1), (1,2), (2,3), (1,3), (1,3), (3,1), (3,1)]`2
Ganador
Este es el código de golf , por lo que gana la respuesta correcta más corta (en bytes). El ganador será elegido una semana después de que se publique la primera respuesta correcta.
