Conforme prometido, e agora que este 'quiz' já terminou, deixo aqui a minha solução.
Se bem se recordam, eu fiquei cheio de pica porque já conhecia estas imagens. Quer dizer... já as tinha visto e tinha ideia do que eram. Sendo assim pensei para comigo "Ah... Eu sei o que isto é. Eu consigo quebrar isto!" Não foi assim tão simples. Muita gente sabia o que era e a prova é que fui o 20º a apresentar a solução.
Primeiro tinhamos que perceber o que era isto:
Isto é um QRCode. Quer dizer... não é bem, mas eu na altura nem reparei.
E, cheio de pica, fiz o seguinte:
#1 - Guardar a imagem no meu PC. Cálculei que fosse necessária alguma manipulação da mesma, e não me enganei.
#2 - Procurar descodificadores online. Andei pelo google, e distraí-me quando percebi a quantidade brutal de descodificadores para usar no telemóvel, Tentei uns quantos, mas não havia meio de conseguir um que fosse compatível com o meu telefone. Às tantas desisti de usar o telemóvel e acabei por usar o ZXing.
#3 - Tentar descodificar a imagem. O ZXing rejeita-a dizendo "Isto não é um QRCode". Bolas...Sera fácil demais... Bem, aí comecei a manipular a imagem. Passei o verde para branco, e nada... Inverti o preto com o branco e nada...
#4 - Reparei então que os exemplos de QRCodes tinham sempre 2 quadrados alinhados na margem esquerda. "O Cabr$%#% rodou isto!" (Desculpa JP). Toca de abrir o gimp e rodar a imagem 90 graus. Continua a não dar.... Nova inversão de cores e nada... Fiz mais algumas coisa mas nada funcionava. Desisti e fui dormir...
#5 - No dia seguinte, e conforme já relatei, ouvi uns colegas a passarem pelos mesmos passos... até que um deles fala numa rotação em torno do eixo vertical.
Bolas! Podia ser isso.. Era mesmo porque ele até leu a pergunta em voz alta.
Não sei se foi consciente ou não mas o certo é que nem ouvi bem a pergunta.
#6 - Já novamente em casa, fui experimentar de novo... Rotação, inversão de cores e de repente o ZXing "cospe" cá para fora:
"Para o quinto desafio, o zarolho consultar: Quantas vogais em ababab no decimo que termina com inveja?"
#7- Inicialmente pensei que fosse novo trocadilho e que precisasse de alguma outra manipulação. Zarolho? ababab? Quem é o zarolho?
Obviamente que é Camões... Décimo? Só pode ser o décimo canto dos Lusíadas.
Fui a www.oslusiadas.com e confirmei que o décimo canto termina com a palavra enveja, forma arcaica de inveja.
#8 - Aqui espalhei-me ao comprido. Não sei bem porque, meti na cabeça que era para contar apenas as vogais da última estrofe. Mais propriamente as vogais das 6 primeiros versos (ababab) da estrofe. No caso, seriam as vogais dos versos:
Ou fazendo que, mais que a de Medusa,
A vista vossa tema o monte Atlante,
Ou rompendo nos campos de Ampelusa
Os muros de Marrocos e Trudante,
A minha já estimada e leda Musa
Fico que em todo o mundo de vós cante,
#9 - Resolvi ensair os meus parcos conhecimentos de perl e fiz um programazito que contava as vogais. Novo problema. Não dava conta certa. Depois de algum debug descobri que o problema tinha a ver com as vogais acentuadas - á e ó.
Não fosse por isso, contei-as (e recontei-as várias vezes) à mão. Eram exactamente 80. Enviei um mail com a resposta.
#10 - Recebi um mail de volta, passado algum tempo, e dizia "São mais. muitas mais". Só aí se fez luz. Era o canto todo, não era apenas a última estrofe.
#11 - Voltei à página dos Lusíadas, e gravei o texto num ficheiro. Iniciei a análise do texto. Cada estrofe começa pelo número. Depois uma linha em branco, depois dez linhas de versos e nova linha em branco para começar tudo de novo. 11 linhas para cada estrofe. Para contar as vogais interessavam-me apenas as linhas 3 a 8, inclusivé.
Agora já não podia contar as letras a olho. Era mesmo necessário fazer um programa.
Fiz um ciclo while:
while ($line=<STDIN>)
{
$x = ($. % 11) ;
if ( ($x > 2) && ($x < 9) ) # if it's between 3 and 8 (ababab)
{
O $. é o número da linha actual. % é o operador de módulo. Se x contiver valores entre 3 e 8 é porque a linha actual é para contar as vogais.
Converti tudo para letras minúsculas:
$_ = lc($line);
Aqui experimentei várias maneiras de contar as vogais. Simples comparações, expressões regulares de perl, todas me davam valores errados. Continuava a não conseguir processar bem as vogais acentuadas.
Foi aqui que tive um momento "Ah!" e resolvi o problema assim:
$count += tr/aeiou// ;
$count += (tr/áàâãéèêíìóòôõúù// ) / 2 ;
O operador tr (translate?) substitui os caracteres e devolve o número de caracteres substituídos. Na primeira linha considera as vogais sem acentos e vai incrementando o contador count. Na segunda analisa as vogais acentuadas e soma metade do valor retornado. (O tr sobre as vogais acentuadas dava-me sempre o dobro, porque os caracteres acentuados são representados com 2 bytes. Não é exactamente assim, mas é "close enough"). Ao dividir o valor por dois estava a somar apenas 1 por cada vogal acentuada.
Cheguei ao valor de 12598. Que enviei por mail. Realmente é muito diferente de 80.
Final: Recebi um mail a confrmar que estava certo. Mas, sinceramente, não estava à espera de ter esta trabalheira toda! Ufa! Já não tenho idade para isto,
AR