A maioria dos programadores que conheço curtem passar o tempo livre resolvendo desafios, então eu gostaria de propor um para quem se interessar.
É um desafio diferente, a complexidade não é a mesma dos problemas matemáticos e quebra-cabeças lógicos, mas não deixa de ser bem interessante.
O problema
1. Existe uma “lista negra” de empresas queimadas na praça. São as chamadas “inidôneas” e “suspensas”.
O Cadastro Nacional de Empresas Inidôneas e Suspensas (CEIS) é um banco de informações mantido pela Controladoria-Geral da União que tem como objetivo consolidar a relação das empresas que sofreram sanções pelos órgãos e entidades da Administração Pública das diversas esferas federativas.
Ele pode ser acessado aqui: http://www.portaltransparencia.gov.br/ceis/
Pra facilitar, já exportamos os dois bancos no formato CSV. Baixe-os aqui.
2. Existe um formulário do TSE na web que permite consultar se uma determinada empresa foi doadora de campanha para algum candidato. Ele traz também os detalhes dessa doação, e principalmente para quem foi o dinheiro.
Ele fica aqui: http://www4.tse.gov.br/spce2008ConsultaFinanciamento/consultaReceitaDespesaCandidatoServlet.do
Queremos encontrar a intersecção entre esses dois mundos, que nos traria um resultado muito revelador: quem são os políticos que recebem dinheiro de empresas inidôneas. A idéia é usar o CNPJ das listas na busca do TSE para descobrir se há conexões e quais são os seus detalhes.
A solução
Está dada a largada. Quem quiser debater o problema ou mandar tudo resolvido pode usar os comentários deste post. Você também pode perguntar no Twitter pra mim (@pedrovalente) ou para o Fabiano Angélico (@fangelico), da Transparência Brasil. Foi ele quem me propôs o desafio, que resolvi compartilhar com quem quiser ajudar.
Só existe uma condição para participar, que você libere todo o código e explique como fez, para que outras pessoas também consigam reproduzir o seu resultado e aprender com ele.
O prêmio é apenas o reconhecimento público de um trabalho bem feito, e a satisfação de ter gasto seu tempo livre com um desafio que realmente pode ter algum impacto na vida real.
Se esta experiência der certo e alguém responder, quem sabe pode ser o início de uma série de cooperações independentes entre jornalistas e programadores na busca de menos sacanagem com o dinheiro público.
Atualização de domingo à noite (15/3):
Parece que já temos a resolução do problema. O Marcos Vinícius da Silva, de Ribeirão Preto, foi o primeiro a mandar uma solução que consegui rodar tranquilamente e pareceu funcionar direitinho. Com a palavra, o próprio Marcos:
Estou te mandando os fontes do que fiz até agora para o desafio.
Os fontes que estou te mandando assumem o Python instalado (o meu aqui é o 2.5.2), e que os arquivos Inidoneas.csv e Suspensas.csv estejam no mesmo diretorio dos fontes.
O programa irá gerar os arquivos saida_Suspensos.csv e saida_Inidoneos.csv, na mesma ordem que aparecem nos resultados das pesquisas realizadas no site.Para executar o programa, basta chamar “python pesquisar.py”. Eu testei no Linux (Ubuntu), mas creio que funcione no windows também, pois não utilizei nenhum recurso fora do que o Python oferece.
Espero que seja útil!
Empacotei o código do Marcos com os arquivos CSV junto para quem quiser testar também.
Depois de rodar o código, estes foram os resultados encontrados no cruzamento.
Não posso deixar de agradecer também o Julio Biason, por ter liberado seu código inicial e aos outros que tentaram resolver. Acabo de dar uma olhada (23h) no repositório compartilhado pelo Julio e parece que ele está bem perto de um resultado. Aguardo seu relato para publicar aqui.
Fiquem à vontade pra comentar sobre as soluções e ajudar a melhorá-las, se necessário.
Agora é digerir esses dados e tentar interpretar o que eles significam. Já vi alguns nomes bem interessantes ali dentro…
Atualização de segunda (16/3):
O Julio Biason também chegou à solução. Pontos pra ele por ter colocado o código num repositório compartilhado e feito uma visualização mais fácil do resultado. Parabéns!