Inicio o ano de 2007 com essa curiosidade, com a qual me deparei no site Matemática? Absolutamente!, batizada por seu autor de Quadros Adivinhos. Talvez uma velha conhecida de muita gente, mas ideal para o propósito estabelecido por mim de publicar um post mais ameno, e penso, interessante, para começar “devagarzinho” (ou é “devagarinho”?) o novo ano. Como no processo bafejado aos ventos, comumente denominado de “esquentar as turbinas”.
A página em questão, desenvolvida com a ferramenta Flash (não conheço “bulhufas” da danadinha), fornece uma explicação sobre a montagem dos 8 quadros utilizados para adivinhar um número, pensado por você, entre 0 e 250, e de como estender o limite máximo de escolha para 511 e 1023.
O princípio da montagem dos quadros (ou tabelas) se baseia no fato de que todo número natural pode ser escrito como a soma de potências de base 2, como dito por lá – no site, claro! Ou em outras palavras, na conversão de números naturais – base decimal – para base 2 ou binária.
A adivinhação consiste em responder, passo-a-passo, se o número está ou não em cada uma das 8 tabelas apresentadas, e após a última é exibido o resultado, ou seja, o número pensado por você. Se as respostas fornecidas forem lúcidas, honestas e corretas não tem falha, a nota é 10 sempre (bingo!).
Você, na altura do campeonato, deve estar se perguntando: se a “coisa” está lá feita e em funcionamento, o que “este cara” quer? Quero apresentar o mesmo experimento só que com a rotina desenvolvida em JavaScript e com os três intervalos acima mencionados (0 a 255, 0 a 511 e 0 a 1023) para a escolha do número pensado por você.
O Algorítimo Utilizado
Certamente deve ser o mesmo utilizado no Matemática? Absolutamente!. Mas como não da para saber, vamos lá! Consideraremos o primeiro intervalo, uma vez que para os demais a construção é feita por pura e genuína generalização deste, para as devidas explicações.
Passo 1 – Como é notório e sabido por todos, o número natural 255 é igual a 11111111 (oito Carolinas, lembra da música, “encarrilhados”) em binário ou base 2. Ou seja:
(11111111)2 = (255)10 = 27 + 26 + 25 + 24 + 23 + 22 + 21 + 20 = 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1
Passo 2 – O fato nos sugere que as oito tabelas necessárias, no caso do intervalo considerado, iniciem com uma das potências de 2. Isto é, a primeira com o número 1, a segunda com o 2, a terceira com o 4, e assim sucessivamente até cessar, a oito com o 128.
Passo 3 – Os demais números que compõem cada uma das 8 tabelas, exibidos em ordem crescente, são determinados a partir da sua representação binária da seguinte forma: se a primeira posição, da direita para a esquerda, é igual a 1 ele é exibido na primeira tabela, se a segunda posição, na mesma ordem é 1, ele será exibido na segunda, e assim por diante. Por exemplo, o número 255 será mostrado nas oito tabelas e o número 15, cuja representação binária é 00001111, será exibido nas quatro primeiras tabelas e não nas restantes (os zeros à esquerda é só para facilitar o entendimento, viu!).
Passo 4 – Como você é bastante esperto, já percebeu como o resultado é obtido: é suficiente somar (cumulativamente, claro), a cada resposta “sim” a primeira posição da tabela, que nada mais é do que uma potência de 2. Mais uma vez uns exemplos para clarear as idéias:
- Se você pensou no 255, terá que necessariamente responder “sim” para as oito tabelas, o que equivale à soma acima apresentada;
- No outro extremo, se o número escolhido foi o zero, todas as respostas são “não”, e portanto o resultado será igual ao valor inicial atribuído, que é zero que eu não sou “besta” :-);
- E, finalmente, se o número escolhido é o 20 (dia do meu aniversário), cuja representação binária é 00010100, ele aparecerá somente nas tabelas 3 e 5, cujos primeiros números são, respectivamente, 4 e 16.
Não precisava, mais eu vou dizer, que para os outros dois intervalos é só acrescentar as potências de graus 9 e 10 de 2, respectivamente, e seguir os passos 1 a 4 com os devidos ajustes.
A Rotina JavaScript
- Inicialmente é exibida uma caixa de seleção, onde você deve escolher o intervalo do número a ser pensado;
- Feito isto, é exibida a primeira tabela, composta de todos os números ímpares dentro do intervalo selecionado (preciso explicar?), com a fatídica pergunta: “O número que você pensou encontra-se na tabela 1?”, seguida das respostas “Sim” ou “Não” com um link cada que, como eu disse, você deve clicar com a mais pura e sagrada honestidade;
- E o processo é repetido até a oitava (primeiro intervalo), até a nona (segundo intervalo) e até a décima (terceiro intervalo) tabela que são numeradas em vermelho para você não se perder :-), onde, não esqueçam, pelo “amor de Deus”, você deve responder clicando, mais uma vez, honestamente, no “Sim” ou no “Não”;
- E, aí, eis que surge, fagueiro, o resultado mágico, mas esperado, você há de concordar.
Não vou dissertar sobre o código – avisei no começo – mas se você quiser ver e analisar dentro da ótica do aprendizado (meu caso, ao desenvolver) mais do que a da utilidade, ela se encontra “embutida” na página do experimento. Ou então, como “canja” de início de ano, clique aqui (péssimo isto, não?) para exibí-la.
E, para encerrar, mais uma vez, desejo a todos muita paz, muito amor, muitas realizações, …, e muito Viche em 2007. Axé!
flavio fernandes
jan 12, 2012 @ 09:55:04
que legal , é dessa forma que apredemos gostar da matematica.
raynara
nov 17, 2009 @ 16:51:47
gostei muito desta tabela achei enteressante
sidney
mar 26, 2007 @ 20:27:49
Não entendi patavina,mas achei muito intesserante.um abraço!
xauzim
jan 16, 2007 @ 01:13:21
cara.. isso se chama busca binaria…
e eh um dos metodos de buscas mais usado qdo os valores buscados estao ordenados…
:D