L'esercizio di oggi è quello di creare la classifica del campionato di calcio di serie A partendo dalle partite disputate. Ho usato AWK ma lo stesso esercizio può essere svolto utilizzando Bash, Python e altri linguaggi. Ehi, fatevi avanti!!! Ovviamente gli eventuali script nei commenti saranno pubblicati a nome dell'autore. :)
Certamente pure il mio script può essere migliorato....perciò fatevi avanti!!!
Per una questione di spazio, ho preso in considerazione solo le prime quattro giornate del campionato di calcio 2012/2013.
Partiamo dalla tabella. (tabella.txt)
fiorentina udinese 2 1 #prima giornata juventus parma 2 0 milan sampdoria 0 1 atalanta lazio 0 1 chievo bologna 2 0 genoa cagliari 2 0 palermo napoli 0 3 pescara inter 0 3 roma catania 2 2 siena torino 0 0 torino pescara 3 0 #seconda giornata bologna milan 1 3 udinese juventus 1 4 cagliari atalanta 1 1 catania genoa 3 2 inter roma 1 3 lazio palermo 3 0 napoli fiorentina 2 1 parma chievo 2 0 sampdoria siena 2 1 palermo cagliari 1 1 #Terza giornata milan atalanta 0 1 chievo lazio 1 3 fiorentina catania 2 0 genoa juventus 1 3 napoli parma 3 1 pescara sampdoria 2 3 roma bologna 2 3 siena udinese 2 2 torino inter 0 2 parma fiorentina 1 1 #Quarta giornata juventus chievo 2 0 sampdoria torino 1 1 atalanta palermo 1 0 bologna pescara 1 1 cagliari roma 0 3 catania napoli 0 0 inter siena 0 2 udinese milan 2 1 lazio genoa 0 1Passiamo allo script (classifica.awk)
#!/usr/bin/awk -f
BEGIN {
print "\n............................"
FORMAT="\t%-18s%s\n"
printf FORMAT,"SQUADRE","PUNTI"
}
{
#In caso di vittoria in casa, assegno 3 punti alla prima
# 0 punti alla seconda squadra.
if ($3 > $4 ) {
c[$1]+=3; c[$2]+=0
}
#In caso di vittoria fuori casa, assegno 3 punti alla seconda
#0 punti alla prima squadra.
else if($3 < $4){
c[$1]+=0; c[$2]+=3
}
#In caso di pareggio, assegno un punto a squadra.
else if ($3==$4){
c[$1]+=1; c[$2]+=1;
}
c[$1] += $2
}
END {
ordina = "sort -k 2nr"
for (i in c) {
printf FORMAT,i,c[i] | ordina
}
close(ordina)
print "............................\n"
}
Rendiamolo eseguibile (dopo averlo salvato nella stessa directory della tabella).$ chmod +x classifica.awk
E ora eseguiamolo.
$ ./classifica.awk tabella.txt
Al momento ho introdotto solo l'elenco delle squadre e i relativi punti...Prossimamente lo vorrò migliorare integrando altre voci quali le partite in casa e fuori casa vinte, perse o pareggiate, i gol fatti e subiti, etc, etc.
Chi sta seguendo il sequel "Un po' di AWK" avrà notato che ci sono un sacco di cose che ancora non ho trattato....Piano piano ci riuscirò...
Se notate delle imperfezioni, volete completare voi lo script, ne volete proporre altri in altrettanti linguaggi...insomma, fatevi avanti...Se poi mi volete maledire in privato, potete usare il mio indirizzo e-mail (che trovate nel menu Uber Mich)
Vi ricordo che:
L'indice del sequel "Brevi Esercizi" lo trovate qui, mentre se volete dare una sbirciatina all'indice di "Un po' di AWK", andate qui.
Alla prossima!
ti rifaccio i complimenti x il blog, sai avevo formattato e mi ero dimenticato i preferiti ed ora ho ritrovato il blog e son propio contento Buon fine e buon inizio
RispondiEliminaGrazie tante per i complimenti, troppo buono! Auguri di buon anno anche a te!! :)
Elimina