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. Anche nel caso di uso di più classi fare in modo di consegnare un unico sorgente (a tal fine si rammenta che un file sorgente può contentere un'unica classe pubblica ma può contenerne altre non pubbliche).

Esercizio: T9

Scrivere un programma che accetti in input da riga di comando il nome di un file di testo e una stringa composta da una sequenza cifre numeriche comprese fra 2 e 9.

Il file di testo deve contenere una lista di parole, una su ogni linea, da usare come dizionario.
La sequenza di cifre rappresenta idealmente il risultato di una immissione di testo su di un telefono cellulare dotato di sistema T9.

Il programma deve visualizzare in output tutte le parole contenute nel dizionario che possano essere composte con la sequenza data (o, in alternativa, un messaggio che informi che nessuna parola può essere composta).

Perchè una parola sia componibile con una sequenza, ogni lettera deve essere associata alla corrispondente cifra nella sequenza sapendo che le lettere abc sono associate alla cifra 2, le lettere def alla cifra 3 e così via, come nella seguente tabella:

Cifra Lettere
2 abc
3 def
4 ghi
5 jkl
6 mno
7 pqrs
8 tuv
9 xywz

Esempio:

Lanciando il programma con java Esercizio dizionario.txt 83786 , dove il file dizionario.txt contiene:

scalo
verto
testo
prova

si potrà ottenere in output (l'ordine non è rilevante):

verto
testo