Proponho um desafio para os “desenvolvedores”
Antes de chegar ao meu questionamento, eis o desafio:
Construa um programa que jogue o “jogo-da-velha” de forma que um humano (você) jogue contra o computador e, dada a sua habilidade de pensar, o resultado sempre seja um empate…
A possibilidade de você ganhar está excluída porque, ao jogar contra outro humano, a probabilidade de vocẽ ou o seu oponente ganharem é muito pequena (senão, acho, há um sério problema de raciocínio de ambas as partes).
A primeira regra para o desafio é que você não deve consultar estratégias usadas por outros desenvolvedores (ou matemáticos). Ou seja, usar o Google não vale! A solução tem que sair da sua cabeça… A outra regra, óbvia, a medida que você for estudando o problema, é que não vale criar um programa com um caminhão de ifs para testar todas as possibilidades (são 255168 jogadas possíveis!).
A terceira regra é a seguinte: Seu algorítimo tem que valer tanto para o humano começando o jogo quanto para o computador começando…
Proponho esse desafio por dois motivo: Se você encontrar grande dificuldade em concluir a tarefa, como pode esperar desenvolver qualquer sistema complexo?
O segundo motivo: Para desenvolver jogos é interessante que você inicie com os mais simples primeiro. Nada aparentemente mais fácil do que o bom e velho jogo-da-velha, não é? Para aqueles que não estão interessados em desenvolvimento de jogos, este é um bom exercício também…
Ainda, quero demonstrar que os problemas aparentemente simples têm soluções complexas. Como diria H.L. Mencken:
Para todo problema difícil há uma solução simples, fácil, óbvia… e errada!
A sorte está lançada…
Update: As aspas no título do post não é sarcasmo… trata-se apenas da ênfase para qual grupo de pessoas esse desafio é direcionado!