Legacy tiagomadeira.net

Archive for 2007

O Código da Vinci II

Wednesday, May 2nd, 2007

A igreja escocesa [Rosslyn] que aparece no romance best seller “O Código Da Vinci” revelou outro mistério oculto por quase 600 anos. Pai e filho que ficaram fascinados pelos símbolos gravados nos arcos da capela disseram ter decifrado uma partitura musical escondida ali.

Notícia completa.

Uau! Essa é pra sustentar a tese dos caras que levam a sério como não-ficção o livro do Dan Brown. ;) Não existem coincidências. E segundo o Terra esse já é o “outro” mistério.

[BL]imagens religiosas, crucifixos, partituras, criptogramas[/BL]

[tags]código da vinci, dan brown, igreja, religião, arg, escócia, partitura, música, mistério[/tags]

Nova versão do GSPCA, nada de sn9c20x

Tuesday, May 1st, 2007

O Alexandre Possebom (não sei se ele tem blog pra eu linkar, se alguém souber me avise) me informou que no dia 26 de abril foi liberada uma nova versão do gspcav1. Acabei de baixá-la, ler o changelog, tentar fazê-la funcionar de todas as maneiras possíveis, mas infelizmente nessa versão ainda não existe suporte para a nossa sn9c20x (aka Acer Orbicam do Aspire 5050-3205). Vou entrar em contato com o Michel Xhaard para ver a quantas anda a nossa tão querida webcam e assim que tiver alguma novidade eu posto aqui no blog.

[tags]acer, aspire, webcam, camera, linux, gentoo, orbicam, gspca, driver, kernel[/tags]

Segunda fase da OBI2007

Tuesday, May 1st, 2007

A prova de segunda fase da Olimpíada Brasileira de Informática aconteceu há duas semanas e eu havia me esquecido de comentar aqui no blog como eu fui. O resultado deve sair amanhã ou depois de amanhã, segundo um dos caras responsáveis pela organização no orkut. Se tudo der certo e Éris quiser eu participarei pela quarta vez do curso de programação e da seletiva para a IOI.

Telemarketing (OBI2007 – Programação Nível 2 – Segunda Fase)

A solução mais eficiente usa heaps. Sem conseguir pensar nesta solução no momento da prova, implementei uma força bruta bem otimizada. Infelizmente, ela tem um pequeno erro que uma alma boa que se apresenta como CEO da Oracle encontrou para mim:

No seu programa, você faz um “for” que vai de “ultimo” até “n”, armazenando o id do vendedor que vai ficar desocupado primeiro na variável “mt”. Então você faz um “for” de 1 até “ultimo” mudando a variável “mt” apenas quando o vendedor ficar livre antes do “mt”, sendo que, como o id dele é menor, deve atender a ligação caso fique disponível antes ou ao mesmo tempo em que o vendedor “mt” ficar livre. Para resolver isso, fiz um “for” que vai de “ultimo” até 1 usando um “if” com “<=”.

Acredito que receberei no máximo 20/100 pontos.

#include
#include

#define NMAX 1010

int main() {
int n, l, duracao, c=0, ocupado[NMAX], mt, ligacoes[NMAX], oc;
int i, j, ultimo;

scanf("%d %d", &n, &l);

for (i=1; i<=n; i++) {
ocupado[i]=0;
ligacoes[i]=0;
}

ocupado[0]=MAXINT;
ultimo=0;

for (i=1; i<=l; i++) {
scanf("%d", &duracao);
c=0;
mt=0;
for (j=ultimo+1; j<=n; j++) {
if (!ocupado[j]) {
ocupado[j]=duracao;
ligacoes[j]++;
c=1;
ultimo=j;
break;
} else {
if (ocupado[j] mt=j;
}
}
}
if (!c) {
for (j=1; j<=ultimo; j++) {
if (ocupado[j] mt=j;
}
}
oc=ocupado[mt];
ultimo=0;
for (j=1; j<=n; j++) {
ocupado[j]-=oc;
}
ocupado[mt]=duracao;
ligacoes[mt]++;
}
}

for (i=1; i<=n; i++) {
printf("%d %d\n", i, ligacoes[i]);
}

return 0;
}

Pizza (OBI2007 - Programação Nível 2 - Segunda Fase)

A solução mais eficiente usa programação dinâmica. A minha solução é uma força bruta, mais simples impossível. O programa está correto, mas não passará em muitos casos de teste por estourar o tempo limite. Espero mais uns 20/100 pontos.

#include

#define MAX 100010

int main() {
int n, soma;
int i, j;
int k[MAX];
int maximo=0;

scanf("%d", &n);
for (i=1; i<=n; i++) {
scanf("%d", &k[i]);
k[i+n]=k[i];
if (k[i]>maximo) {
maximo=k[i];
}
}

if (maximo==0) {
printf("0\n");
return 0;
}

for (i=1; i<=n; i++) {
soma=0;
if (k[i]>0) {
for (j=i; j soma+=k[j];
if (soma>maximo) {
maximo=soma;
}
}
}
}

printf("%d\n", maximo);

return 0;
}

Labirinto (OBI2007 - Programação Nível 2 - Segunda Fase)

O único problema que resolvi de maneira eficiente. A solução transforma o problema do labirinto em um grafo e depois chega à solução com uma busca em largura. Nesse eu espero a pontuação máxima, 100/100 pontos.

#include
#include

#define NMAX 55
#define VERTICES 2510

int n, m;
int nivel[VERTICES], vizinhos[VERTICES];
int fila[VERTICES*VERTICES], nvl[VERTICES*VERTICES];
int max[VERTICES];
int grafo[VERTICES][VERTICES];
int saida=MAXINT;

int identificador (int a, int b) {
return (b+(a-1)*m);
}

int rn (int nivelerrado) {
while (nivelerrado>9) {
nivelerrado-=10;
}
return nivelerrado;
}

int main() {
int i, j;
int idmax, atual, idv;
int niv, nivv, niva;
int ini, fim;

scanf("%d %d", &n, &m);

idmax=n*m;

for (i=1; i<=idmax; i++) {
for (j=1; j<=idmax; j++) {
grafo[i][j]=0;
}
vizinhos[i]=0;
max[i]=0;
}

for (i=1; i<=n; i++) {
for (j=1; j<=m; j++) {
atual=identificador(i, j);
scanf("%d", &nivel[atual]);
if (i-1>0) {
idv=identificador(i-1, j);
if (idv>0) {
grafo[atual][vizinhos[atual]++]=idv;
}
}
if (j-1>0) {
idv=identificador(i, j-1);
if (idv>0) {
grafo[atual][vizinhos[atual]++]=idv;
}
}
if (i+1<=n) {
idv=identificador(i+1, j);
if (idv<=idmax) {
grafo[atual][vizinhos[atual]++]=idv;
}
}
if (j+1<=m) {
idv=identificador(i, j+1);
if (idv<=idmax) {
grafo[atual][vizinhos[atual]++]=idv;
}
}
grafo[atual][vizinhos[atual]++]=atual;
}
}

ini=0;
fim=0;
nvl[fim]=0;
fila[fim++]=1;
while (ini!=fim) {
niv=nvl[ini];
if (niv atual=fila[ini++];
niva=rn(nivel[atual]+niv);
if (atual==idmax) {
if (niv saida=niv;
}
} else {
for (i=0; i idv=grafo[atual][i];
nivv=rn(nivel[idv]+niv);
if (nivv<=niva+1&&niv+1>max[idv]) {
nvl[fim]=niv+1;
max[idv]=niv+1;
fila[fim++]=idv;
}
}
}
} else {
ini++;
}
}

printf("%d\n", saida);
return 0;
}

Conclusão

O resultado da olimpíada deve sair amanhã ou depois de amanhã e a nota de corte deve ser entre 100 e 150 pontos. Pelos meus cálculos, eu devo ter feito 140 (20+20+100), o que talvez me classifique para a próxima fase. Mais notícias a qualquer momento ;)

[BL]laptops, acer aspire, hp pavilion, desktops, computadores, sistemas operacionais[/BL]

[tags]obi2007, olimpíada, informática, computação, programação, c, linux, obi, software[/tags]

Ser ou não ser: eis a questão.

Tuesday, April 17th, 2007

Conversa com o John há alguns minutos:

john: hey ya
me: hey
não tinha notado que você falou, notei agora q o lucas falou
heuahueauheau
john: heheheheh
uma pergunta
por acaso vc não é o Reverendo é?
me: você com certeza não leu o principia
john: ??
me: ele, combinado as minhas ações, apresenta provas claras de que eu sou reverendo
só agora você descobriu?
john: auhuahauhahuahauhauha
to falando sério poioca
alou?
me: ser ou não ser: eis a questão.
não sei o que posso lhe dizer.o que você acha?
john: uauha
bom…
a maneira de escrever é um tatno quanto parecida
me: que motivos você tem para acreditar nisso?
john: existem várias coisas…
segundo…
estranho, comecei falando com ele e ele falou comigo de uma maneira mto amigavel
e ele já me conhece
ou ele realmente é gente finissima

É, quero deixar claro que o Ibrahim é de fato gente finíssima. A não ser que eu seja um personagem como a Sofia de Jostein Gaarder, sinto informar-lhes que eu sou eu mesmo. Ou eu sou você, reverendo? O que você me diz?

O fato é que essa história de um ser outro está muito popular na blogosfera. O povo acredita em tudo o que ouve, há coisas que simplesmente não fazem sentido. A maior vítima dessas historinhas está sendo o gato da cabala. Queria dizer a todos vocês que duvidam que o Ibrahim seja real que ele é mesmo real. Ele parece um personagem inventado por vários motivos; no momento lembrei de três:

  1. Ele tem nome de Ibrahim (eu não conheço nenhum outro cara com esse nome, que parece ser um antigo nome judeu) Cesar (imperador romano).
  2. Ele começou um blog em dezembro, antes disso ele parecia não ser ninguém na internet. O blog dele, que contou com três posts por dia por várias semanas, cresceu muito rápido e conseguiu muitos visitantes e pagerank. Ele conhece muito de internet e de blogosfera para ser uma pessoa normal que foi incluída nesse meio há quatro meses.
  3. A inteligência sarcástica dele é digna de ser fruto da mente de uma legião de pessoas e não de um homem só.

O fato é que eu posso afirmar que esse cara, totalmente eclético e genial (na real é um dos caras mais fodas que eu conheço, embora eu não o conheça na vida real), é mesmo real. Queria dividir isso com vocês pra acabarem os rumores na blogosfera, no GTalk, no mundo inteiro: Ibrahim Cesar é real. Abaixo você pode ver duas provas disso, que retirei do site dele:

Ele existe.

Em breve o mundo poderá ver uma obra-prima que ele está bolando e que eu estou tentando ajudar a fazer acontecer (se tudo der certo, no dia 23/05). No momento não posso dar mais informações.

Ah, sim… A escassez de posts está afetando seriamente este ambiente. Prometo tentar melhorar. Nessa semana ainda posto sobre a segunda fase da OBI.

[BL]identidades falsas, documentos forjados, blog com três posts por dia, livros de filosofia[/BL]

[tags]identidade, falsidade ideológica, internet, anônimo, fake, cabala, blogosfera[/tags]

0wn3d

Sunday, April 1st, 2007

p4ssw0rd cr4ck3d by ju57k1d n d1ng t34m