En tant que fan d'une équipe de football BE au plus modérément réussie, je me demande souvent vers la fin de la saison si mon équipe préférée a encore une chance théorique de devenir champion. Votre tâche dans ce défi est de répondre à cette question pour moi.
Contribution
Vous recevrez trois entrées: le tableau actuel, la liste des matchs restants et la position actuelle de l'équipe qui nous intéresse.
Entrée 1: Le tableau actuel , une séquence de nombres étaient le i- ème nombre sont les points gagnés par l'équipe i jusqu'à présent. Par exemple, l'entrée
[93, 86, 78, 76, 75]
code le tableau suivant (seule la dernière colonne est importante):
Entrée 2 : Les matchs restants , une séquence de tuples où chaque tuple ( i , j ) représente un match restant entre l'équipe i et j . Dans l'exemple ci-dessus, une deuxième entrée de [(1,2), (4,3), (2,3), (3,2), (1,2)]
signifierait que les correspondances restantes sont:
Chelsea vs Tottenham, Liverpool vs Man. City, Tottenham vs Man. City, Man. City vs Tottenham, Chelsea vs Tottenham
Entrée 3: La position actuelle de l'équipe qui nous intéresse. Par exemple, une entrée de 2
pour l'exemple ci-dessus signifierait que nous aimerions savoir si Tottenham peut toujours devenir champion.
Production
Pour chaque correspondance restante du formulaire ( i , j ), il y a trois résultats possibles:
- L'équipe i gagne: l'équipe i obtient 3 points , l'équipe j obtient 0 point
- L'équipe j gagne: l'équipe i obtient 0 point , l'équipe j obtient 3 points
- Match nul: les équipes i et j obtiennent 1 point
Vous devez produire une valeur véridique s'il y a un résultat pour tous les jeux restants de sorte qu'à la fin, aucune autre équipe n'ait plus de points que l'équipe spécifiée dans la 3ème entrée. Sinon, affichez une valeur fausse.
Exemple : Considérez l'apport exemplaire de la section ci-dessus:
Entrée 1 = [93, 86, 78, 76, 75]
, Entrée 2 = [(1,2), (4,3), (2,3), (3,2), (1,2)]
, Entrée 3 =2
Si l'équipe 2
gagne tous ses matchs restants (c'est-à-dire (1,2), (2,3), (3,2), (1,2)
), elle obtient 4 * 3 = 12 points supplémentaires; aucune des autres équipes n'obtient de points de ces matchs. Disons que l'autre match restant (ie (4,3)
) est un match nul. Ensuite, les scores finaux seraient:
Team 1: 93, Team 2: 86 + 12 = 98, Team 3: 78 + 1 = 79, Team 4: 76 + 1 = 77, Team 5: 75
Cela signifie que nous avons déjà trouvé des résultats pour les matchs restants de sorte qu'aucune autre équipe n'a plus de points que l'équipe 2
, donc la sortie pour cette entrée doit être véridique.
Détails
- Vous pouvez en déduire la première entrée à une séquence ordonnée, soit pour i < j , l' i entrée -ième est égale ou supérieure à la j entrée -ième. La première entrée peut être considérée comme une liste, une chaîne ou similaire.
- Vous pouvez prendre la deuxième entrée sous forme de chaîne, une liste de tuples ou similaires. Alternativement, vous pouvez le prendre comme un tableau à deux dimensions
a
oùa[i][j]
est le nombre d'entrées du formulaire(i,j)
dans la liste des correspondances restantes. Par exemple,a[1][2] = 2, a[2][3] = 1, a[3][2] = 1, a[4][3] = 1
correspond à[(1,2), (4,3), (2,3), (3,2), (1,2)]
. - Pour les deuxième et troisième entrées, vous pouvez supposer une indexation 0 au lieu d'une indexation 1.
- Vous pouvez prendre les trois entrées dans n'importe quel ordre.
Veuillez spécifier le format de saisie exact que vous avez choisi dans votre réponse.
Noeud latéral : Le problème sous-jacent à ce défi s'est avéré être NP-complet dans "L' élimination du football est difficile à décider selon la règle des 3 points ". Fait intéressant, si seulement deux points sont accordés pour une victoire, le problème devient résoluble en temps polynomial.
Cas de test
Tous les tests sont au format Input1
, Input2
, Input3
.
Vérité:
[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
Gagnant
Il s'agit de code-golf , donc la réponse correcte la plus courte (en octets) l'emporte. Le gagnant sera choisi une semaine après la publication de la première bonne réponse.