// Scheletro di codice per il progetto 2024 // In questo file NON ci deve essere nessuna dichiarazione "package" // come per esempio // // package progetto; // Potete aggiungere qui altri "import" per usare le librerie // standard di Java, se vi servono. import progetto2024.Helper; //NON modificate in nessun modo la linea seguente. public class Progetto { // Qui potete liberamente aggiungere funzioni / procedure. // Se volete, potete anche inserire variabili globali. // Se decidete di inserirle, dovete fare in modo che la funzione // calcolaEletti // inizializzi tali variabili **ogni volta** che viene chiamata. // Inizializzarle una volta sola nel main NON basta, visto che la // funzione verra` chiamate piu` volte. // NON modificate in nessun modo la linea seguente. public static int[] calcolaEletti(int candidati, int seggi, int[][] listaVoti) { // Qui potete inserire il vostro codice. int[] eletti; eletti = new int[seggi]; // .... return eletti; } // Potete modificare il main liberamente. Potete per esempio eseguire // qualche test sulla funzione sopra, come quelli suggeriti sotto. // Ricordatevi che chi corregge il progetto NON eseguira` il vostro // main, ma i propri test. // public static void main(String[] args) { long seed = 123123; int numeroTest = 5000; int numeroTestSemplici = 20; long t0 = System.currentTimeMillis(); for (int i = 0; i < numeroTestSemplici; i++){ int candidati = 6; int seggi = 3; Helper.setRandomSeed(seed + i); int[][] listaVoti = Helper.generaVotiSemplice(candidati, seggi); try { int[] eletti = calcolaEletti(candidati, seggi, listaVoti); if ( !Helper.testSoluzione( candidati, seggi, listaVoti, eletti) ) { System.out.println("Fallito test semplice " + i); return; } } catch( Exception e ) { System.out.println("Crash durante il test semplice " + i); throw e; } } for (int i = 0; i < numeroTest; i++) { Helper.setRandomSeed(seed + i); int candidati = Helper.generaNumCandidati(); int seggi = Helper.generaNumSeggi(candidati); int[][] listaVoti = Helper.generaVoti(candidati, seggi); try { int[] eletti = calcolaEletti( candidati, seggi,listaVoti); if ( !Helper.testSoluzione( candidati, seggi,listaVoti, eletti) ){ System.out.println("Fallito test approfondito " + i); return; } } catch( Exception e ) { System.out.println("Crash durante il test approfondito " + i); throw e; } } long t1 = System.currentTimeMillis(); System.out.println("Tutti i test sono stati superati. \n Tempo impiegato: " + (t1-t0)/1000 + " secondi."); } }