Regole generali

Il tempo per portare a termine la prova è di tre ore.
La prova consta un unico esercizio, fare in modo che la classe principale (che contiene il main) dell'esercizio si chiami Esercizio.
Iniziare ogni file sorgente con un commento che contiene il cognome e il nome del candidato (nell'ordine e usando opportunamente maiuscole e minuscole) e il suo numero di matricola (Es: //Bianchi Mario 0000156786).

È permesso l'uso di fogli bianchi per appunti; non è permesso l'uso di alcun tipo di materiale di consultazione tranne la documentazione in linea accedibile attraverso l'ambiente preconfigurato (usando il plugin InfoViewer attivabile con il pulsante nel bordo destro).

Per la compilazione è possibile utilizzare i plugin JCompile e RunIt (accedibili dal menu Plugins), ricordarsi di salvare il file prima della compilazione.

L'elaborato consegnato verrà corretto solo se compilabile senza errori; tutti i file sorgenti vanno salvati nella directory di default presentata dal programma.

La modularizzazione (suddivisione in classi/metodi) e l'uso opportuno di commenti che rendano comprensibile l'elaborato sono parametri utilizzati in sede di valutazione.

Esercizio: campo minato

Scrivere un programma che accetti in input da riga di comando il nome di un file di testo che deve contenere la rappresentazione di un tavoliere di campo minato.
Il file deve essere composto di un numero non definito a priori di linee, ognuna della stessa lunghezza. Ogni linea può contenere i caratteri '.', ad indicare una posizione libera, e '*', ad indicare una mina.
Il programma deve visualizzare lo stesso campo minato acquisito in ingresso nel quale le caselle libere adiacenti a delle mine siano rappresentate attraverso un numero che indica quante sono queste mine (si intendono adiacenti le otto caselle attorno alla casella esaminata); a seguire dovrà essere visualizzata una lista che riporti quante sono le caselle libere con n mine adiacenti (con n da 1 a 8).

Esempio:

Lanciando il programma (con java Esercizio soluzione1.txt), dove il file soluzione1.txt contiene:

..*..
*....
*...*
**...

si dovrà ottenere in output:

12*1.
*3121
*411*
**111 

caselle circondate da 1 mina: 9
caselle circondate da 2 mine: 2
caselle circondate da 3 mine: 1
caselle circondate da 4 mine: 1
caselle circondate da 5 mine: 0
caselle circondate da 6 mine: 0
caselle circondate da 7 mine: 0
caselle circondate da 8 mine: 0