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.