SEND + MORE = MONEY

Este é um puzzle mais ou menos famoso.

Um estudante saiu de casa, e semanas depois, o pai recebeu a mensagem cifrada abaixo, dele pedindo dinheiro. Quanto ele estava pedindo?

Dá um certo trabalho de resolver matematicamente, tem que ficar usando a lógica e testando as opções que restam.

Mas, como a lista é de Excel, é muito fácil resolver a mesma utilizando força bruta pura: Testar todos números possíveis, até encontrar uma solução.

Sugiro que o leitor tente resolver o puzzle do jeito matemático e do jeito VBA antes de prosseguir.

O jeito VBA

Primeiro, para reduzir o espaço de busca, basta notar que M = 1. Qualquer dois algarismos somados (ex. 7+5=12, 8+3 = 11) sempre vai ser menor igual a 19, então M= 1.

O “O” só pode ser zero, ou forçando muito, 1 (se S for 9 e vier 1 da soma anterior). Mas vamos testar com 0.

‘É óbvio que m =1 e o = 0

m = 1

o = 0

‘O resto é força bruta.

‘Testar dígitos de 2 a 9, porque zero e um já foram.

‘O jeito é fazer um for aninhado:

For s = 2 To 9

    For e = 2 To 9

        For n = 2 To 9

                For d = 2 To 9

                    For r = 2 To 9

                        For y = 2 To 9

Além disso, o enunciado diz que tem que ser algarismos diferentes por número.

O “if” verifica se os números são diferentes, só prossegue se forem.

For s = 2 To 9

    For e = 2 To 9

        If e <> s Then

        For n = 2 To 9

            If n <> s And n <> e Then

            Etc…

                        For y = 2 To 9

                        If y <> s And y <> e And y <> n And y <> d And y <> r Then

                                ‘Checa resposta

                                checar s, e, n, d, m, o, r, y

A subrotina de checar monta os números finais e faz a verificação.

send = 1000 * s_ + 100 * e_ + 10 * n_ + d_

more = 1000 * m_ + 100 * o_ + 10 * r_ + e_

money = 10000 * m_ + 1000 * o_ + 100 * n_ + 10 * e_ + y_

If send + more = money Then

    MsgBox “Eureka: ” & send & ” + ” & more & ” = ” & money

End If

E qual a resposta do puzzle?

Rode a rotina do arquivo para ver.


Ideias técnicas com uma pitada de filosofia: https://ideiasesquecidas.com

Ferramentas Excel-VBA: https://ferramentasexcelvba.wordpress.com/

Deixe um comentário

Faça o login usando um destes métodos para comentar:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s