<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">// Scheletro di codice per il progetto 2018

// In questo file NON ci deve essere nessuna dichiarazione "package"
// come per esempio
//
//    package progetto;

// Questo import serve per potere usare il tester che vi forniamo.
// Se non volete usare il tester, dovete rimuoverlo, ed eliminare
// dal file tutti gli usi delle funzioni Tester;
import progetto2018.Tester;

// Potete aggiungere qui altri "import" per usare le librerie
// standard di Java (ad es. lo Scanner).


// NON modificate in nessun modo la linea seguente
public class Progetto {

	// Qui potete liberamente aggiungere altre funzioni / procedure.
	
	// Vi consigliamo di non usare variabili globali, visto che non
	// ve ne e` bisogno. Se decidete di usarle comunque, potete farlo,
	// ma in tal caso dovete fare in modo che le funzioni
	//     cellularAutomaton
	//     multiplication
	// le inizializzino **ogni volta** che vengono chiamate. 
	// Inizializzarle una volta sola nel main NON basta, visto che le
	// funzioni verranno chiamate piu` volte.
	
	
	// NON modificate in nessun modo la linea seguente
	public static boolean[] cellularAutomaton(int ruleNum, boolean[] initialState, int steps) {
		// Qui potete inserire il vostro codice
		
		return initialState;   // da modificare
	}

	// NON modificate in nessun modo la linea seguente
	public static void multiplication(String inFileName, String outFileName) {
		// Qui potete inserire il vostro codice
		
		// Vi ricordiamo che NON dovete usare nomi di file prefissati,
		// come per es "input.txt", ma dovete invece usare come nomi 
		// di file i parametri della procedura.
		
	}

	// Potete modificare il main liberamente. Potete per esempio eseguire
	// qualche test sulle funzioni sopra, come quelli suggeriti sotto.
	// Ricordatevi che chi corregge il progetto NON eseguira` il vostro
	// main, ma i suoi test.
	// 
	public static void main(String[] args) {
		
		System.out.println("--- Test automa cellulare ---");
		
		// Le costanti che usiamo sotto sono solo casi particolari,
		// il programma verra` testato anche su altri casi dopo la
		// consegna.
		int ruleNum = 110;
		int steps = 20;
		boolean[] initialState = new boolean[80];
		// Generiamo uno stato iniziale
		int i;
		for (i = 0 ; i &lt; initialState.length ; i++) {
			initialState[i] = (i % 2 == 0);
		}
		
		boolean[] finalState;
		finalState = cellularAutomaton(ruleNum, initialState, steps);
		boolean testOK;
		testOK = Tester.testCellularAutomaton
				( ruleNum
				, initialState
				, steps
				, finalState );
		if (testOK) {
			System.out.println("Automaton test: PASS");
		} else {
			System.out.println("Automaton test: FAIL &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;");
		}
		
		// ---------------------------------------------
		
		System.out.println();
		System.out.println("--- Test moltiplicazione ---");
		
		// Dopo la consegna, il programma sara` testato anche con altri
		// nomi per i file.
		String inFileName = "input.txt";
		String outFileName = "output.txt";
		
		// Se volete, qui scrivete dei naturali positivi casuali sul
		// file di input.
		
		// Il file di output, invece, viene generato dalla chiamata
		// qui sotto:
		multiplication(inFileName, outFileName);
		
		// Ora che il file di output e` stato creato / sovrascritto,
		// controlliamo il risultato.
		if (Tester.testMultiplication(inFileName, outFileName)) {
			System.out.println("Multiplication test: PASS");
		} else {
			System.out.println("Multiplication test: FAIL &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;");
		}
	}
}
</pre></body></html>