[gl-como] Algoritmi e dintorni

diego roversi diegor@tiscali.it
Mer 9 Feb 2011 21:13:21 CET


On 05/02/11 19:46, Marco Castorina wrote:
> Ciao a tutti,
>  recentemente mi sono imbattuto in un colloquio che come
> primo passo richiedeva scrivere un algoritmo per risolvere un
> "semplice" problema. Immagino che questo tipo di richieste
> sia comune in un corso di ingegneria informatica, ma non
> avendone (ahime!) frequentato uno, risultano a me come nuove.
> Volevo sapere se esiste una sorta di repository con questi
> algoritmi che sia accessibile a tutti o eventualmente un libro
> che tratti di questi argomenti. Non parlo della codifica delle
> strutture (lista, stack, etc.). Per un esempio dei problemi a
> cui mi riferisco, potete consultare questo sito:
> http://codility.com/tasks/

Beh di algoritmi ce ne per tutte le salse. E di solito spaziano in
argomenti diversi.

Un buon testo introduttivo sull'argomento, con gli algoritmi "base", ma
non solo, che un buon informatico dovrebbe conoscere e' il solito
"Algoritms in C++". Dello stesso autore c'e' Algoritms in C e Algoritms
in Java. Ovviamente sono fondamentalmente lo stesso libro, solo che il
codice e' scritto in un linguaggio diverso.

Qui c'e' un sunto del libro: http://algs4.cs.princeton.edu/home/

Oltre che essere un testo introduttivo e' anche un buon testo di
riferimento, da consultare quando serve.

Se ti vuoi allenare in problemi di programmazione, probabilmente ti
potrebbe interessare questi:

http://projecteuler.net/

sono una serie di problemi "numerici" in cui il risultato del programma
da scrivere e' un numero. Inserisci il risultato numerico del problema
e' ti dice se e' la soluzione corretta. Sei libero di scrivere il
programma nel linguaggio che preferisci,  tanto devi dare solo il
risultato del programama. Parte con problemi assolutamente banali, e
diventano man mano sempre piu' complessi.

http://www.topcoder.com/

Questo e' gia' un po' piu' complesso. In pratica periodicamente indicono
delle "gare" online, in cui vengono proposti alcuni problemi di
difficolta' variabile, che vanno risolti entro un certo tempo. La cosa
carina e' che ci si puo' esercitare su problemi vecchi.

Secondo me i problemi di questo genere richiedono di essere un po' piu'
pratici, ma probabilmente sono piu' simili a quelli che possono
chiederti ad un colloquio di lavoro.

Se il tuo scopo e' di imparare a scrivere algoritmi, credo che l'unico
modo e' di imparare quelli base e cercando di capire bene come
funzionano (riscriverli nel proprio linguaggio preferito, dopo averli
provati con carta e matita, ad esempio e' un buon esercizio). E poi
provando a cimentarsi con quelli del progetto eulero (se hai discrete
basi di matematica). L'ideale sarebbe farlo sfidando qualcuno a farli e
vedere chi ha trovato la soluzione piu' furba. Di solito cosi' si impara
qualche trucco.

Ciao,
  Diego.


Maggiori informazioni sulla lista gl-como