2010-02-24

copypasta tiem nao!!!

Portanto:

#include

void init (int grid[9])
{
int i;

for(i=0; i<9; i++)
grid[i]=0;

}

int check(int grid [9])
{
int i;

for(i=0; i<9; i++)
{
if(grid[i]);
else return 0;
}

return 1;
}

int main (void)
{
int grid[9];
int i,j;

init (grid);

char c='\0';

while((c!='q') && (c!='Q'))
{
printf("\n");

for (i=0; i<9; i++)
{
if(!(i%3))
{
printf("\n");
}
printf(" %i", grid[i]);
}

printf("\n");

scanf("%c%c", &c);

switch (c) {
case '7' :{
grid[0]=(grid[0]+1)%2;
grid[1]=(grid[1]+1)%2;
grid[3]=(grid[3]+1)%2;
grid[4]=(grid[4]+1)%2;
break;
}
case '8' :{
grid[0]=(grid[0]+1)%2;
grid[1]=(grid[1]+1)%2;
grid[2]=(grid[2]+1)%2;
grid[3]=(grid[3]+1)%2;
grid[4]=(grid[4]+1)%2;
grid[5]=(grid[5]+1)%2;
break;
}
case '9' :{
grid[1]=(grid[1]+1)%2;
grid[2]=(grid[2]+1)%2;
grid[4]=(grid[4]+1)%2;
grid[5]=(grid[5]+1)%2;
break;
}
case '4' :{
grid[0]=(grid[0]+1)%2;
grid[1]=(grid[1]+1)%2;
grid[3]=(grid[3]+1)%2;
grid[4]=(grid[4]+1)%2;
grid[6]=(grid[6]+1)%2;
grid[7]=(grid[7]+1)%2;
break;
}
case '5' :{
grid[0]=(grid[0]+1)%2;
grid[1]=(grid[1]+1)%2;
grid[2]=(grid[2]+1)%2;
grid[3]=(grid[3]+1)%2;
grid[5]=(grid[5]+1)%2;
grid[6]=(grid[6]+1)%2;
grid[7]=(grid[7]+1)%2;
grid[8]=(grid[8]+1)%2;
break;
}
case '6' :{
grid[1]=(grid[1]+1)%2;
grid[2]=(grid[2]+1)%2;
grid[4]=(grid[4]+1)%2;
grid[5]=(grid[5]+1)%2;
grid[7]=(grid[7]+1)%2;
grid[8]=(grid[8]+1)%2;
break;
}
case '1' :{
grid[3]=(grid[3]+1)%2;
grid[4]=(grid[4]+1)%2;
grid[6]=(grid[6]+1)%2;
grid[7]=(grid[7]+1)%2;
break;
}
case '2' :{
grid[3]=(grid[3]+1)%2;
grid[4]=(grid[4]+1)%2;
grid[5]=(grid[5]+1)%2;
grid[6]=(grid[6]+1)%2;
grid[7]=(grid[7]+1)%2;
grid[8]=(grid[8]+1)%2;
break;
}
case '3' :{
grid[4]=(grid[4]+1)%2;
grid[5]=(grid[5]+1)%2;
grid[7]=(grid[7]+1)%2;
grid[8]=(grid[8]+1)%2;
break;
}
case '0' :{
init(grid);
break;
}
default :; };

if (check(grid))
{
scanf("%c");
break;
}

}

return 0;
}

1. Copypsata do código acima
2. Compile & run
3. ??????
4. Profit!

Quem não entende logo o que é que este programa faz deve estar cá perdido ou ainda cá não está há tempo que chegue.

Regras: As posições da matriz representam as teclas do NumPad na posição em que as vêem. Quando se carrega numa tecla, ela liga ou desliga, conforme esteja desligada ou ligada, respectivamente, não só a si como a todas as suas vizinhas, excepto o 5, que inverte o estado das suas vizinhas, mas não o seu. O 0 (zero) faz reset e o q

Objectivo: Ligar simultaneamente todas as posições da grelha ou demonstrar que tal é impossível. Cinco internets de borla para quem apresentar a sequência de teclas que resolva o problema.

Disclamer: A corporação disco-bar, os seus afiliadose seus empregados não se responsabilizam por quaisquer danos causados pela descoberta de sequência chave, incluindo, mas não se limitando a perda de vida social, ascenção ao um plano mais elevado de existência, ganho de super-poderes, asplosão cefálica e/ou FAIL.

Pax boviscum atque vale.

P.S.: O blogger faz-me o favor de resolver todos os meus problemas de tabulação da pior maneira...

8 comments:

Sintra said...

Cheguei ao if(!(i%3)) e ja nao me lembrava se i%3 era ou nao o resto da divisao inteira e desisti.
Deduzo que se sair 3, 6 ou 9, \n com ele, e ir imprimindo os numeros de 0 a 9. Pera se calhar o 0 nao aparece.
Bof give up, has internets to scour!

ArabianShark said...

Pedro, Clay, Hal, Zeca, fazei valer o vosso curso!

... é melhor vires também, Katanas.

Sintra said...

loool
isto ja dava para uma piada!
QUANTOS CTS SAO NECESSARIOS PARA EXPLICAR UM CODIGO?

Zeca said...

*yawns*

There...

JS Junkyard

disregard any error... it was optimized for Firefox (Opera might complain... Google Chrome should be happy with it)

Zeca said...

já agora ... IMHO solução para o problema não existe... existe um numero impar de luzes... e cada 'interruptor' liga ou desliga um numero par...

ArabianShark said...

Yousa pointa is a-well seen...

Halloween said...

Cobro 6 euros por hora, queres mesmo q me dedique a isto? :P

Sintra said...

Ai esta, a resposta dum engenheiro!