E o último problema pra mim foi o mais interessante, já que matemática é a minha área, e o quinto problema era sobre matemática.

O problema era fatorar 1321317089447443, fácil. Era só procurar no Google que você acharia sites como esse, que fatoram o número.

Caso quisesse “aceitar o desafio”, seja lá o que isso signifique, e programar, também era simples, segue o código em javascript, em homenagem a quem acertou o desafio.

var factor = 3;
var number = 1321317089447443;
while (factor*factor <= number) { if (number % factor == 0) { console.log(factor); number /= factor; } else { factor += 2; } } if (number != 1) console.log(number); [/sourcecode]

Obs: console.log é uma função javascript disponível no firebug, caso queira usar numa página troque por um document.write. E antes que me corrijam, a variável factor é inicializada com 3, pois já sei que 2 não é fator pra esse caso (number não é par).

Eis que surge o quarto problema.

O problema estava lá, e não podiamos ver. De cara achei que tinha algo escondi com um display: none e desabilitei o css do Firefox. Mas não apareceu nada, aí não teve outro jeito, olhar o código fonte. E lá estava:

<!-- Qual o nome da cor de fundo do Livro de Mozilla? -->

Abri a página do Livro do Mozilla e habilitei o firebug e estava lá “background: maroon;”. Fácil demais.

 

Depois de ganhar os ingressos, o resto dos problemas foram diversão, então fomos para o terceiro problema.

Ao ver

5u0t6n013b3r4354bru0y114

Fui logo trocando os números pelas letras, e então tinha:

suotgnoleberaesabruoylla

Que diabos era isso? Confesso que demorei um pouco até sacar. Mas aquele ‘y’ ali me salvou, e eu vi o ‘you’ ao contrário, o ‘all’, enfim, estava tudo ao contrário.

allyourbasearebelongtous

Agora ficou fácil, “All your base are belong to us”, eis a resposta. Agora era esperar o próximo problema.

Ae, esse eu resolvi e ganhei os ingressos :D, está lá em Problema 2.

O problema era: Onde fica isso?

67 7A 69 70 3A 1F 8B 08 08 D0 11 1B 48 02 FF 65 00 CB 28 29 29 B0 D2 D7 CF 4D 2C 28 D6 4B CF CF 4F CF 49 D5 4B CE CF D5 4B 2A 02 0B D9 E7 E4 D8 EA 1A 19 E9 59 1A 1A 99 9B 98 EA E8 9A 18 EB 19 19 98 19 1B 02 00 29 22 3E 34 36 00 00 00

Primeiro chute de qualquer um, isso são bytes em hexadecimal. Mas não podia ser apenas uma string, dava pra perceber pelos 3 últimos bytes 0. Mas como não conhecia nenhum arquivo que o magic number começava com 67, era a primeira opção. E como estava com o Eclipse com as ferramentas de Java aberto, fui logo para o código (mas devia ter considerado usar uma linguagem de script, Groovy por exemplo seria mais adequado).

Primeira tentativa:

class Problem2 {
public static void main(String[] args) {
String[] input=”67 7A 69 70 3A 1F 8B 08 08 D0 11 1B 48 02 FF 65 00 CB 28 29 29 B0 D2 D7 CF 4D 2C 28 D6 4B CF CF 4F CF 49 D5 4B CE CF D5 4B 2A 02 0B D9 E7 E4 D8 EA 1A 19 E9 59 1A 1A 99 9B 98 EA E8 9A 18 EB 19 19 98 19 1B 02 00 29 22 3E 34 36 00 00 00″.split(” “);
byte[] output=new byte[input.length];

for (int i = 0; i < input.length; i++) { output[i] = (byte)Integer.parseInt(input[i], 16); System.out.print((char)output[i]); } } } [/sourcecode]

E como resultado:

gzip:??H?e … e alguns caracteres não representáveis.

Mas o gzip era a dica que eu precisava, então vamos para …

Segunda tentativa:

import java.io.ByteArrayInputStream;
import java.util.zip.GZIPInputStream;

class Problem2 {
public static void main(String[] args) throws Exception {
String[] input = “67 7A 69 70 3A 1F 8B 08 08 D0 11 1B 48 02 FF 65 00 CB 28 29 29 B0 D2 D7 CF 4D 2C 28 D6 4B CF CF 4F CF 49 D5 4B CE CF D5 4B 2A 02 0B D9 E7 E4 D8 EA 1A 19 E9 59 1A 1A 99 9B 98 EA E8 9A 18 EB 19 19 98 19 1B 02 00 29 22 3E 34 36 00 00 00″
.split(” “);
byte[] byteRepresentation = new byte[input.length];
byte[] output = new byte[input.length];
for (int i = 0; i < input.length; i++) { byteRepresentation[i] = (byte) Integer.parseInt(input[i], 16); } GZIPInputStream gis = new GZIPInputStream(new ByteArrayInputStream(byteRepresentation)); gis.read(output); for (int i = 0; i < output.length; i++) { System.out.print((char)output[i]); } gis.close(); } } [/sourcecode]

E o resultado foi:

Exception in thread "main" java.io.IOException: Not in GZIP format
	at java.util.zip.GZIPInputStream.readHeader(GZIPInputStream.java:137)
	at java.util.zip.GZIPInputStream.(GZIPInputStream.java:58)
	at java.util.zip.GZIPInputStream.(GZIPInputStream.java:68)
	at Problem2.main(a.java:14)

Droga, não funcionou o gzip, pesquisando um pouco vi que o gzip do começo não era nem header nem magic number do formato, então resolvi tirar esse pedaço e fui para a …

Terceira tentativa:

import java.io.ByteArrayInputStream;
import java.util.zip.GZIPInputStream;

class Problem2 {
public static void main(String[] args) throws Exception {
// Tirei os 5 primeiros bytes
String[] input = “1F 8B 08 08 D0 11 1B 48 02 FF 65 00 CB 28 29 29 B0 D2 D7 CF 4D 2C 28 D6 4B CF CF 4F CF 49 D5 4B CE CF D5 4B 2A 02 0B D9 E7 E4 D8 EA 1A 19 E9 59 1A 1A 99 9B 98 EA E8 9A 18 EB 19 19 98 19 1B 02 00 29 22 3E 34 36 00 00 00″
.split(” “);
byte[] byteRepresentation = new byte[input.length];
byte[] output = new byte[input.length];
for (int i = 0; i < input.length; i++) { byteRepresentation[i] = (byte) Integer.parseInt(input[i], 16); } GZIPInputStream gis = new GZIPInputStream(new ByteArrayInputStream(byteRepresentation)); gis.read(output); for (int i = 0; i < output.length; i++) { System.out.print((char)output[i]); } gis.close(); } } [/sourcecode]

E agora, finalmente.

http://maps.google.com.br/maps?ll=-22.912745,-43.20631

Onde era isso? Meu primeiro impulso foi responder, estação do metrô Estácio, mas em tempo lembrei que tinha um centro de convenções lá perto. E assim ganhei os ingressos.

A descrição do problema está em: Problema 1. Esse eu sinceramente não consegui resolver, e só fui entender o problema quando eu vi a solução, afinal, o que quer dizer

Eve solved a blew cocoon endorsed rent

Nada, afinal é um anagrama. Não consegui resolver esse, e nem lembrar o filme que tinha um monte de anagramas, acho que era “O bebê de Rosemary”, tenho que verificar no google, hehe.