LunedìQuìz–serie 2012 #2

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

Pubblicato lunedì 20 febbraio 2012 alle 6:05 PM - 9 commenti so far
Archiviato in: Codice

Lunedì quiz - serie 2012 #1

Dato un albero binario (vedasi esempio figura)

image

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

Pubblicato martedì 7 febbraio 2012 alle 2:51 AM - 18 commenti so far
Archiviato in: Codice

Quiz riflessivo per programmatori C#

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

Pubblicato mercoledì 27 luglio 2011 alle 11:27 PM - 15 commenti so far
Archiviato in: Codice

Esercizio grammaticale

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

Pubblicato mercoledì 9 marzo 2011 alle 11:15 PM - 4 commenti so far
Archiviato in: Codice, Cazzate

Lunedì quiz–nono ed ultimo

Su richiesta del nonno, scrivere un algoritmo che determini se ci sono ancora mosse possibili in una partita di Bejeweled o se sia GameOver.

image

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. Smile

-quack

Pubblicato lunedì 6 dicembre 2010 alle 7:24 PM - 13 commenti so far
Archiviato in: Codice