Implementare la seguente funzione:
bool SumExists(int[] data, int sum)
che restituisce true se esistono due elementi nell’array data la cui somma è sum e definirne la complessita in notazione O.
-quack
P.S. titolo leggermente alterato per arginare l’eventuale ondata spam
Dato un albero binario (vedasi esempio figura)

si implementi la funzione:
TrovaAntenatoComune(node root, node first, node second)
che restituisce l’antenato comune più “vicino” ai due nodi o sollevi un’eccezione se uno dei due nodi non è raggiungibile dalla radice.
Esempio:
TrovaAntenatoComune(A, D, I) = B
TrovaAntenatoComune(A, P, F) = E
-quack
Data una classe X_Class ed una proprietà Y_Property di tipo Zeta:
class X_Class
{
public Zeta Y_Property { get; set; }
}
ricavare il nome della proprietà sotto forma di stringa in maniera programmatica (hint: usare la versione 4.x del Framework).
BONUS POINT: L’esercizio ha anche un suo perché, stabilire quale.
Soluzione:
public static string YPropToString()
{
return ((MemberExpression)
((Expression<Func<X_Class, object>>)
((o) => o.Y_Property)).Body).Member.Name;
}
Probabilmente si può fare di meglio. Lo scopo, come spiegato nei link dei commenti, è di fare in modo che il codice non compili se viene rinominata una proprietà
-quack
Per il dileggio del lettore interessato dall’affascinante mondo del parsing (sì, ne sto scrivendo un altro in virtù della già citata maledizione).
Data la seguente grammatica ( S il simbolo di partenza, in maiuscolo i terminali, in minuscolo le regole di produzione), convertirla in forma LL(1):
S –> q
q –> ( q ) | r
r –> A u | ( t )
u –> B | ( t )
t –> u | t t
-quack
Su richiesta del nonno, scrivere un algoritmo che determini se ci sono ancora mosse possibili in una partita di Bejeweled o se sia GameOver.

L’input della funzione è una matrice NxN di byte dove il valore rappresenta uno dei possibili 256 colori (non è detto che siano in uso tutti).
A giudicare la soluzione sarà il nonno stesso. 
-quack