Regole generali

Il tempo per portare a termine la prova è di tre ore.
La prova consta di due esercizi, fare in modo che la classe principale (che contiene il main) del primo esercizio si chiami Esercizio1 e quella del secondo esercizio Esercizio2.
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.

È 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.

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

A titolo di esempio, e per facilitare il testing del primo esercizio, è presente nel directory consegna il file dama che contiene una possibile rappresentazione di una damiera.

Esercizio 1

La dama è un gioco astratto che si tiene su un tavoliere a scacchi (damiera).
I due giocatori muovono a turno pedine, di colore bianche l'uno e nere l'altro, al fine di eliminare tutte le pedine dell'avversario dal campo di gioco.
Le pedine muovono in diagonale in scacchi adiacenti verso il campo avversario (come convenzione grafica si usa designare campo del bianco quello in basso e campo del nero quello in alto) e "mangiano" le pedine avversarie se queste si trovano nella casella diagonale adiacente nel senso del movimento e se la casella diagonale successiva (nella stessa direzione) alla pedina avversaria è libera, in questa casella andrà poi posizionata la pedina che ha effettuato la mossa.
Inizialmente tutte le pedine sono poste sui soli scacchi neri della damiera e, in funzione delle regole di movimento precedentemente introdotte, tutti i movimenti nel corso della partita continuano a tenersi nei soli scacchi neri. Convenzionalmente la damiera è posizionata in modo che lo scacco in alto a destra sia nero. Per questo programma si consideri la damiera formata da dieci righe per dieci colonne.
Scrivere un programma che accetti in input da riga di comando il nome di un file di testo che deve contenere la rappresentazione di una damiera con pezzi bianchi e neri.
Tale rappresentazione deve essere composta di dieci righe di dieci caratteri ciascuna. Tali caratteri possono essere il carattere ' ' (spazio) o '.' (punto) ad indicare una posizione vuota su uno scacco, rispettivamente, bianco o nero; oppure il carattere 'O' ad indicare un pezzo bianco; oppure il carattere 'X' ad indicare un pezzo nero.
Il programma dovrà controllare la correttezza del formato del file contenente la damiera e quindi visualizzare, prima per i pezzi bianchi, poi per i pezzi neri, tutti i pezzi che se muovessero dalla posizione letta potrebbero eliminare un pezzo avversario. Per la visualizzazione di tali pezzi si utilizzino le coordinate in cui il pezzo si trova usando una lettera tra a e j per la riga e un numero fra 1 e 10 per la colonna.
Nota per i conoscitori del gioco: il programma non contempla l'esistenza di dame, le regole di movimento sono quelle della dama italiana anche se la dimensione della damiera è quella della dama internazionale.

Esempio: a fronte della damiera nella seguente rappresentazione

 X X X X X
X X X X X 
 X X X X X
X . X . X 
 X . X . .
. O O . . 
 . . O O O
O O O O O 
 O O O O O
O O O O O 

il programma dovrà produrre un output del tipo:

Il bianco mangia da f5
Il nero mangia da e2
Il nero mangia da e6

Esercizio 2

Si scriva un programma che accetti da linea di comando come parametro una stringa e fornisca in output il numero di caratteri contenuti in tale stringa.
Realizzare a questo fine un algoritmo ricorsivo implementato attraverso un metodo che ritorni il numero di caratteri e che faccia uso dei soli metodi equals e substring della classe String.