Il file intervalSum.txt contiene il testo dell'esercizio. I files hint1.txt, hint2.txt ... sono dei files con dei suggerimenti e considerazioni su come convenga affrontare un tale problema. (Essi non erano stati resi disponibili al momento dell'esame). Sono numerati 1,2 ... perche' alcuni suggerimenti sono forniti in modo incrementale; conviene leggerli nell'ordine (ciascuno puo' fare riferimento ai precedenti) sempre riprovando ad affrontare l'esercizio in autonomia prima di leggere il successivo (per non sprecare l'esercizio). Ma possono anche essere letti ad esercizio gia' risolto per ripercorrere i passi, cogliere le sfumature, e fare il punto sulle lessons learned. Il file intervalSum.cpp contiene una soluzione ben centrata: un algoritmo lineare scritto senza tanti fronzoli, ma breve, immediato, ed efficiente. In verita' anche chiaro sulle invarianti e sulle idee sottostanti. Vista dalla disciplina degli algoritmi (discipline diverse hanno esigenze ed estetiche che possono sembrare contraddittorie), proponiamo questo codice come standard da perseguire. Il file intervalSumSlow.cpp contiene una soluzione quadratica, piu' semplice da scrivere (ed anche da concepire!) che viene utile come benchmark nell'assicurarsi della correttezza di codici complessi, e gia' porta a casa molti punti. I file che iniziano per VR sono sostanzialmente i file di cui avete fatto l'upload durante l'esame. Quelli che iniziano col vostro numero di matricola sono proprio i tuoi, gli altri sono dei tuoi compagni. Il file randSeq.cpp, una volta compilato, genera degli inputs validi per il problema rispondendo anche ad alcuni parametri che consentono di guidare la generazione dove reputato piu' interessante. E' il tipo di programma che, impiegando poco tempo per essere scritto, voi stessi avreste dovuto scrivervi durante l'esame per monitorare la correttezza dei vostri codici e quanti punti potevate aspettarvi per decidere in che direzione rivolgere mano a mano le vostre energie. Ad esempio, con un generatore come questo potete valutare cosa aspettarvi da una soluzione lenta come intervaSumSlow.cpp, o magari anche dalla ovvia soluzione cubica! Il file makeInputs.sh e' un file di shell (bash) che wrappa il programma randSeq (quindi non puo' funzionare se non compilate prima randSeq e non lo avete nella stessa cartella) generando i 20 casi di prova su cui (oltre che sull'esempio utilizzato nel testo) viene valutata la vostra sottomissione. In makeIputs.sh sono contenuti i parametri ed i seeds che determinano proprio quelle istanze, che potete quindi generare anche voi per verificare vi siano stati riconosciuti tutti i vostri punti! Questi punti, come da me assegnati (ma vi prego di controllarli), li trovate nel file intervalSum.scores In generale i file .sh sono degli scripts che ho predisposto di primo acchito per andare verso una valutazione automatizzata, con ricadute positive per tutti. Questa volta ho dovuto lavorare molto di scotch perche' i file che uplodavate non avavano il nome giusto, o non salvavano in "output.txt", od oltre a fare quanto richiesto scrivevano anche su cout ... Speriamo che la prossima volta siate piu' allineati alla consegna ed anche piu' scaltri e finalizzati alla raccolta di punti. Perche' conformarsi: 1. non sono regole arbitrarie: ad esempio, scrivere su cout, anche se non ve ne accorgete, costa assai in tempo di esecuzione. Non lo vedete sulle istanze piccole ma su quelle onerose rischiate che anche una soluzione lineare (ottima!) vi vada in time-out. Un vero peccato! 2. per fare punti (e quindi voto esame), che diamine! Con la stessa motivazione di cui al punto 2 abbattete le vostre riserve mentali e fatevi anche voi i vostri generatori di istanze, e non indugiate a smanettare con questi scripts, e' incredibile quanto vi possano aiutare. E tra l'altro "imparerete facende", il che, nel nostro mondo, e' diventato un lusso sublime per sempre piu' ampie fasce.