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

Lunedì quiz 8

Input: un numero intero non tanto grande.

Output: un array contenente i nodi foglia di un albero binario inverso completamente bilanciato di profondità pari al valore in input.

Per albero binario inverso intendo un albero in cui ogni nodo ha un puntantore al nodo “padre”.

BinaryTree

È responsabilità dell’algoritmo allocare un numero necessario e sufficiente di nodi (il campo “data” non è necessario da inizializzare).

-quack

Pubblicato lunedì 29 novembre 2010 alle 8:11 PM - 6 commenti so far
Archiviato in: Codice

Lunedì quiz - 7

Scrivere un algoritmo super performante in grado di analizzare il risultato di partite tic-tac-toe e dichiarare se c’è il vincitore per ogni partita. Si assume che le partite abbiano risultati validi quindi la risposta è limitata ad 1, X o 2.

image

-quack

Pubblicato lunedì 22 novembre 2010 alle 8:37 AM - 18 commenti so far
Archiviato in: Codice

Lunedì quiz - 6

Creare un iteratore che riceva un altro iteratore in input e rimuova i duplicati consecutivi dall’iterazione; evitare possibilmente le facility di iterazione del C# 2.0. La lista di input è fatta di interi (positivi e negativi) marcata da 0 come elemento finale.

Esempio:

input: 1,2,2,2,2,2,5,2,3,1,1,1,6,0; output: 1,2,5,2,3,1,6,0.

Domanda bonus:

Si possiedono due uova identiche che si rompono se lanciate da una specifica altezza. Stabilire da quale piano di un grattacielo di 100 piani le uova si rompono minimizzando per il caso peggiore.

-quack

Pubblicato lunedì 15 novembre 2010 alle 7:40 PM - 50 commenti so far
Archiviato in: Codice

Weekend coding

Uno degli spezzoni più topici di “Office Space” è il momento in cui il protagonista chiede al vicino di casa che cosa farebbe se avesse un conto in banca multi milionario: spiega che il modo in cui una persona risponde da indicazioni sulle proprie inclinazioni e trovare un lavoro che risponda a tali inclinazioni è fonte di quotidiana serenità. Il vicino di casa per la verità un po’ rustico risponde che con un tal conto in banca farebbe un mini Bunga Bunga party (two chicks at the same time, man!). Il tutto mi ha fatto riflettere su come ho speso una piccola parte del mio weekend scorso…

lawrence-office-space

Eravamo rimasti che con MyMovies ho avuto l’opportunità per utilizzare al meglio le quintalate di byte non utilizzate. Ho pensato perciò al modo più pratico di rippare i neo-classici senza sbattermi tanto. Ho creato una piccola applicazione che non fa altro che aspettare l’inserimento di un DVD, copiarne il contenuto e sputarlo fuori. L’unica operazione manuale rimanente è quella di sfilare un DVD e infilarne un altro. Mi è sembrato opportuno fare girare l’applicazione sul server che di suo è sempre online, ma ci voleva un sistema per notificare che tutto andasse per il verso giusto o meno senza dover tenere gli occhi incollati ad uno schermo. Ho deciso per una notifica audio con tre wav distinti: uno “accessing data” per indicare che il DVD video è stato riconosciuto come tale e due suoni distinti per indicare l’esito del ripping con o senza errori. A questo punto, forte dell’esperienza di PeoneFS, ho deciso di convertire l’applicazione in un servizio (demone) in modo tale da essere resiliente al reboot e non richiedere un’utenza loggata per il tutto. Ovviamente sviluppo su Windows 7 e con dei brevi esperimenti non sono riuscito a trovare il modo per far proferire neppure un sibilo dal servizio tirato su alla meno peggio; mi son meravigliato della cosa e cercando su Google ho trovato le teorie più assurde: all’atto pratico però l’audio era perfettamente funzionante su XP/Win2k3. Ho deciso di chiedere delucidazioni interne e…

…sorpresa! Il problema è dovuto ad un baco introdotto in Windows Vista dovuto al fatto che la sessione in cui girano i servizi non è più la stessa di quella in cui gira il desktop. Un mio collega mi ha ringraziato per la scoperta ma dubito che il baco verrà sistemato con i prossimi SP. Io mi son tranquillizzato, seguirà un po’ di fit&finish e vai con un bel ripping di massa.

-quack

Pubblicato venerdì 29 ottobre 2010 alle 10:41 PM - 12 commenti so far
Archiviato in: Codice