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/

Anúncios

Como utilizar a Barra de Rolagem do Excel

A barra de rolagem do Excel é simples e facilita a experiência ao usuário.
Para utilizar, Desenvolvedor -> Barra de Rolagem.

(Se a aba Desenvolvedor não estiver visível, ir em Arquivo –> Opções ->Personalizar faixa de opções . Em guias principais, marcar a opção de Desenvolvedor).

Download do exemplo aqui.

Clicar e arrastar o mouse para inserir a barra na posição desejada. Para mudar suas propriedades, clicar com o botão direito em cima dele e em Formatar controle…

Na caixa quer surgir, é possível estabelecer os valores mínimos, máximos, etc. A informação principal é o “Vínculo da célula”, que coloquei como a célula E3, mas pode ser qualquer uma.

O valor da barra de ferramentas vai ser gravado na célula E3.


Mas o truque só tem graça de verdade em conjunção com outras ferramentas.

Por exemplo, o valor da barra serve para rolar o mês que vai aparecer no gráfico, com o apoio da função “desloc”. Vide anexo ilustrativo.

Bacteria wars

Segue um exemplo de aplicação do VBA. Mais ou menos inspirado no ‘evolved virtual creatures’ de Karl Sims (https://www.youtube.com/watch?v=JBgG_VSP7f8).

Você controla uma colônia de bactérias, contra uma colônia rival (computador).

Há três parâmetros: natalidade (quanto maior, mais se reproduz), longevidade (qto maior, maior a chance de não morrer por causas naturais) e ataque (qdo duas bactérias rivais ocupam o mesmo espaço, quem tem mais ataque tem mais chance de vencer). A restrição é distribuir 100% dos pontos nestes três critérios.

Vide arquivo aqui.https://1drv.ms/x/s!Aumr1P3FaK7jjjodaADPGp_Jljv_

Quem quiser sugerir melhorias e modificações, estou à disposição.

Att

Como utilizar filtros diferentes para cada aba do Spotfire

Um filtro no Spotfire muda os dados de todas as abas.

Para usar dois filtros diferentes por aba.

Editar – > Propriedades do documento -> esquemas de filtragem

Criar um novo esquema, digamos o Método 2

Depois, no filtro, escolher o Método2.

E assim sucessivamente.

Download aqui.


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

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

Como plotar coordenadas no Spotfire

Para plotar pontos no Spotfire, basta começar com uma tabela assim: Nome, Latitude do ponto, Longitude do ponto.

No spotfire, importar a tabela de dados e Inserir Mapa gráfico

Note que os pontos podem ter o tamanho variável, cor variável, etc, assim como tudo no spotfire.
Pode dar zoom, filtrar, etc.

Vide exemplo aqui.

E como obter as coordenadas?

Um jeito, no braço:

Plotar o endereço no Google Maps.

Clicar o botão direito em cima do ponto e ir em “what’s here”

Vai aparecer uma caixinha com coordenadas. Clicar em cima da coordenada da caixinha.

A coordenada vai aparecer no painel, para copiar e colar no excel.
Cuidado: talvez o ponto não vire vírgula no excel, tem que consertar no braço.





Jeito 2: utilizar uma macro ou algum outro serviço de geocoding.
Eu tinha uma macro antigo, mas o Google mudou a política de APIs.

Então, esta parte fica em aberto por enquanto.


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

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


Função Corresp

O Excel tem algumas funções de procura, a mais famosa é o procv.

Há uma alternativa, chamada “corresp”.

A princípio, é muito semelhante ao procv. Tem três parâmetros:

– uma tabela de dados para input

– informar o valor a procurar, digamos o valor 30 na tabela

– busca exata (0) ou não (1)

O resultado é a posição do valor na tabela.

Como o valor 30 é o terceiro valor, vai retornar 3.

Se eu procurar o valor 36, vai dar #N/D, porque o terceiro parâmetro (0) diz busca exata.

Se colocar o terceiro parâmetro como busca aproximada (1), ele vai dar a terceira linha, porque 36 é maior do que 30 e menor do que 40.

Qual a utilidade desta?

Se der para usar o procv, melhor usar.

Porém, há casos em que queremos a posição do valor na linha.

Também serve para um “procv negativo”, ou seja, quando o valor buscado está à esquerda da coluna de busca.

Download no OneDrive.


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

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