Category: игры

Category was added automatically. Read all entries about "игры".

Часы и комбинаторика

Мои электронные часы показывают часы, минуты, секунды в 24-часовом формате, а также день и месяц. Час, день и месяц они показывают без ведущих нулей. Сколькими способами они могут показать все цифры одновременно? Какие-нибудь 9 из них?

Current music играет в трейлере Mass Effect: Andromeda.
  • Current Music
    Johnny Cash — Ghost Riders In The Sky
  • Tags

У меня дробовик

Я заметил, что, несмотря на свой почтенный возраст, никогда не писал скелетную анимацию и исправил это. Да простит меня Ордо Ксенос за лень писать честное отражение на шлеме :) Шутка про то, что различие анатомии азари и кварианцев облегчает файл ресурсов. Ссылка на парсер .psk/.psa.

А чего никогда не писали вы, несмотря на седины?

Искусство обмана

Это немного причесанная версия моего рассказа по аське про особенности геймдева. Везде, где можно было соврать для красного словца, я так и делал :)

Мой коллега правил адский баг в сетевой игре Splinter Cell Conviction. Следует сделать небольшое отступление и рассказать, как сейчас пишутся все сетевые игры. Считают одно и то же детерминировано на разных машинах, подавая в движок на обоих ввод от обоих машин. Если в игре происходит лаг, то детерминировано откатывают движок на какое-то число шагов и подают снова все данные, как будто лага не было. В процессе игры, чтобы убедиться, что все считается, как положено и никто не читерит, считаются хэш-суммы от состояния мира и сравниваются. Если отличаются, происходит рассинхронизация, и игра прекращается.

Collapse )

Игра «Определители 3x3»

Правила: игроки выбирают знаки, после чего по очереди заполняют матрицу 3x3 разными числами от 1 до 9. Чей знак имеет определитель полученной матрицы, тот и выиграл.

Моя программа, исходя из 9! = 362880 финальных позиций проанализировала все \sum\limits_{n=0}^9{\binom{9}{n} \frac{9!}{n!}} = 17572114 позиций в игре, тем самым найдя оптимальную стратегию для всех 9!2 = 131681894400 игр.

Вывод: первый игрок имеет выигрышную стратегию независимо от выбранного им знака.

Любопытно, что первый ход может быть в любую клетку, но только цифрами от 4 до 8, независимо от знака. Создать непобедимую реализацию несложно, если использовать простой memory-time trade-off: хранить первые два хода первого игрока (1 первый и 64 вторых) и рассчитывать последующие 120 финальных позиций и 1546 промежуточных. Вот пример вторых ходов, записанных в очевидном JSON-формате:

{"000080001": "02", "000080002": "01", "000080003": "04", "000080004": "03", "000080005": "04", "000080006": "04", "000080007": "03", "000080009": "03", "000080010": "07", "000080020": "05", "000080030": "05", "000080040": "05", "000080050": "04", "000080060": "04", "000080070": "03", "000080090": "03", "000080100": "05", "000080200": "05", "000080300": "04", "000080400": "06", "000080500": "21", "000080600": "21", "000080700": "21", "000080900": "21", "000081000": "07", "000082000": "05", "000083000": "05", "000084000": "05", "000085000": "04", "000086000": "04", "000087000": "03", "000089000": "03", "000180000": "22", "000280000": "19", "000380000": "19", "000480000": "05", "000580000": "03", "000680000": "04", "000780000": "04", "000980000": "05", "001080000": "05", "002080000": "05", "003080000": "04", "004080000": "06", "005080000": "16", "006080000": "61", "007080000": "61", "009080000": "61", "010080000": "52", "020080000": "39", "030080000": "39", "040080000": "05", "050080000": "03", "060080000": "04", "070080000": "04", "090080000": "05", "100080000": "82", "200080000": "81", "300080000": "15", "400080000": "15", "500080000": "14", "600080000": "14", "700080000": "21", "900080000": "21"}

К слову, максимальный определитель, который можно получить в этой игре, равен 412 (очевидно, что минимальный равен −412), а общее решение задачи о максимальном определителе из перестановки 1..N2 неизвестно. Неизвестен даже максимальный определитель матрицы 7x7, составленной из чисел 1..49, а на поиск лучшего (и, похоже, неверного) приближения было потрачено 4 CPU-года на хороших современных Itanium'ах.

\begin{vmatrix} 46 & 42 & 15 & 2 & 27 & 24 & 18 \\ 9 & 48 & 36 & 30 & 7 & 14 & 31 \\ 39 & 11 & 44 & 34 & 13 & 29 & 5 \\ 26 & 22 & 17 & 41 & 47 & 1 & 21 \\ 20 & 8 & 40 & 6 & 33 & 23 & 45 \\ 4 & 28 & 19 & 25 & 38 & 49 & 12 \\ 32 & 16 & 3 & 37 & 10 & 35 & 43 \end{vmatrix} = 762150368499

Эта последовательность имеет в справочнике Слоана номер A085000.