Há alguns anos atrás eu era viciado em programar, no caso resolver os problema da ACM. Era tão viciado que me obrigava a resolver por dia ao menos dois problemas, enquanto não conseguisse não iria embora para casa ficando no laboratorio de computação da faculdade onde estudo até tarde da noite, pois não tinha PC em casa. Depois de um tempo meu vicio se foi, trabalhos, provas, obrigações diversas fizeram com que eu deixasse de lado essa diversão. Hoje pesquisando algumas coisas sobre Python encontrei um site de contests, muito parecido com o da ACM, porém melhor. Melhor porque ele não aceita apenas problemas codados em C, Java (eka), C++ ou pascal. No SPOj (Sphere Online Judge) eles aceitam quase tudo, e nesse quase tudo tem Python, Lua, Fortran, PHP, Scheme, D, Assembler, Ada, Prolog, etc. São várias as linguagens, mas claro nem todos os problemas aceitam ser resolvidos em Assembler por exemplo, alguns aceitam todas as linguagens listadas no site, outros não. Em cada problema há uma especificação quanto as linguagens em que ele pode ser resolvido, tambanho máximo do arquivo, etc.
Mas bem, deem uma olhada no site, para quem já brincava no site da ACM este novo “brinquedo” é mais do que maravilhoso, e pelo visto eu voltarei a ser um viciado em programar problemas de contests, e agora não apenas em C (linguagem que eu amo pra caralho), mas também em Python (linguagem que eu amo²). Pode parecer nerdisse e bobeira ficar brincando com problemas destes sites, mas não é. Afinal é a pratica que leva a perfeição, e como diziam alguns professores meus “só se aprende a programar bem se você sentar a bunda na cadeira e programar até enjoar”. Resolver os problemas destes sites é mais uma forma de por em pratica sua lógica e agilidade em programar, porque programar não só conhecer bem uma linguagem, mas saber fazer uso dela e criar a melhor lógica para resolver o problema ainda mais com tamanha variedade de linguagens para codar.
Um site excelente é o TopCoder. Tem vários tipos de competições, incluindo de programação (seção: Algorithms). Infelizmente está limitado às linguagens C++, Java, C# e VB.
Questão interface dá de 10 a 0 no repositório da ACM (antiva UVa). Acho que o principal mérito desse site é permitir acessar as soluções desenvolvidas pelos outros usuários – isto permite ver (e aprender) como programadores de primeiríssima linha codificam suas soluções.