Site promove competições de programação
Essa dica é para quem gosta de programar ou para quem gosta de competições (ou os dois, como eu). O site TopCoder promove vários eventos on-line (e, às vezes, presenciais) que reúnem programadores do mundo todo competindo entre si na resolução de problemas de programação, criação de componentes, design de websites, entre outros. Cada categoria de competição possui um ranking que classifica os competidores e divide em faixas de cores. Nessa classificação cada competidor recebe um rating que define sua posição e cor. É muito interessante a competição entre colegas para ver quem consegue alcançar e manter o maior rating.
As competições ocorrem nas seguintes categorias: Algorithm, Software Design, Software Development, Software Assembly, Software Testing, High School e Marathon Matches, além de competições de design gráfico de websites, logotipos, ícones e outros que ocorrem em uma área separada do site (TopCoder Studio). Neste post irei explicar o funcionamento das competições de algoritmos (Algorithm), as quais participo com maior freqüência.
Algorithm:
Competições cujo objetivo é elaborar e implementar algoritmos para solucionar os problemas dados (veja um exemplo aqui). Para a codificação dos algoritmos estão disponíveis as linguagens Java, C++, C# e VB. As competições de algoritmos são chamadas de SRMs (Single Round Match) e acontecem com grande freqüência (quase semanalmente). Em alguns eventos especiais são oferecidos prêmios aos melhores colocados, que vão desde brindes e camisetas até premiaçõesem dinheiro. Por exemplo, uma competição anual do site, denominada TopCoder Open, distribuiu e ainda distribuirá este ano (a final acontecerá no final do mês) cerca de $100000 em prêmios, sendo $25000 para o primeiro colocado, $10000 para o segundo e assim por diante (eu ganhei uma camiseta e um frisbee).
Os problemas de cada competição são normalmente divididos em três categorias, sendo um fácil, um médio e um difícil. Ao iniciar a leitura de um problema, este inicia com uma certa pontuação, definida pela dificuldade do problema e que geralmente é a seguinte: 250 para o mais fácil, 500 para o médio e 1000 para o mais difícil. Conforme o tempo passa, a pontuação recebida pela resolução do problema vai diminuindo, incentivando os competidores a encontrarem a solução o mais rápido possível. Após concluir a implementação e testes da solução o competidor submete esta e recebe a informação de quantos pontos obteve. Porém esta pontuação ainda não é definitiva, pois não foi avaliado se a solução realmente apresenta os resultados esperados. Após a fase de codificação dos problemas (Coding Phase, com duração de 1h15min), inicia-se a fase de Challenge, com duração de 15 minutos. Nesta fase os competidores podem acessar os códigos criados pelos outros e propor casos de teste em que esses códigos falhem. Caso o código realmente falhe com o teste proposto, o competidor que implementou a solução perde os pontos referentes ao problema e o competidor que “deu o challenge” ganha 50 pontos. Caso contrário, o proponente do challenge que falhou perde 25 pontos. A última fase é chamada de System Test, pois serão realizados todos os testes predefinidos pelo sistema. Após o término de cada SRM o ratting dos competidores é atualizado.Para competir no TopCoder basta cadastrar-se no site, baixar a "Arena" (sistema onde são realizadas as competições) e participar dos SRMs.
O Brasil possui atualmente 163 competidores registrados. Vamos aumentar esse número!!! Aguardo vocês lá.
Até o próximo post...
Algorithm:
Competições cujo objetivo é elaborar e implementar algoritmos para solucionar os problemas dados (veja um exemplo aqui). Para a codificação dos algoritmos estão disponíveis as linguagens Java, C++, C# e VB. As competições de algoritmos são chamadas de SRMs (Single Round Match) e acontecem com grande freqüência (quase semanalmente). Em alguns eventos especiais são oferecidos prêmios aos melhores colocados, que vão desde brindes e camisetas até premiações
Os problemas de cada competição são normalmente divididos em três categorias, sendo um fácil, um médio e um difícil. Ao iniciar a leitura de um problema, este inicia com uma certa pontuação, definida pela dificuldade do problema e que geralmente é a seguinte: 250 para o mais fácil, 500 para o médio e 1000 para o mais difícil. Conforme o tempo passa, a pontuação recebida pela resolução do problema vai diminuindo, incentivando os competidores a encontrarem a solução o mais rápido possível. Após concluir a implementação e testes da solução o competidor submete esta e recebe a informação de quantos pontos obteve. Porém esta pontuação ainda não é definitiva, pois não foi avaliado se a solução realmente apresenta os resultados esperados. Após a fase de codificação dos problemas (Coding Phase, com duração de 1h15min), inicia-se a fase de Challenge, com duração de 15 minutos. Nesta fase os competidores podem acessar os códigos criados pelos outros e propor casos de teste em que esses códigos falhem. Caso o código realmente falhe com o teste proposto, o competidor que implementou a solução perde os pontos referentes ao problema e o competidor que “deu o challenge” ganha 50 pontos. Caso contrário, o proponente do challenge que falhou perde 25 pontos. A última fase é chamada de System Test, pois serão realizados todos os testes predefinidos pelo sistema. Após o término de cada SRM o ratting dos competidores é atualizado.Para competir no TopCoder basta cadastrar-se no site, baixar a "Arena" (sistema onde são realizadas as competições) e participar dos SRMs.
O Brasil possui atualmente 163 competidores registrados. Vamos aumentar esse número!!! Aguardo vocês lá.
Até o próximo post...

2 comentários:
Muito bom incentivo ao estudo da programação, algo que todo "computeiro" deve ter prazer em fazer.
Abraços!
Muito bom, mas tem que saber orientação a objetos! Na minha opinião, a lógica de programação de quem participa cresce consideravelmente, só que não pode ficar apenas nos problemas fáceis né!
Postar um comentário