sábado, 13 de novembro de 2010

Me desafiando...

Oi pessoal, já faz uns meses que não escrevo aqui, mas resolvi voltar. Neste segundo semestre do mestrado estou cursando três disciplinas: Análise de Algoritmos, Sistemas Operacionais e Introdução à Computação Paralela e Distribuída. Acho que por isso está sobrando menos tempo para escrever por aqui. Além disso, tenho gastado parte do meu tempo livre treinando programação com problemas típicos de maratonas de programação. Não que eu tenha interesse em participar destas maratonas, mas gosto de resolver os problemas propostos nelas, sem compromisso, apenas para treinar conceitos que já aprendi.

Há algum tempo já sou cadastrado no UVA e recentemente me cadastrei no SPOJ e no SPOJ_BR, e me animei bastante pois sem ter resolvido tantos problemas já apareci no ranking e aí o ânimo/vício fica como quando jogamos um RPG e ganhamos um nível de experiência. Queremos então evoluir e evoluir a cada vez mais, o que agora vejo como possibilidade nestes desafios. Só que o vício de programar é um vício bom na minha opinião (que sou desta área), diferente dos RPGs e jogos online onde o tempo se esvai e você nem percebe o que aprendeu depois. Ou seja, quem evolui sou eu, e não meu avatar que nem se quer é "real" e posso acabar apagando o mesmo daqui alguns dias/meses/anos (o que confirmaria que joguei meu tempo no lixo).

Desde que comecei a resolver os problemas do SPOJ, sinto que melhorei na concepção de algoritmos e na programação com linguagem C e até um pouquinho com a C++. Utilizei de funções como a qsort da stdlib.h na linguagem C (que antes eu só ouvia falar) e que é uma implementação do algoritmo QuickSort. Para problemas que envolviam números primos, utilizei o Crivo De Eratóstenes, que já tinha visto na graduação mas nunca tinha utilizado em implementações e percebi que sem ele, quando os números são muitos grandes, é Time Limit Exceeded (TLE) com certeza.

No momento estou tentando aumentar o nível de dificuldade dos problemas que estou resolvendo, pois percebo que só assim vou conseguir aprender mais. Os problemas que estou tentando atualmente são basicamente sobre a utilização de grafos, aliás, acabo de resolver este que é relacionado a conexidade em grafos. Resolvi utilizando busca em profundidade.

Gostei de escrever sobre minhas experiências com os desafios de programação, possivelmente minhas próximas postagens serão sobre o mesmo assunto. Para quem se interessa no assunto, existe um livro chamado Programming Challenges, onde os exercícios são problemas do UVA, recomendo também. E nas minhas próximas férias, provavelmente vou gastar alguns dias lendo esse livro.


Bom, por hoje é só, espero que tenham gostado.

Abraços

Nenhum comentário:

Postar um comentário