Congruenze

Piccole grandi formule interessanti. Da giovane ero in grado di calcolare la prima grazie ad un aiuto mnemonico per la parte più difficile relativa al mese e semplificando il calcolo limitandolo al secolo allora in corso e già passato. Raccolte qui per un piacere puramente estetico.

La congruenza di Zeller:

h = \left(q + \left\lfloor\frac{13(m+1)}{5}\right\rfloor + K + \left\lfloor\frac{K}{4}\right\rfloor + \left\lfloor\frac{J}{4}\right\rfloor - 2J\right) \mod 7,

(Analisi)

La luna nuova:

d = 5.597661 + 29.5305888610 \times N + (102.026 \times 10^{-12})\times N^2

(Spiegazione)

Formula di Oudin:

image

(spiegazione)

-quack

Pubblicato lunedì 4 giugno 2012 alle 5:46 AM - 0 commenti so far
Archiviato in: Codice

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 - 11 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