Помоги Дюку найти выход

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!


Всем привет! Для каждой конференции по Java мы придумываем игру, чтобы любой желающий мог весело провести время на нашем стенде. На конференции Joker 2018 мы предлагали участникам вывести Дюка из лабиринта, подробную статью про игру прошлого года можно прочитать тут. В этом году мы продолжили традицию и сделали игру, где отвечая на вопросы по Java, нужно помочь Дюку найти спрятанный выход.

Смысл заключается в блуждании по закрытому игровому полю с вопросами про Java, для каждой игровой сессии генерируется уникальная сетка вопросов. Задача игрока отвечая на вопросы вывести Дюка из лабиринта через дверь, местоположение которой каждый раз новое, поэтому заранее проработать стратегию и её придерживаться невозможно, всегда велик шанс пойти не в том направлении и оказаться далек от выхода. При этом, отвечая на разные категории вопросов, игрок открывает разное количество закрытых клеток вокруг себя, при ответе на простой вопрос открывается 1 клетка, на средний 2, а на сложный 3. За правильный ответ на простой вопросы начисляется 1 очко, за средний — 2, а за самый сложный — 5, а если игрок смог вывести Дюка из лабиринта, то ему начисляются дополнительные 20 очков. Но не всё так просто! Если игрок неправильно отвечает на вопросы, очки сгорают пропорционально системе начисления, ответил неправильно на простой ответ потерял 1 очко, на средний — 2, на сложный — 5. Поэтому 0 очков не самый худший результат, ведь можно зайти глубоко в минус. Побеждает тот, кто за 180 секунд наберет наибольшее количество очков.

Самым сложным, для участников, оказался вот этот вопрос (он, кстати, из категории простых):

Что напечатает код?

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

  • -2
  • 4294967294
  • 18446744073709551614
  • кинет ArithmeticException

Правильный ответ
Необходимо вспомнить азы битовой арифметики и не забыть, что longValue() реализует narrowing primitive conversion:

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


Немного игровой статистики:

  • количество игровых сессий составило 1123;
  • максимальный счет 252;
  • в среднем за 1 игровую сессию игрок отвечал правильно на 15 вопросов.

Парадоксально, но факт, в этом году на простые вопросы отвечали хуже, чем на сложные.

В этот раз мы решили не публиковать правильные ответы на вопросы, а дать вам возможность максимально приблизиться к условиям стенда Одноклассников на конференции JPoint 2019 и выложили игру в открытый доступ для всех желающих.

Сыграть в игру и проверить свои силы можно вот тут: javagame.odkl.ru
Источник: https://habr.com/ru/company/odnoklassniki/blog/447252/


Интересные статьи

Интересные статьи

Всем привет. Если вы когда-либо работали с универсальными списками в Битрикс24, то, наверное, в курсе, что страница детального просмотра элемента полностью идентична странице редак...
Предисловие Современные компиляторы обладают огромным количеством диагностик. И удивительно, что очень малая их часть включена по умолчанию. Огромное количество претензий, которые предъявляют к...
Ранее в одном из наших КП добавление задач обрабатывалось бизнес-процессами, сейчас задач стало столько, что бизнес-процессы стали неуместны, и понадобился инструмент для массовой заливки задач на КП.
Возможность интеграции с «1С» — это ключевое преимущество «1С-Битрикс» для всех, кто профессионально занимается продажами в интернете, особенно для масштабных интернет-магазинов.
Это — материалы из нашего корпоративного и хабраблога о работе с персональными данными, защите IT-систем и облачной разработке. В этом дайджесте вы найдете посты с разборами терминов, базовых под...