Come fan di una squadra di calcio di successo moderatamente alto , verso la fine della stagione mi chiedo spesso se la mia squadra del cuore abbia ancora qualche possibilità teorica di diventare campione. Il tuo compito in questa sfida è rispondere a quella domanda per me.
Ingresso
Riceverai tre input: la tabella corrente, l'elenco delle partite rimanenti e la posizione attuale della squadra a cui siamo interessati.
Ingresso 1: La tabella corrente , una sequenza di numeri sono stati il I numero di -esimo sono i punti ottenuti dal team mi finora. Ad esempio, l'input
[93, 86, 78, 76, 75]codifica la seguente tabella (solo l'ultima colonna è importante):
Input 2 : le partite rimanenti , una sequenza di tuple in cui ciascuna tupla ( i , j ) rappresenta una partita rimanente tra la squadra i e j . Nell'esempio sopra, un secondo input di [(1,2), (4,3), (2,3), (3,2), (1,2)]significherebbe che le rimanenti corrispondenze sono:
Chelsea vs Tottenham, Liverpool vs Man. City, Tottenham vs Man. City, Man. City vs Tottenham, Chelsea vs Tottenham
Input 3: l' attuale posizione della squadra a cui siamo interessati. Ad esempio, un input 2per l'esempio sopra significherebbe che vorremmo sapere se il Tottenham può ancora diventare campione.
Produzione
Per ogni corrispondenza rimanente del modulo ( i , j ), ci sono tre possibili esiti:
- La squadra i vince: la squadra i ottiene 3 punti , la squadra j ottiene 0 punti
- La squadra j vince: la squadra i ottiene 0 punti , la squadra j ottiene 3 punti
- Draw: Squadra i e j sia ottenere 1 punto
Devi ottenere un valore veritiero se ci sono dei risultati per tutte le partite rimanenti in modo tale che alla fine nessun'altra squadra abbia più punti di quelli specificati nel 3 ° input. Altrimenti, genera un valore errato.
Esempio : considerare l'input esemplare della sezione precedente:
Ingresso 1 = [93, 86, 78, 76, 75], Ingresso 2 = [(1,2), (4,3), (2,3), (3,2), (1,2)], Ingresso 3 =2
Se la squadra 2vince tutte le partite rimanenti (ovvero (1,2), (2,3), (3,2), (1,2)), ottiene 4 * 3 = 12 punti aggiuntivi; nessuna delle altre squadre ottiene punti da queste partite. Diciamo che l'altra partita rimanente (cioè (4,3)) è un pareggio. Quindi i punteggi finali sarebbero:
Team 1: 93, Team 2: 86 + 12 = 98, Team 3: 78 + 1 = 79, Team 4: 76 + 1 = 77, Team 5: 75
Ciò significa che abbiamo già trovato alcuni risultati per le partite rimanenti in modo tale che nessun'altra squadra abbia più punti della squadra 2, quindi l'output per questo input deve essere veritiero.
Dettagli
- Si può presumere che il primo input sia una sequenza ordinata, cioè per i < j , la i -esima voce è uguale o maggiore della j -esima voce. Il primo input può essere preso come un elenco, una stringa o simili.
- Puoi prendere il secondo input come una stringa, un elenco di tuple o simili. In alternativa, puoi prenderlo come un array bidimensionale in
acuia[i][j]è il numero di voci del modulo(i,j)nell'elenco delle corrispondenze rimanenti. Ad esempio,a[1][2] = 2, a[2][3] = 1, a[3][2] = 1, a[4][3] = 1corrisponde a[(1,2), (4,3), (2,3), (3,2), (1,2)]. - Per il secondo e il terzo input, puoi assumere 0-indicizzazione invece di 1-indicizzazione.
- Puoi prendere i tre ingressi in qualsiasi ordine.
Si prega di specificare l'esatto formato di input scelto nella risposta.
Nodo laterale : il problema alla base di questa sfida è stato dimostrato essere NP-completo in "L' eliminazione del calcio è difficile da decidere in base alla regola dei 3 punti ". È interessante notare che se vengono assegnati solo due punti per una vittoria, il problema diventa risolvibile in tempi polinomiali.
Casi test
Tutti i casi di test sono nel formato Input1, Input2, Input3.
Truthy:
[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
Vincitore
Questo è code-golf , quindi vince la risposta corretta più breve (in byte). Il vincitore verrà scelto una settimana dopo la pubblicazione della prima risposta corretta.
