Pense em um número entre 1 e 10

Você provavelmente foi confrontado uma vez por um amigo, que afirmou ser capaz de ler sua mente, fazendo o seguinte truque: Pense em um número entre 1 e 10; multiplique por 9; soma dos dígitos do resultado (por exemplo 23 -> 2 + 3 = 5); e subtraia 5 da soma. Neste ponto, você pode ter atingido o valor 4. Como é que eu sei isso? Usando o mesmo truque do seu amigo. Deixe-me mostrar-lhe usando o Clojure. Primeiro, vamos escrever uma função que soma os dígitos de um número:

(defn sum-digits (apply + (map #(Integer. (str %)) (str val))))

O valor é transformado em uma string, a função de mapa transforma cada caractere de dígito em uma lista de inteiros e a função aplica somas a lista de inteiros, retornando o total para o chamador da função soma-dígitos. Vamos usar esta função para compor os cálculos do truque:

(defn puzzle (- (sum-digits (* x 9)) 5))

O quebra-cabeças da função executa os cálculos na sequência que o seu amigo lhe pediu para fazer. Primeiro, multiplica o número que pensávamos por 9, depois soma os dígitos do resultado e finalmente subtrai o total por 5. Em seguida, vamos escrever outra função para desvendar o truque:

>

(defn unveil (map #(puzzle %) (range 1 11)))

O intervalo de funções produz uma sequência de números começando de 1 a 10 onde 11 não está incluído (1 2 3 4 5 6 7 8 9 10). O mapa de funções aplica o puzzle de funções a cada número da lista e produz outra lista com os resultados. Agora, execute a função revelar para ver o resultado:

(unveil)(4 4 4 4 4 4 4 4 4 4)

Oh, veja! Para o intervalo de 1 a 10, o resultado será sempre 4. Em outras palavras, um padrão. Os padrões estão muito presentes nas multiplicações e quando você remove todos eles você tem números primos, como aponta Mark Haddon em seu livro “The Curious Incident of the Dog in the Night-Time”. Daniel Tammet exemplifica alguns padrões no seu livro “Thinking in Numbers”: Como a Matemática Ilumina as Nossas Vidas”. Quando multiplicamos qualquer número par por 5 sempre recebemos números terminando em zero (ex. 12 x 5 = 60) e quando o fazemos com números ímpares sempre recebemos números terminando em 5. No caso de 9, toda vez que multiplicamos 9 por um número entre 1 e 10 e somamos seus dígitos sempre recebemos 9,

Na sequência, subtraindo 5 de 9 apenas distrairá sua atenção do padrão de multiplicação e até melhorará o truque. Por exemplo: imagine que cada letra do alfabeto tem um número correspondente (A – 1, B – 2, C – 3, …). Agora, pegue o resultado (4) e obtenha sua respectiva letra; pense em um país que começa com esta letra; pegue a quarta letra deste país e pense em um animal que começa com esta letra. Há uma grande probabilidade de que sua resposta final seja “Dinamarca” e “macaco”. Antes que você pense que estou lendo sua mente, deixe-me explicar o que acabou de acontecer.

Primeiro, não há muitos países que começam com “D”, a quarta letra do alfabeto. Entre a Dinamarca, Djibuti, Dominica, e República Dominicana, você se lembrará facilmente da Dinamarca. A quarta letra da Dinamarca é “M” e nenhum animal que começa com “M” é mais famoso do que o macaco, que vem imediatamente à sua mente.

Estou se divertindo programando em Clojure, não só porque Clojure é divertido de aprender e ensinar, mas porque programar nem sempre é sobre coisas sérias. Ser capaz de programar apenas código suficiente para fazer as coisas acontecerem estimula o pensamento, a resolução de problemas e a criatividade sobre a estrutura, padrões, convenções e estilos. Codificar é suposto ser relaxante e não estressante. Aproveite-o!

Deixe uma resposta

O seu endereço de email não será publicado.