Como resolver criptaritmos: quando letras viram números
Criptaritmo é aquele enigma onde cada letra esconde um dígito de 0 a 9, e a conta só fica certa se todas as letras estiverem trocadas corretamente. O problema clássico mais conhecido é SEND + MORE = MONEY, mas existe uma variedade enorme de variações que aparecem em competições de matemática e em livros de lógica. O que muita gente não sabe é que existem regras práticas que reduzem drasticamente o trabalho de força bruta. Começar testando combinações aleatórias é o caminho mais lento possível. Um cálculo rápido mostra que sete letras diferentes já geram 604.800 permutações. Se o problema tiver dez letras, você está olhando para 3,6 milhões de possibilidades. Ninguém quer passar uma tarde inteira testando isso à mão.
A lógica por trás de na conta armada cada letra representa um algarismo
A primeira coisa que eu sempre verifico é a coluna mais à direita. Em qualquer adição, essa coluna só depende das letras que aparecem nela. Se eu vejo A + B = C, com possíveis transportes, já elimino metade das combinações impossíveis sem escrever uma única linha de código. O transporte é o elemento mais subestimado nesses problemas. Mucha gente ignora que o valor máximo de um transporte em uma soma de duas colunas é sempre 1. Isso significa que quando você vê uma letra solitária no resultado de uma adição de duas palavras do mesmo tamanho, aquela letra quase certamente é 1. No SEND + MORE = MONEY, o M só pode ser 1 porque o maior transporte possível de quatro dígitos mais quatro dígitos gera no máximo um dígito adicional.
Outra pista poderosa está nas repetições. Se uma mesma letra aparece várias vezes em posições diferentes, ela tem o mesmo valor em todos os lugares. Isso conecta colunas que pareciam independentes. Uma equação na coluna das centenas pode restringir os valores possíveis na coluna dos milhares porque compartilham a mesma letra.
Passo a passo prático
Eu costumo seguir uma sequência fixa que funciona na maioria dos casos. Primeiro, escrevo a conta verticalmente, alinhando as colunas pela direita. Depois, identifico letras que só podem ter um valor único. Letras que são o dígito inicial de uma palavra nunca podem ser zero. Isso já elimina algumas opções logo de cara. Em seguida, analiso a coluna mais restritiva. Às vezes é a última, às vezes é uma do meio onde uma letra se soma consigo mesma. Se eu tenho B + B = B, o B só pode ser zero, mas como zero já está interditado para inícios de palavra, essa configuração é impossível. Esse tipo de contradição elimina ramos inteiros de busca.
Quando chego num impasse, uso eliminação por processo de eliminação. Se já atribuí valores para cinco letras e restam quatro, testo apenas as combinações possíveis para essas quatro. A tabela de multiplicação ou as somas das colunas intermediárias costumam travar o problema rapidamente. Eu me lembro de ter trabalhado num problema que parecia simples à primeira vista: um criptaritmo de multiplicação com seis letras. O empate veio na coluna dos dezenos, onde duas permutações aparentemente válidas coexistiam. A solução foi olhar para o produto total e verificar qual delas gerava um resultado com dígito final compatível. Levei cerca de vinte minutos descobrindo que o transporte naquela coluna específica tinha que ser par, o que eliminou todas as alternativas de uma vez.
Pegadinhas comuns
O erro mais frequente é esquecer que letras diferentes precisam de dígitos diferentes. Já vi gente resolver um problema e chegar numa resposta onde duas letras distintas compartilham o mesmo número. Isso invalida a solução completa, não adianta nada o resto estar certo. Outro problema é confiar cegamente nas pistas óbvias. Às vezes uma letra parece só poder ser certo valor, mas isso depende de uma suposição sobre o transporte que ainda não foi confirmada. Se você fixa um valor antes de ter certeza do transporte, todo o raciocínio posterior desaba.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Os problemas mais difíceis são aqueles onde as colunas têm muitas variáveis e poucos constrangimentos claros. Nesses casos, a estratégia de força bruta inteligente com backtracking é mais eficiente do que tentativa e erro manual. Um script simples que testa permutações respeitando as restrições já encontra a solução em segundos, enquanto uma pessoa levando dois minutos para perceber que havia uma contradição numa coluna intermediária.
Na conta armada cada letra representa um algarismo: exemplo comentado
Vamos pegar um caso mais modesto do que o famoso SEND + MORE = MONEY. Considere o problema NO + NO = ON. Parece trivial, mas esconde uma armadilha interessante. O N não pode ser zero porque é o início de NO. O O também não pode ser zero. Na coluna das unidades, O + O termina em N. Isso significa que N é par. As possibilidades para N são 2, 4, 6 ou 8. Se N é 2, então O + O = 2 ou 12. Se O é 1, temos 1+1=2, mas aí O seria 1 e N seria 2. Testando: 12 + 12 = 21? Não, dá 24. Então essa opção não funciona.
Se N é 4, O + O termina em 4. O pode ser 2 ou 7. Com O=2: 24 + 24 = 42? Não, dá 48. Com O=7: 74 + 74 = 47? Não, dá 148. Nenhuma funciona. Com N=6 e O=3: 36 + 36 = 63? Não. Com O=8: 86 + 86 = 68? Não. Com N=8 e O=4: 48 + 48 = 84? Não. Com O=9: 98 + 98 = 89? Não.
Conclusão: esse problema não tem solução. O engraçado é que muitas pessoas assumem que todo criptaritmo publicado tem resposta. Nem sempre é o caso, e reconhecer isso economiza tempo precioso.
Quando abandonar a abordagem manual
Se o criptaritmo tem mais de oito letras distintas ou envolve operações mistas de adição e multiplicação, o esforço manual tende a crescer exponencialmente. Nesse ponto, um algoritmo de backtracking com poda de restrições é mais racional. A lógica é simples: atribuir valores uma letra por vez, verificar se as colunas já preenchidas estão consistentes, e retroceder quando encontrar uma contradição. Existem implementações públicas gratuitas em Python que resolvem criptaritmos em frações de segundo. O pacote python-constraint, por exemplo, permite modelar o problema como um conjunto de restrições lineares sobre dígitos e deixa o solver fazer o trabalho pesado. Eu uso esse método sempre que preciso resolver mais de três criptaritmos por dia.
O lado negativo é que depender exclusivamente de código tira o exercício cognitivo do processo. Se o objetivo é treinar raciocínio lógico, fazer à mão ainda é mais valioso, mesmo que mais demorado. O equilíbrio ideal é usar o método manual primeiro e o código como verificação.
Resumo técnico
O cerne do assunto é simples: cada letra é uma variável inteira entre 0 e 9, letras distintas têm valores distintos, e a igualdade numérica precisa valer em todas as colunas simultaneamente, considerando transportes. As pistas mais úteis vêm de análise de transporte, restrição de dígitos iniciais não nulos, e paridade dos resultados nas colunas. Problemas mal construídos ou sem solução existem, e identificar isso cedo evita perda de tempo.