Olá pessoal! Para cada conferência Java, criamos um jogo para que qualquer pessoa possa se divertir em nosso estande. Na conferência Joker 2018, convidamos os participantes a tirar Duke do labirinto, um artigo detalhado sobre o jogo do ano passado
pode ser encontrado aqui . Este ano, continuamos a tradição e fizemos um jogo em que, respondendo a perguntas sobre Java, você precisa ajudar a Duke a encontrar uma saída oculta.
O objetivo é passear por um campo de jogo particular com perguntas sobre Java, para cada sessão de jogo é gerada uma grade exclusiva de perguntas. A tarefa do jogador em responder perguntas é tirar Duke do labirinto pela porta, cuja localização é nova a cada vez, por isso é impossível elaborar uma estratégia com antecedência e cumpri-la, sempre há uma grande chance de seguir na direção errada e estar longe da saída. Ao mesmo tempo, respondendo a diferentes categorias de perguntas, o jogador abre um número diferente de células fechadas ao seu redor, ao responder a uma pergunta simples, uma célula é aberta, em média 2 e na difícil 3. Para a resposta correta a uma pergunta simples, um ponto é concedido, para a média - 2 , e para o mais difícil - 5, e se o jogador conseguiu tirar Duke do labirinto, ele receberá 20 pontos adicionais. Mas não é tão simples! Se um jogador responde a perguntas incorretamente, os pontos queimam proporcionalmente ao sistema de competência, respondidos incorretamente por uma resposta simples, perdendo 1 ponto em média - 2, em um difícil - 5. Portanto, 0 pontos não são o pior resultado, porque você pode se aprofundar menos. Quem conseguir mais pontos em 180 segundos vence.
A questão mais difícil para os participantes foi esta (que, aliás, é da categoria de simples):
O que o código imprimirá?
BigInteger big = BigInteger.valueOf(Long.MAX_VALUE); System.out.println(big.add(big).longValue());
- -2
- 4294967294
- 18446744073709551614
- lança uma
ArithmeticException
Resposta corretaÉ necessário recordar o básico da aritmética de bits e não esquecer que
longValue()
implementa uma conversão primitiva
longValue()
:
jshell> BigInteger big = BigInteger.valueOf(Long.MAX_VALUE) big ==> 9223372036854775807 jshell> big.toString(16) $2 ==> "7fffffffffffffff" jshell> big.add(big).toString(16) $3 ==> "fffffffffffffffe" jshell> big.add(big).longValue() $4 ==> -2
Algumas estatísticas do jogo:
- o número de sessões de jogos foi 1123;
- pontuação máxima 252;
- em média, para uma sessão de jogo, um jogador respondeu corretamente 15 perguntas.
Paradoxalmente, o fato é que, neste ano, perguntas simples foram respondidas pior que as complexas.
Desta vez, decidimos não publicar as respostas corretas para as perguntas, mas dar a você a oportunidade de ficar o mais próximo possível das condições do estande do Odnoklassniki na conferência JPoint 2019 e colocar o jogo em domínio público para todos.
Você pode jogar e testar sua força aqui:
javagame.odkl.ru