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.

Esercizio 1

Il go-moku è un gioco astratto che si gioca comunemente sul tavoliere del go (detto goban, formato da 19x19 intersezioni). Spesso non tutto il tavoliere è utilizzato ma solo una sua zona, comunque di forma quadrata.
Due giocatori si alternano ponendo pedine del proprio colore nelle intersezioni del goban. Il primo a creare una sequenza orizzontale, verticale o diagonale di esattamente cinque pedine vince (se quindi una mossa crea una sequenza di più di cinque pedine il giocatore di turno non vince e il gioco continua).
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 goban in cui è in corso una partita di go-moku e visualizzi in output lo stato della partita (in corso, il bianco ha vinto, il nero ha vinto, patta; il caso in cui ci siano sequenze vincenti per entrambi i giocatori è da considerarsi una situazione non valida e va segnalata).
La dimensione del campo di gioco (comunque quadrato) può essere variabile con un lato massimo di 19 incroci.
La rappresentazione del campo di gioco è formato da una sequenza di N (N <= 19) righe ognuna di N caratteri. Il carattere '.' è usato per rappresentare una intersezione vuota, il carattere 'O' indica un pezzo bianco e il carattere 'X' indica un pezzo nero.

Esempio: a fronte del goban nella seguente rappresentazione

.O..XX.XX..
..........O
..O..O.....
.....O.O...
.X...OX....
.XX..OX....
.O...OX....
.....OX..O.
......X....
..O........
...........

il programma dovrà visualizzare:

Il nero ha vinto

Esercizio 2

Si scriva un programma che accetti da linea di comando una sequenza numeri interi. Il primo di tali numeri è da considerare il numero bersaglio, i restanti numeri, che dovranno essere in ordine crescente, sono da considerare la sequenza di ricerca.
Realizzare un programma che faccia uso di un algoritmo ricorsivo per verificare la presenza del numero bersaglio nella sequenza di ricerca (visualizzando in tal caso il messaggio 'trovato' e il messaggio 'non trovato' in caso contrario). Tale algoritmo dovrà essere ottimizzato tenendo in considerazione che la sequenza di ricerca è ordinata.