Esercizio 1
Si scriva un programma che accetti in input da linea di comando il nome di un file di testo reppresentate un labirinto e visualizzi in output la struttura del labirinto come insieme di
corridoi orizzontali e verticali.
Il file di input è composto da una sequenza di righe di uguale lunghezza. Ogni riga contiene i caratteri . e X a reppresentare, rispettivamente, uno spazio percorribile o un muro.
Un esempio di file di input è il seguente:
X.XXXXXXXX
X.X......X
X.X.XXX..X
X.X.XXX..X
X.X.X....X
X...XXX..X
XXXXX.XX.X
X..XXX...X
XXXXXXX.XX
L'output del programma dovrà essere composto da una sequenza di linee aventi il seguente formato:
X,Y,D,L
dove X e Y sono le coordinate del punto iniziale del corridoio nel labirinto (si assuma che il punto in alto a sinistra abbia coordinata 0,0), D è o la lettere O o la lettera V per indicare che il corridoio si estende, rispettivamente, in orizzontale o in verticale, e L è il numero di spazi percorribili di cui il corridoio è formato. Nel caso di un corridoio formato da un solo spazio percorribile L sarà 1 e D può essere indifferentemente O o V .
Si noti che spesso un tratto percorribile appartiene a più corridoi diversi (avviene per tutte le intersezioni); in questo caso il programma può assumere indifferentemente che il tratto appartenga ad un corridoio piuttosto che all'altro, ma anche a tutti e due.
Nel caso in cui il programma usi come input il file dell'esempio precedente un possibile output può essere (notare che l'ordine dei corridoi può anche essere diverso):
1,0,V,6
3,1,V,5
4,1,O,5
7,2,V,4
8,2,V,6
5,4,O,2
2,5,O,1
5,6,O,1
1,7,O,2
6,7,O,2
7,8,O,1
Esercizio 2
Si scriva un programma che accetti in input da linea di comando il nome di un file di testo e restituisca in output il numero di linee fra loro differenti contenute nel file specificato.
Per questo esercizio non è possibile utilizzare le collezioni contenute nel package java.util .