Esercizio 1

Si consideri la seguente grammatica:

<frase> ::= <parola> | <parola><frase> | (<frase>) | (<frase>)<frase>

dove <parola> è una generica stringa.
Attraverso questa grammatica è possibile rappresentare generiche
frasi contenti delle subordinate delimitate da parentesi.
Scrivere un programma che a partire da una frase che rispetti
la grammatica precedentemente esposta, specificata su linea di
comando, costruista un albero generico in cui ogni nodo sia una
parola e che ogni subordinata sia un sotto-albero che dovra' avere
come genitore la parola che precede immediatamente la parentesi
aperta che delimita la subordinata stessa.
Il programma dovra' quindi, visitando opportunamente l'albero
visualizzare una frase esattamente speculare (la prima parola
sara' l'ultima, la seconda sara' la penultima, eccetera) alla
frase specificata in input.

Esempio:

A partire dalla seguente frase:

questa frase (che è un esempio (e che esempio)) rappresenta (casomai servisse (e generalmente serve) a chi non ha capito (ancora)) un esempio di possibile input

Si dovrà costruire il seguente albero:

questa
frase	
	che
	è
	un
	esempio
		e
		che
		esempio
rappresenta
	casomai
	servisse
		e
		generalmente
		serve
	a
	chi
	non
	ha
	capito
		ancora
un
esempio
di 
possibile
input

E visualizzare infine:

input possibile di esempio un ((ancora) capito ha non chi a (serve generalmente e) servisse casomai) rappresenta ((esempio che e) esempio un è che) frase questa

Esercizio 2

Scrivere un programma che risolva il "gioco del cento".
Il gioco si svolge su una scacchiera 10 per 10.
A partire da una posizione determinata si deve cercare
di numerare tutte le caselle con un numero progressivo.
Una volta numerata una casella, la casella successiva
portà essere o collocata a distanza di due scacchi
se questa si trova sulla stessa riga o sulla stessa
colonna o collocata a distanza di uno scacco se
si trova in diagonale.
Il programma deve accettare in input la posizione della
casella iniziale e visualizzare una possibile soluzione,
se questa esiste, o visualizzare un messaggio che avvisi
che non esistono soluzioni possibili.