Hoje vou colocar uma postagem bem interessante, que
envolva vários assuntos e que interesse a todos.
Acontece que meu pai descobriu um novo hobby, ele está
“devorando” os jornais resolvendo caça-palavras (ou cruzadinhas para alguns).
Então eu me lembrei destas revistas com vários caça-palavras e fiquei pensando
em como são criados. Seguramente no começo eram feitos na mão mesmo. A pessoa
escrevia as palavras e depois preenchia os campos vazios com letras aleatórias.
Como vocês já devem ter percebido eu não gosto muito de serviços
repetitivos. Quando você estiver fazendo sempre a mesma coisa, pare e pense se
não há uma forma automática de fazer este processo. Normalmente há!
Então pensei em uma forma automática de criar estas cruzadinhas. Não é
tão automática, mas no final do artigo eu falo mais sobre isto.
Veja o processo de como automatizar a produção de um caça-palavras no
Excel:
1 – Defina o tamanho da sua matriz. No meu caso escolhi uma de 10 linhas
por 10 colunas.
2 – Escreva as palavras que deverão ser encontradas (como na imagem).
3 – Monte uma tabela como a que aparece na imagem abaixo. Em uma linha coloque números e na outra coloque letras. Eu fiz em
duas linhas para ficar melhor na imagem, mas poderia ser feito como colunas.
4 – Selecione toda a matriz da cruzadinha. No meu caso seria “B2:K11”.
Fiz em duas matrizes para ficar mais fácil à visualização, mas é preciso apenas
de uma.
5 – Aperte a tecla F5 (ou Ctrl+G). Isto irá abrir a ferramenta “Ir
para”.
6 – Clique em especial e depois clique em “em branco”. Dê “OK”. Perceba
que apenas as células em branco ficaram selecionadas.
7 – Aperte F2 para ativar a digitação. Ela pode ser ativada em qualquer
uma das células, sem problema.
8 – Digite a fórmula que aparece na imagem:
=PROCH(ALEATÓRIOENTRE(1;21);$B$13:$V$14;2;FALSO) – Abaixo explico esta fórmula.
9 – Aperte Ctrl+Enter. Com isto a fórmula será inserida em todas as
células selecionadas.
10 – Caso queira gerar novas letras aperte a tecla F9.
11 – Pronto. A sua cruzadinha está feita. Para que as letras sejam
fixadas, ou seja, para que deixem de se alterar a cada atualização, selecione a
matriz, aperte Ctrl+C, clique com o botão direito sobre a matriz e clique em
“Colar especial”. Escolha a opção “Valores” e dê “Ok”.
Esta é uma forma de criar uma cruzadinha automaticamente. Entenda a fórmula:
Estão sendo utilizadas duas funções: PROCH e ALEATÓRIOENTRE.
Poucas pessoas conhecem a função PROCH apesar de ela ser exatamente igual à função PROCV, só que com linhas em vez de colunas. A função PROCH irá fazer uma correspondência entre a primeira e a segunda linha. Ou seja, informamos um número, e a função retorna a letra abaixo deste número.
Porém não faria sentido escrevermos os números. Para isto utilizamos a função ALEATÓRIOENTRE. Esta função irá gerar aleatoriamente números inteiros dentro do intervalo estipulado, no nosso caso entre 1 e 21.
Perceba que é preciso travar o intervalo da matriz. Para isto são utilizados os cifrões (referência absoluta) em $B$13:$V$14.
É isto. Ou não! Alguém tão exigente quanto eu poderia dizer que este processo poderia ser ainda mais automático. De forma que o usuário apenas digitasse as palavras que quer inserir na cruzadinha e ela fosse feita automaticamente.
Eu realmente não tentei isto. Acho possível, mas bem complicado. Se eu fosse fazer eu tentaria programar vários loopings de forma a tentar todas as possibilidades de encaixe das letras na matriz. E ver se em alguma delas consegue encaixar todas as palavras. Realmente não é fácil, mas deve ser possível.
Outra coisa bem importante é analisar as palavras geradas aleatoriamente. Não queremos que apareçam palavrões em uma revista que pode ser voltada ao público infantil também. Acredito que isto poderia dar até um processo. Fica a dica para ganhar uma grana. Pegue revistas infantis e busque palavrões. Depois arrume um bom advogado, abra um processo e espere uns 15 anos até o resultado sair. Pode ser um bom investimento para a aposentadoria.
Mas voltando, como poderíamos analisar se existem palavrões no meio da cruzadinha? Também não é algo tão simples, mas bem mais simples do que o problema anterior. Também teria que ser feito com loopings no VBA. Primeiro eu escreveria uma lista das palavras que não podem estar na cruzadinha. Depois eu programaria loopings que fossem selecionando célula por célula e juntando as letras em todas as direções para ver se alguma delas é igual às palavras na lista. Lembre-se que é necessário testar palavras de vários tamanhos.
Bom, é isto. Espero que tenham gostado e aprendido. Se tiverem dúvida sobre alguma passagem é só deixar uma mensagem.
Comente também se você conseguiu criar um caça-palavras.




