Articoli con tag ‘concorso’
Infomedia: Trofeo Dev Tutorial 2011
Avete un tutorial nel cassetto che prende polvere in attesa di essere pubblicato?
Avete sempre pensato di scriverne uno ma non ne avete mai trovato il tempo?
L’iniziativa di Infomedia che sto per segnalarvi potrebbe essere l’occasione che stavate cercando per scrollarvi di dosso l’ignavia e tornare a consumare la vostra tastiera.
Infomedia è un editore che ha una lunga storia alle spalle, negli ultimi anni piuttosto travagliata. Da qualche tempo rinata dalle proprie ceneri ha deciso di indirre un concorso che la vedrà impegnata per la prima metà dell’anno nel selezionare sei articoli, uno al mese, a cui verrà corrisposto un premio in denaro di 250€.
Un motivo in più per tifare Spagna ai mondiali
O Germania, oppure Olanda.
I ragazzi di Sitepoint, editore che spesso ha delle buone offerte, ne hanno pensata una delle loro.
Via via che le partite si susseguono i e le squadre vengono eliminate o proseguono il loro cammino verso la finale, i libri ad esse associate vengono venduti con percentuali di sconto sempre maggiori fino ad arrivare ad incoronare l’ebook campione del mondo che verrà offerto gratuitamente per le 24 ore successive alla finale della World Cup.
Le squadre sconfitte fanno tornare immediatamente il libro loro abbinato a prezzo pieno, quindi, per chi l’apprezza c’è anche la possibilità di sfidare la sorte nel tentativo di ottenere uno sconto maggiore.
Io ho deciso di tifare Spagna perché è abbinata all’unico libro, tra quelli rimasti in concorso, che mi interessa, e perché gli spagnoli mi stanno simpatici. Per fortuna si tratta di una squadra forte capace di blackout improvvisi e questo renderà l’attesa ancora più interessante.
Voi per chi tifereste?
Un’ultima cosa, lo so che avrei potuto scrivere prima questo pezzo per permettere a qualcuno di approfittare dell’offerta anche prima ma ho scoperto anche io appena adesso la promozione (e magari ne hanno parlato tutti da giorni).
Golf Programming: permutazioni
Proseguiamo con il golf programming con un nuovo problema da risolvere.
Anche questa volta si tratta di un classico (anche se programmarlo secondo le regole del golf me lo ha fatto vedere sotto una nuova luce).
Le Regole
Per che non le ricordasse, e per chi comincia da questa puntata a seguire la rubrica, riporto le regole:
- Scrivere un programma, il più breve possibile, che risolva il problema enunciato prima e riportato meglio qui sotto;
- per ogni linguaggio utilizzato è considerato vincitore il programma scritto usando meno caratteri;
- l’efficienza dell’algoritmo non è un fattore fondamentale ma il programma deve terminare senza errori;
- si può optare, se più concisa, per una funzione, piuttosto che un programma intero;
- ovviamente non di vince niente se non la soddisfazione di aver accettato una sfida ed averla vinta.
L’algoritmo
L’algoritmo da implementare deve, data una stringa, calcolare tutte le sue possibili permutazioni.
Al solito, un esempio servirà a chiarire tutto meglio di una descrizione formale:
data in input la stringa abc, il programma deve stampare, le stringhe abc, acb, bac, bca, cab e cba.
Ovviamente l’ordine delle stringhe restituite non è importante mentre lo è non riportare ripetizioni: la stringa aba, ad esempio, deve dare come risultato solamente aba, aab e baa.
A parte i soliti rubysti che avranno sicuramente un costrutto nel linguaggio tipo .permuta secondo me si tratta di una sfida stimolante, specie per chi volesse risolverla in ricorsione. Come le altre volte, posterò la mia soluzione nel prossimo fine settimana. Buona sfida.
Golf programming: veni vidi dixi
Se le mie reminiscenze di latino non mi ingannano veni, vidi, dixi dovrebbe essere la parafrasi del ben più famoso detto di Giulio Cesare.
Proseguiamo con il golf programming con un nuovo problema da risolvere. Le regole sono uguali a quelle dell’altra volta:
- Scrivere un programma, il più breve possibile, che risolva il problema enunciato prima e riportato meglio qui sotto;
- per ogni linguaggio utilizzato è considerato vincitore il programma scritto usando meno di caratteri;
- l’efficienza dell’algoritmo non è un fattore fondamentale ma il programma deve terminare senza errori;
- si può optare, se più concisa, per una funzione, piuttosto che un programma intero;
- ovviamente non di vince niente se non la soddisfazione di aver accettato una sfida ed averla vinta.
L’algoritmo
L’algoritmo da implementare deve, dato un numero, calcolare il successivo termine della sequenza look and say, una particolare successione matematica costruita descrivendo i diversi termini. Un esempio servirà a chiarire tutto meglio di una descrizione formale; scriviamo i primi cinque membri della successione che comincia con 1:
1, 11, 21, 1211, 111221, …
il primo termine è il seme della sequenza ed è scelto senza nessun vincolo. Il secondo termine descrive il primo, in questo caso abbiamo un numero uno e quindi otteniamo 11. Il terzo termine descrive (si tratta di due cifre 1) il secondo ottenendo 21, il quarto 1211 “legge” il terzo che contiene un due ed un uno e, seguitando, il quinto termine, è 111221. Il sesto, ovviamente, corrisponde a 312211.
Partenza
La sfida consiste nello scrivere una funzione che preso in input un termine qualunque della sequenza, ne restituisca il successivo.
Come al solito aspetterò fino alla fine della settimana per postare la mia versione. Chi volesse cimentarsi non ha altro da fare che postare la propria soluzione tra i commenti.
Eineki
Golf programming: Venerdi 13.
Siete capaci di scrivere un programma, nel linguaggio che più padroneggiate, per calcolare e stampare, dato un anno, quali venerdì tredici ci sono dentro? Se pensate di rispondere si, potreste provare a scriverlo come se giocaste a golf (e poi, magari, potreste postare la vostra soluzione in un commento qui sotto).
Il golf programming è una disciplina per programmatori, consiste nello scrivere il programma più breve possibile per risolvere un determinato problema. Ho visto qualche prova a riguardo nel sito stackoverflow.com, in inglese, ed ho pensato di riproporla su queste pagine, giusto per sciogliere un po’ i muscoli delle dita e scrostare qualche ingranaggio del cervello.
Le regole sono semplicissime:
- Scrivere un programma, il più breve possibile, che risolva il problema enunciato prima e riportato meglio qui sotto;
- per ogni linguaggio utilizzato è considerato vincitore il programma scritto usando meno di caratteri;
- l’efficienza dell’algoritmo non è un fattore fondamentale ma il programma deve terminare senza errori;
- si può optare, se più concisa, per una funzione, piuttosto che un programma intero;
- ovviamente non di vince niente se non la soddisfazione di aver accettato una sfida ed averla vinta.
La sfida di oggi, come anticipato consiste nello scrivere un programma che, dato un anno di questo secolo (e quindi dal 2000 al 2099), stampi a video, o mostri su una pagina web, quali sono i venerdi 13, se ne esistono, che cadono in quell’anno. Non c’è bisogno di validare l’input (si assume che il dato in ingresso sia sempre valido) e l’elenco dei diversi giorni può essere separato dal carattere che ritenete più opportuno.L’anno deve essere nel formato a quattro cifre. Ovviamente non vale utilizzare funzioni predefinite che restiuiscono il giorno della settimana a partire da una data.
Ad esempio, per il 2009 bisogna stampare 13 Febbraio 2009, 13 Marzo 2009 o 13 Feb 2009, 13 Mar 2009 oppure, ancora 13/02/2009 , 13/03/2009
Se vi state chiedendo cosa ho fumato stasera per venirmene fuori con un problema del genere, sappiate che non fumo e che non ho visto, causa bidone, il remake dell’omonimo film.
Aggiungeteci che il protagonista del film si chiama J(a)son e capirete perché la mia versione sarà scritta in javascript.
Per ora è tutto, domenica mattina, tra i commenti troverete la mia soluzione.
Uno spunto sugli algoritmi da utilizzare potete trovarlo in questa pagina in inglese sull’algoritmo del giorno del giudizio. E’ in inglese, ma un inglese talmente elementare che anche google riesce a tradurlo quasi decentemente
Se qualcuno avesse riferimenti in italiano allo stesso algoritmo e volesse indicarli tra i commenti è sicuramente il benvenuto.

