Esse é pra torrar o cerebro

12 respostas
luiz_ross

Qual a saida?

class j extends Error
	{
		;static  j j
		;static//j j

		{ ;j=new j();{
		 };j.j.j.j(); }

		j(){super("".valueOf(new char[
		  ]{10,100/0xa,0xa,'j','j'-(1
		  <<3)-1,'j'+3*4,-1*(9-'j'),1
		  <<5,'j'-1,'j'/20*23,2
		  <<4,0xa*0xa+0x2,9*13,10*11,1+(4
		  <<3),0xa,0xa,0xa}));}j

		j(){throw this==j.j?j.j:this;}
	}

12 Respostas

cv1
j:

java is fun!


<stack trace>

AAAAAAAAAAAAAAAH, toma essa ;)

NapoCoelho

Que linguagem é essa?? Java ou Grega?? Será q alguém poderia me explicar passo a passo??

NapoCoelho

Vamo lá então. Tirando este monte de ‘;’, todo o rodeio de instanciação de classes inúteis q vc colocou e indo direto ao ponto, o resultado do vetor de chars é:

10, = new line
100/0xa, = nl
0xa, = nl
‘j’, = ‘j’
‘j’-(1<<3)-1, = ‘j’ -8 -1 = ‘j’ - 7 = ‘a’
‘j’+34, = ‘j’ + 12 = ‘v’
-1
(9-‘j’), = -1 * (-97) = 97 = ‘a’
1<<5, = 2^5 = 32 = space
‘j’-1, = ‘j’-1 = ‘i’
‘j’/2023, = ???
2<<4, = 2 * 16 = space
0xa
0xa+0x2, = 1010+2 = 102 = ‘f’
9
13, = 117 = ‘u’
10*11, = 110 = ‘n’
1+(4<<3), = 33 = ‘!’
0xa, = nl
0xa, = nl
0xa = nl

richardpeder

beleza entao!!

alguem tem algo mais complexo ae?!!! :smiley: :slight_smile: :wink:

ate mais…

louds

Tem esse aqui que é bem simples:

static int oResultadoÉ(int n) {
	n = (n & 0x55555555) + ((n >>> 1) & 0x55555555);
	n = (n & 0x33333333) + ((n >>> 2) & 0x33333333);
	n = (n & 0x0f0f0f0f) + ((n >>> 4) & 0x0f0f0f0f);
	return n % 255;
}

Qual o significado do resultado desta função?

NapoCoelho

Eh. Vamos ver…


Resumo em decimal:

static int oResultadoÉ(int n){

n = (n & [telefone removido]) + ((n >>> 1) & [telefone removido]);

n = (n &  858993459) + ((n >>> 2) &  858993459);

n = (n &  252645135) + ((n >>> 3) &  252645135);

return n%255;

}

resultados:
n = 5 -> a entrada do método estático é 5;

primeiro:
n = (8 & [telefone removido]) + (4 & [telefone removido]) = 4 decimais

ou

0000000000000000000000000001000
& 1010101010101010101010101010101

0000000000000000000000000000000

0000000000000000000000000000100
  • & 1010101010101010101010101010101 = 4 dec.
    -------------------------------------------
    0000000000000000000000000000100

segundo:
n = (4 & 858993459) + (1 & 858993459)

ou

000000000000000000000000000100
& 110011001100110011001100110011

000000000000000000000000000000

000000000000000000000000000001
  • & 110011001100110011001100110011
    ------------------------------------------ = 1 dec.
    000000000000000000000000000001

terceiro:
n = (1 & 252645135) + (1 & 252645135)

ou

0000000000000000000000000001
& 1111000011110000111100001111

0000000000000000000000000001

0000000000000000000000000000
  • & 1111000011110000111100001111 = 1 dec.
    ---------------------------------------
    0000000000000000000000000000

quarto:
return 1%255; // o resultado é igual a 1

e é isso ai. Se eu estiver errado, me corrijam por favor. Valeu!!! hehe

louds

Para 5 a saída é 2…

NapoCoelho

opa, perai, é q eu comecei com 5 mas era 8 a entrada, foi malzz, hehe.
Veja com 8. Eu num testei não!!!

louds

Com 8 é 1.

Ae, ninguém sabe qual propriedade do número está sendo calculada com esta função? Pô!

NapoCoelho

Como assim, propriedade?? Não era só calcular a saida??

F

É a quantidade de "1"s que o número possui na sua representação binária.

NapoCoelho

Mas o louds disse:

“Ae, ninguém sabe qual propriedade do número está sendo calculada com esta função? Pô!”, e eu já num coloquei a representação binária das comparações lógicas??

Criado 15 de fevereiro de 2004
Ultima resposta 17 de fev. de 2004
Respostas 12
Participantes 6