r/italy Veneto Sep 07 '18

/r/italy Casual friday - 07/09/18

16 Upvotes

750 comments sorted by

View all comments

3

u/tr4ktorr Sep 07 '18

Domanda per gli informatici: sto scrivendo un programma in java per gestire un torneo sportivo suddiviso in giornate con andata e ritorno, ho utilizzato una hashmap per gestire le squadre usando una stringa nome e un classe squadra generica. Ora devo creare il calendario vero e proprio ma non so che struttura dati utilizzare, visto che alla fine delle partire dovro utilizzare questo calendario per calcolare il vinciotore non so bene come muovermi... ho pensato a due array ( o qualcosa di basato su array) uno per l andata e uno per il ritorno in modo da utilzzare ogni “casella” dell array per contenere una giornata,dove, a sua volta mettero le singole partite (come posso realizzarlo?). Mi sembra abbastanza incasinata come soluzione e non saprei neanche bene come realizzarla.. sapete darmi qualche dritta? Ovviamente non mi aspetto del codice ma magari qualche dritta su come procedere

5

u/tartare4562 Lombardia Sep 07 '18 edited Sep 07 '18

Io inizierei a creare una classe che rappresenti una partita: riferimento squadra A, riferimento squadra B, Gol fatti da A, da B e data. Poi un'altra classe PartitaAR con i riferimenti alle partite andata e ritorno, e un metodo GetVincitore che definisca chi vince valutando le due partite e restituisce l'id squadra.

A questo punto definisci il calendario delle partite come array partiteAR precaricando le date e mettendo le squadre nelle partite di livello 1. In quelle di livello 2 e successivi al posto delle squadri metti dei riferimenti alle partiteAR che li determineranno.

A questo punto fai un metodo "compila" che valuta l'array calendario una partitaAR dopo l'altra. Se una squadra è un richiamo di una partitaAR valuti il risultato di quella partitaAR e, se valido, importi nel calendario la squadra vincente.

3

u/msx Europe Sep 07 '18

il fatto che sia andata o ritorno dovrebbe essere ininfluente ai fini della classe. Io farei cosi':

classe Partita (Squadra1, Squadra2, isAndata (boolean), altre robe tipo data, luogo etc).

Quindi ogni giornata e' una lista di partite, che puoi gestire con un List<Partita>, oppure farti una classe Giornata (in tal caso puoi anche generalizzare isAndata in questa classe).

A quel punto il tuo calendario e' un List<Giornata>

1

u/throwaway_veneto Veneto Sep 07 '18

Io consiglio sempre di evitare i booleane e invece usare una enumerazione. In quel modo diventa banale estendere per partite che non sono andata/ritorno

2

u/HolyJesusOnAToast Trentino Alto Adige Sep 07 '18 edited Sep 07 '18

Avevo iniziato a fare una cosa del genere, ma poi ho mollato perchè non riuscivo a generare un calendario a 20 squadre.

Comunque avevo creato una classe per l'incontro, con setters e getters per i partecipanti (le due squadre) e il risultato. Poi volevo creare una classe per la giornata, con un array di 10 incontri e con setters e getters che potenzialmente mi permettevano di assegnare i punti, aggiornare le classifiche, ecc... L'ultimo era appunto la classe calendario che, nel costruttore, doveva creare 19 giornate, ciascuna con 10 incontri. Ma non ho ancora la statistica sufficiente per creare tutte le varie permutazioni (possibilmente anche alternando casa e trasferta).

2

u/tr4ktorr Sep 07 '18

grazie a tutti! mi avete aperto gli occhi ci stavo pensando da un punto di vista sbagliato, mi stavo incasinando troppo..