Ayuda a Duke a encontrar una salida


Hola a todos! Para cada conferencia de Java, creamos un juego para que cualquiera pueda divertirse en nuestro stand. En la conferencia Joker 2018, invitamos a los participantes a sacar a Duke del laberinto, un artículo detallado sobre el juego del año pasado se puede encontrar aquí . Este año continuamos con la tradición e hicimos un juego donde, respondiendo preguntas de Java, necesitas ayudar a Duke a encontrar una salida oculta.

El punto es pasear por un campo de juego privado con preguntas sobre Java, para cada sesión de juego se genera una grilla única de preguntas. La tarea del jugador al responder preguntas es sacar a Duke del laberinto a través de la puerta, cuya ubicación es nueva cada vez, por lo que es imposible elaborar una estrategia por adelantado y apegarse a ella, siempre hay una gran oportunidad de ir en la dirección equivocada y estar lejos de la salida. Al mismo tiempo, al responder diferentes categorías de preguntas, el jugador abre un número diferente de celdas cerradas a su alrededor, al responder una pregunta simple, se abre 1 celda, en promedio 2 y en el complejo 3. Para la respuesta correcta a una pregunta simple, se otorga 1 punto, para el promedio - 2 , y para el más difícil - 5, y si el jugador pudo sacar a Duke del laberinto, se le otorgarán 20 puntos adicionales. ¡Pero no tan simple! Si un jugador responde preguntas incorrectamente, los puntos se agotan en proporción al sistema de acumulación, respondieron incorrectamente para una respuesta simple, perdieron 1 punto, en promedio - 2, en una dificultad - 5. Por lo tanto, 0 puntos no son el peor resultado, ya que puede ir a menos. El que obtenga más puntos en 180 segundos gana.

La pregunta más difícil para los participantes fue esta pregunta (que, por cierto, es de la categoría de las simples):

¿Qué imprimirá el código?

BigInteger big = BigInteger.valueOf(Long.MAX_VALUE); System.out.println(big.add(big).longValue()); 

  • -2
  • 4294967294
  • 18446744073709551614
  • lanza una ArithmeticException

Respuesta correcta
Es necesario recordar los conceptos básicos de la aritmética de bits y no olvidar que longValue() implementa la conversión primitiva de estrechamiento:

 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 


Algunas estadísticas del juego:

  • el número de sesiones de juego fue de 1123;
  • puntaje máximo 252;
  • en promedio, para 1 sesión de juego, un jugador respondió correctamente 15 preguntas.

Paradójicamente, el hecho es que este año, las preguntas simples fueron respondidas peor que las complejas.

Esta vez decidimos no publicar las respuestas correctas a las preguntas, sino darle la oportunidad de acercarse lo más posible a las condiciones del stand de Odnoklassniki en la conferencia JPoint 2019 y poner el juego en el dominio público para todos.

Puedes jugar el juego y probar tu fuerza aquí: javagame.odkl.ru

Source: https://habr.com/ru/post/447252/


All Articles