Exercício – codificação e decodificação

A codificação é importante para transformar qualquer coisa mensurável (texto, imagens, sons) em números computáveis.

Digamos que a tabela com a codificação utilizada seja a da figura abaixo.

Se temos 26 letras no alfabeto, 5 bits binários são suficientes para descrever todas as letras (2⁵ = 32, que é maior do que 26). Acrescentemos o espaço em branco como o primeiro da lista.

Pelo código acima:

“lua”011001010100001

Pois

“l” = 01100 

“u” = 10101

“a” =00001

Importante: ignorar acentos, letras maiúsculas e pontuação, a bem da simplicidade.

Pela mesma lógica,

“ceu”000110010110101
“dom casmurro”001000111101101000000001100001100110110110101100101001001111

O exercício é decifrar a mensagem codificada abaixo.

Decifre:011110000001001011100011001001011100100110100011110000001110000010000010000000010110001101000010000000100001010000010011101010000100000011010000101111

É possível fazer no braço, ou apenas com Excel, embora seja trabalhoso.

Como criar um quadrado mágico de qualquer tamanho

Quadrados mágicos são números arranjados numa grade, de tal forma que a soma das linhas, colunas e diagonais seja igual.

A questão de como criar diversos tipos de quadrados mágicos vem intrigado os matemáticos há séculos.

Magic Squares - history of chinese math squares as in book "The ...

Veremos neste tutorial, como criar um quadrado mágico de qualquer tamanho. Implementação em VBA e em Python disponível no Github.

Há três casos diferentes:

– quadrados mágicos ímpares,

– do tipo 4*n

– do tipo 4*n+2

Para cada caso, há um algoritmo diferente.


Caso 1: Quadrados mágicos ímpares

São os que têm número de lado ímpar (3, 5, 7, etc).

Começar colocando o 1 na célula superior do meio. Andar uma casa para a esquerda e uma para cima, para colocar o próximo número. Como o tabuleiro acaba, é como se ele desse a volta e colocasse o número no canto inferior.

Ir repetindo o passo acima, do número 2 para o 3.

Ver o post original 430 mais palavras

Desenho de padrões com círculos

Quando eu era adolescente, vi uma espécie de régua, que permitia fazer padrões bonitos a partir de elipses.

Era um negócio desse tipo:

Ver a imagem de origem

Dá para fazer algo mais ou menos parecido, com apenas um comando VBA: o de plotar círculos. O formato é o seguinte:

ActiveSheet.Shapes.AddShape(msoShapeOval, x, y, comprim, largura)

Para plotar um círculo, devemos saber a posição dele (x,y), o comprimento e largura. Se é um círculo e não uma elipse, comprimento = largura = raio.

O resto dos comandos serve apenas para apagar desenhos antigos, colorir e posicionar os novos círculos.

Algumas convenções:

  • Número de círculos é o número de círculos a plotar.
  • O raio menor é o raio desses círculos.
  • O raio maior é o raio em torno da qual os círculos são plotados
  • E o ângulo, em graus, é o ângulo entre um círculo e outro.

A ilustração a seguir dá uma ideia desses parâmetros.

Obs. Como o ângulo é divisor de 360 graus, tem hora que os círculos ficam um sobre o outro.

Com apenas esses conceitos, é possível gerar algumas variações interessantes.

Planilha para download no Github. Para rodar, é necessário ativar macros.

Outras sugestões são bem-vindas.

Versão web em SVG:

https://asgunzi.github.io/CirculosSVG/

https://ideiasesquecidas.com/

Imagens em gráficos

Os gráficos do Excel podem ser preenchidos com cores, padrões, e também com imagens.

Esta última opção por ser bastante útil.

Primeiro, inserir um gráfico comum.

Clicando com o botão direito no gráfico, Formatar Série de dados -> Preenchimento.

Há várias opções de preenchimento. Escolher Preenchimento com imagem.

Deve-se escolher a imagem a ser colocada.

Resultado abaixo.

Há alguns gráficos, como o de área ou de barra, que são bons para este tipo de técnica.

Outro exemplo:

Vide arquivo no OneDrive

Grafico com imagens.xlsx

Veja também:

https://ideiasesquecidas.com/

O jogo da vida – de John Conway

Forgotten Math

O matemático John Conway faleceu na semana passada, vítima do Corona vírus.

https://guiadoestudante.abril.com.br/estudo/conheca-john-conway-o-matematico-que-criou-o-jogo-da-vida/

Ele foi o criador do “Jogo da Vida”, o primeiro exemplo de autômato celular. É bastante interessante e lúdico.

Em homenagem a Conway, é mais ou menos simples fazer uma versão em Excel.

Imagine um tabuleiro, com pontos aleatórios.

O jogo faz a seguinte análise:

  1. Qualquer célula viva com menos de dois vizinhos vivos morre de solidão.
  2. Qualquer célula viva com mais de três vizinhos vivos morre de superpopulação.
  3. Qualquer célula morta com exatamente três vizinhos vivos se torna uma célula viva.
  4. Qualquer célula viva com dois ou três vizinhos vivos continua no mesmo estado para a próxima geração.

Rodando várias iterações, começam a surgir alguns padrões.

O código gera uma matriz aleatória de 0 e 1. Cola na planilha.

Pinta de verde e branco, com formatação condicional.

A seguir, aplica as regras do jogo da vida.

Ver o post original 204 mais palavras

Triângulo de Pascal em Excel

O triângulo de Pascal, em homenagem ao matemático Blaise Pascal, tem uma regra de formação bastante simples. Download aqui.

Cada linha começa e termina com 1. Os demais valores são a soma dos dois números acima da célula.

Ex. O valor 4 abaixo é a soma de 1 e 3, da linha acima.

Pascal - research

É bem simples criar um triângulo desses em Excel. É basicamente, colocar células de somar na posição correta.

A implementação em anexo utiliza macros, mas é a mesma ideia. Para colorir, é só usar formatação condicional.

Fica como exercício para casa: criar uma implementação do triângulo de Pascal.

Curiosidade: o mesmo triângulo é conhecido desde a antiguidade, sendo redescoberto em várias culturas.

Ideias técnicas com uma pitada de filosofia

https://ideiasesquecidas.com/

Intervalos e desloc – solução

Em relação ao post anterior, https://ferramentasexcelvba.wordpress.com/2020/04/08/exercicio-de-intervalos-e-funcao-desloc/

Planilha para download.

A função “corresp” é uma função de busca, similar ao procv. Porém, ela retorna a posição do valor, o índice.

Corresp(valor, range de busca, busca exata ou maior)

Abaixo, corresp da data (06/01/2020) vai retornar 9

Primeira ocorrência (posição)

=CORRESP($H$4;$B$3:$B$206;0) – a busca exata vai dar a primeira ocorrência.

Abaixo, corresp da data (06/01/2020) vai retornar 12

Última ocorrência (posição)

=CORRESP($H$4;$B$3:$B$206;1) – coloquei o parâmetro “1”, então vai buscar o último valor do dia 06/01/2020

Número de transações: pode ser um cont.se, e também pode ser a diferença entre a última ocorrência e a primeira

Primeira ocorrência:  utilizar a função desloc. É como um mapa do tesouro. A partir de um ponto inicial, ande y casas para baixo e x casas para a direita.

=DESLOC($B$2;H11;2)

A referência é a célula B2. Ando para baixo o número de casas da primeira ocorrência. Ando para a direita 2 casas, porque quero buscar o valor.

Primeira ocorrência:  a mesma coisa, usar desloc. Só que ao invés de andar a primeira ocorrência, uso a posição da última ocorrência

=DESLOC($B$2;H12;2)

Para média, mín e máx, o truque é semelhante.

Uso a função =MÉDIA(intervalo)

A questão é definir o intervalo.

Aí, a função desloc ajuda novamente. Ela pode retornar um número, como acima, mas também pode retornar um intervalo.

São 5 parâmetros para o desloc: 1 – ponto de partida, 2 – casas para baixo a deslocar, 3 – casas para direita, 4 – range de linhas do intervalo, 5 – range de colunas do intervalo

O range de linhas é o cont.se da célula H4. O range de colunas é 1.

A fórmula final:

Média =MÉDIA(DESLOC($B$2;$H$11;2;$H$14;1))

Mínimo do dia =MENOR(DESLOC($B$2;$H$11;2;$H$14;1);1)

Máximo do dia =MAIOR(DESLOC($B$2;$H$11;2;$H$14;1);1)

É possível utilizar a função “INDIRETO” para alguns desses cálculos. É a mesma ideia.

Corresp e Desloc são formas indiretas, um pouco mais abstratas, de referenciar dados. É como um ponteiro em C. São um pouco mais avançadas, porém, bastante poderosas.

Ideias técnicas com uma pitada de filosofia

https://ideiasesquecidas.com/

Exercício de intervalos e função desloc

Segue um exercício de intervalos e função desloc.

Tenho uma base de dados como a seguinte.

Quero digitar uma data.

O exercício é calcular:

– A posição da primeira ocorrência da data (em relação ao começo da lista)

– A posição da última ocorrência da data (em relação ao começo da lista)

Número de transações no dia
Valor da primeira ocorrência do dia
Valor da última ocorrência do dia
Média do valor do dia
Mínimo do dia
Máximo do dia

Deve-se utilizar apenas uma fórmula em cada célula da resposta.

Obs. Considerar que os dados acima estão ordenados em ordem crescente de data.

Exemplo: para a data 05/01/2020, tenho os seguintes resultados:

Dica: utilizar funções corresp e desloc.

Como criar um timer no Excel

O método Pomodoro – vide este post – precisa de um timer para funcionar.

Há timer no celular, apps, etc, mas é um projetinho interessante para fazer em Excel (alguém tem outras formas de fazer? Sugestões são sempre bem-vindas).

1) Basicamente, o timer utiliza a função Sleep (de dormir). É uma função que não faz nada enquanto não passar o tempo estabelecido.

Por exemplo:

    Sleep (1000) ‘Espera 1000 milisegundos, ou seja, 1 segundo

É uma função do Windows, então é necessário importar a dll. Segue um exemplo de código a seguir, também na planilha anexa.

Public Declare PtrSafe Sub Sleep Lib “kernel32” (ByVal Milliseconds As LongPtr)

Sub teste()

    Sleep (2000) ‘Espera 2000 milisegundos

    executar

End Sub

Sub executar()

    MsgBox (“Teste”)

End Sub

2) Sobre o timer.

A macro lê o número de minutos a esperar. Multiplica por 60 para transformar em segundos.

Depois, manda atualizar o mostrador uma vez por segundo, decrescendo o valor a esperar.

O resto das contas é só para transformar o número de segundos de volta para minutos.

Por exemplo, 244 segundos = 4 minutos e mais 4 segundos.

Divido 244 por 60 e pego a parte inteira, utilizando um arrendondar para baixo.

intMin = Math.Round((Nminutos * 60 – counter) / 60 – 0.49999999, 0)

Se faltam 4 minutos, e 4*60 =240, então são 4 segundos para completar o valor original.

Portanto, estabeleça o número de minutos a esperar, ligue o timer, e concentre-se somente no trabalho a ser realizado durante este período.

Vide arquivo https://lnkd.in/eBxyAQZ.

O andar do bêbado

Modelos do tipo “Random walk” são amplamente utilizados para fenômenos probabilísticos.

A ideia básica é bem simples.

Imagine um bêbado, que está numa posição de coordenadas (0,0).

Como ele está chapado, ele pode dar um passo numa direção aleatória qualquer.

Traduzindo numa fórmula, seria Posição(t+1) = Posição(t) + aleatório(), ou seja, sua posição futura depende da posição atual, mais o passo aleatório.

Nota: a função aleatória do Excel varia de 0 a 1. Queremos que ela varie de -0,5 a 0,5 (para considerar que o bêbado pode andar para trás também). Portanto, a ideia é simplesmente utilizar (aleatório() – 0.5).

Colocando as fórmulas numa planilha, resulta num gráfico deste tipo:

Clicando F9, o Excel realiza um novo sorteio do passo aleatório:

Planilha para download.

Ideias técnicas com uma pitada de filosofia

https://ideiasesquecidas.com/