martedì 12 maggio 2015

Ordinare e raggruppare

Molti linguaggi di programmazione permetto di ordinare una lista, sia alfabeticamente che numericamente, nel verso che preferiamo (ascendente o discendente). La questione diventa più spinosa se non c'è una sola chiave di lettura dei dati, ma dobbiamo ordinare secondo più criteri contemporaneamente.
Per fortuna la funzione di ordinamento di livecode (sort) e un ordinamento di tipo stabile, solo questo tipo di ordinamento permette di fare i raggruppamenti.
Immaginiamo di avere una lista di risultati di una maratona, dove sono indicati i metri percorsi, il tempo impiegato e il nome dell'atleta:

500,30,Mario
500,25,Luigi
500,25,Arianna
600,25,Sara
600,35,Clara
400,10,Marco
400,20,Alberto

Per creare la classifica, bisogna prima mettere chi ha corso di più, poi chi ha impiegato meno tempo a parità di risultato e poi in ordine alfabetico i nomi. Quando si ordina per gruppi, ricordatevi sempre di partire dalla voce più annidata, in questo caso il codice è:



sort classifica by item 3 of each
sort classifica by item 2 of each
sort classifica descending by item 1 of each


e il risultato sarà quello voluto, cioè:

600,25,Sara
600,35,Clara
500,25,Arianna
500,25,Luigi
500,30,Mario
400,10,Marco
400,20,Alberto