Заместитель главного редактора
3,4
рейтинг
18 июня 2013 в 21:27

Разработка → Альтернативные крестики-нолики перевод

Однажды на пикнике я заметил математиков, толпящихся возле игры, интереса к которой я ожидал меньше всего: крестики-нолики.

Вы могли и сами заметить, что игра крестики-нолики смертельно скучна. В ней нет места творческой идее или внезапному озарению. Хорошие игроки всегда играют вничью. Игра неизбежно идёт примерно так:



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



По мере наблюдения я заметил основные правила:

1. Каждый ход делается в одном из маленьких полей.



2. Достигший в маленьком поле расположения трёх одинаковых фигур в ряд выигрывает это поле.



3. Чтобы выиграть игру, необходимо одержать победы в трёх маленьких полях в ряд.



Но чтобы понять самое важное правило, мне потребовалось некоторое время:

Игрок не выбирает одно из девяти маленьких полей, в котором он хочет ходить. Выбор определяется предыдущим ходом вашего оппонента. Клетка в маленьком поле, в которую он сходил — это то маленькое поле, в котором вам предстоит делать ход. (И клетка, в которую вы сходите, в свою очередь определяет, в каком маленьком поле будет ходить ваш оппонент.) К примеру, если я схожу сюда…



Ваш следующий ход вы будете делать сюда…



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

Результат выглядит очень необычно. Игроки могут двигаться случайно, легко пропуская конструкции в две и три одинаковые фигуры в ряд. Но в этом безумии есть порядок — они продумывают свои ходы наперёд, помня о возможности послать оппонента в нетронутую недвижимость. Это, в общем, куда более интересно, чем обычные крестики-нолики.



Необходима пара условностей:

1. Что если мой оппонент отправляет меня в маленькое поле, в котором уже была одержана победа? Это неудачная ситуация. Если там остались незаполненные клетки, вам придётся выбрать одну из них. Хотя повлиять на исход игры в этом поле вы уже не сможете, вы хотя бы определите, где будет ходить ваш оппонент.



2. Что если мой оппонент отправляет меня в заполненное поле? В этом случае, примите наши поздравления — вы можете выбрать для хода любое из полей. (Это означает, что вам следует избегать отсылов вашего оппонента в заполненное поле!)



Когда я вижу, как мои студенты играют в крестики-нолики, я сдерживаю желание закатить глаза и показываю им эту игру. Вы можете поспорить, что игра развивает математические навыки (дедуктивное умозаключение, условное мышление, геометрическая идея подобия), но какая разница? В любом случае игра хороша.

И последнее: я разработал стратегию, которую я скромно назвал Гамбит Орлина. Вы начинаете захватом самой центральной клетки.



Вашему оппоненту придётся поставить нолик в любой из других клеток.



Вновь ходите в центр.



Нолики начинают образовывать ряд.



Опять ходите в центр.



Ваш оппонент образовывает победный ряд, смеясь над вашей глупостью.



Вновь ходите в центр.



Оппонент видит хитрость, на которую вы пошли…



Вновь сходите в центр. Ваш оппонент неохотно понимает, что остановить вас невозможно.



По окончании у крестиков ценой жертвы центрального поля есть наилучшая позиция в других восьми. Это никоим образом не идеальная стратегия. Она стимулирует потерю центрального поля без борьбы. Но вынужденное бесполезное скопление стольких ноликов на одном поле позволяет крестикам взять верх на протяжении остальной игры.



Словом, это альтернативные крестики-нолики. Играйте! Дайте знать, как у вас дела.

Дополнение 18 июня: Частый (и неглупый) вопрос: «Что делать, если в одном из маленьких полей ничья?» Похоже, есть два варианта:

1. Поле считается ни за крестик, ни за нолик. (Так играю я.)

2. Поле считается и за крестик, и за нолик. (Это поможет избегать ничьих, хотя может привести к странной ничье, когда вы и ваш оппонент одерживаете победу одновременно.)

Полагаю, каждый из вариантов работает. Просто убедитесь, что вы и ваш оппонент пришли к соглашению до начала игры, поскольку это влияет на стратегию.

Примечание переводчика: уже есть реализация этой игры для платформы «Андроид».
Перевод: Бен Орлин
Анатолий Будько @atomlib
карма
268,7
рейтинг 3,4
Заместитель главного редактора
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (103)

  • +130
    Я встроил тебе крестики-нолики в крестики-нолики, чтобы ты мог играть в крестики-нолики, когда играешь в крестики-нолики))

    Довольно интересно, спасибо!)
    • +4
      Именно это ожидал увидеть в первом комментарии ;)
      Спасибо за статью, будем играть.
      • +2
        Именно это ожидал увидеть в комментарии к первому комментарию.
    • +5
      Надо придумать фрактальные крестики-нолики
      • +24
        Кто первый умер, тот проиграл
        • +1
          это какие-то экзистенциальные у вас.
    • +32
      • +2
        Тогда уж

    • +10
      а еще можно придумать шахматы, где каждая фигура либо страдает раздвоением личности, либо раздираема внутренними противоречиями или шизофреник с параноиком в одном флаконе. :)
      • +2
        Лучше — обладает свободой воли :)
        • +1
          Игрок выбирает фигуру, а потом по Random выбирается любой из возможных ходов. И фигура его делает.
          • +1
            Кости бросать? Интересно.

            Понадобятся кости в виде тетраэдра, октаэдра и монетка. Первым броском выбираем направление (тетраэдр для слона и ладьи, октаэдр для коня, ферзя и короля), вторым — величину хода (монетка для пешки на второй/седьмой горизонтали, октаэдр для ладьи, ферзя и слона).
            • +1
              Нет, считаем ходы (их K), находим нужное число цифр в 6-ричной системе счисления (n: 6^n>=K), и бросаем кубик нужное число раз, пока выпавшее число X не окажется корректным (т.е. X/K<6^n/K). Тогда остаток X%K даст номер хода. Иначе ходы не будут равновероятными.
              • +1
                А так ходы тоже не будут равновероятными. Простой пример: пусть ходов K=30, тогда n=2; ходам под номерами 0–5 будет соответствовать по два события, а всем остальным — по одному.

                Или я не так понял суть корректности X?
                • +1
                  Пусть у ладьи есть 5 возможных ходов вперёд и 2 вправо. Если мы сначала выбираем направление броском тетраэдра, то вероятность каждого хода вперёд окажется 1/20, а каждого хода вправо — 1/8.
                  В моём варианте если других ходов нет, то K=7, кубик придётся бросать дважды. Пусть выпали P и Q (от 0 до 5). Считаем X=6*P+Q. Если X<35, то X%7 — номер хода. Если X=35, то X/K=36/K (=5), значит, значение X некорректно, и использовать его с сохранением равной вероятности мы не можем — надо кубики перебрасывать.
  • +2
    Отличная статья, спасибо!
  • +6
    Интересно.
    Мы в колледже играли в крестики-нолики на большом поле. Тетрадный лист в клетку и до пяти в ряд. Однако со временем еще ввели систему очков: если ты можешь поставить пятый крестик (или нолик), то ставишь вместо него точку и получаешь одно очко. Противник должен эту точку закрыть, иначе с каждым ходом тебе прибавляется по очку. То бишь, прошляпил четыре крестика подряд, а по бокам — пустые клетки, то минимум на 3 очка отстал.
    • +3
      Я курсе на втором в универе на Borland Pascal написал оболочку, которая позволяла соревноваться AI в виде подключаемых dll'ок с визуализацией. Ну и самому можно было играть с этими модулями мышкой. Под DOS. Даже соревнования среди одногруппников проводили у кого круче AI :)
      • +3
        Оу! Я тоже писал крестики-нолики на Паскале (в 10 классе). Тоже с мышкой, набирал вручную модуль F_MOUSE.PAS из книги Фаронова.
        А потом откуда-то у меня появилась GO-MOKU (или Turbo-Gomoku) от Borland и сильно меня огорчила, т.к. играла намного сильнее моей реализации :)
        • +1
          Сильные реализации используют альфа-бета отсечения, а у нас были самодельные алгоритмы :)
          Но, надо сказать, довольно сильные.
    • +2
      Пять в ряд — это не крестики-нолики были, а разновидность Гомоку.
    • +6
      Мы на парах рубились в четырёхмерные крестики-нолики в гиперкубе 5х5х5х5. Как раз одна партия на полпары.
      • +1
        А можно поподробнее?
        • +1
          Гиперкуб разворачивался на плоскость, получалось 25 квадратов пять на пять. Остальное — дело воображения. =) Правила были стандартные.
          • +1
            Просто я как представлю, насколько сложно было заполнять всё это. Думал, может у вас какая-нибудь хитрость была=)
            • +1
              Нет, не сложно. Научиться видеть ряды, проходящие сквозь измерения, довольно легко. Но всё равно это остаётся игрой на внимательность.
      • +1
        Действительно. Даже если заполнять половину поля, это получается около 9 секунд на ход. Как вы успевали?
        • +1
          Кто-нибудь проигрывал раньше)
      • +1
        А почему не 3х3х3х3?
        • 0
          .
        • +1
          Думал, что ошибся. Нет, в 3х3х3 у первого есть простая стратегия: сначала ходить в центр, а потом, при любом ходе второго, в три хода закончить игру в одном из средних слоёв.
          • +1
            А где центр у гиперкуба?
            • +1
              В точке (2,2,2,2) (если координаты по всем осям от 1 до 3).
              • +1
                А. Логично.
        • +1
          Вопрос снят, ниже прочитал что для сохранения баланса.

          upd: Да и выше уже тоже :)
  • +3
    Интересный способ сделать из забытого и старого новое и интересное :)
  • +1
    Будет, чем заняться на скучных лекциях. Спасибо.
    • +3
      Зачем вы вообще туда ходите?
      • +3
        За дипломом
        очевидно

        • +2
          Ну у меня тоже есть стильный коврик для мыши. Но наличия меня там практически не требовалось.
          • +1
            Да товарищ hatred1993 в принципе может и ни при чем.
            Обязаловка, например. Религиоведение какое-нибудь.
            Сам факт вымораживает существования такой проблемы
            • +4
              Ну сейчас, как бы не 00 и на том же религоведении можно смело достать планшет и зарыться в доки какие. Я как то ради лулзов притащил на пару газовый паяльник, плату, детальки и сидел на задней парте собирал плату :) Когда препод увидел у него челюсть чуть не отпала.
              • +1
                Эх, хорошо было в военном училище на парах. Достал телефон — лишился телефона. Уснул (списал, заговорил, не заполнил конспект) — лишился увольнения или отпуска. Романтика. Зато были дисциплины, где только с паяльником и работали :)
                • +8
                  обучение допросу?
                  • 0
                    Ректотермальный криптоанализ.
                    • +1
                      Только терморектальный.
  • +7
    На первой фотке у вас фломастеры меняют позицию не на каждой итерации.
    Исправьте пожалуйста:)
  • +3
    Можно на основе этой игры сделать игровые автоматы :)
  • +1
    Я о чем-то таком думал еще в классе 5м, но среди моих одноклассников эта игра в принципе не прижилась
  • +2
    Очень интересно)
    Кстати, можно дополнить правила тем что если в клетке сложен не один ряд, а несколько — это считается за соответствующее количество очков.
    В примере с вашей стратегией — получится что в центральном поле у ноликов сложено 4 ряда, и соответственно крестикам сложнее будет выиграть.
    Конечно нужно проверять баланс в таком случае, но это может внести дополнительное разнообразие в отличную игру.
  • +2
    Не уж-то никто еще не написал варианта игры с компьютером на Android/iOS?
    • +1
      Да-да, кстати) открываем любимую среду и пишем-пишем, пока не поздно :)
      • +1
        Может кому-то станет интересно.
        Если первый ход осуществить в центр, и если противник не походит в один из крайних углов в ответ — у вас 100% выигрыш.
        Изображение
  • +7
    Идея шикарная, однако, маневр с захватом центров всех маленьких полей сводит всю «играбельность» на нет… Даже если запретить делать первый ход в центральную клетку на любом поле, второй игрок тут же захватит эту инициативу.
  • НЛО прилетело и опубликовало эту надпись здесь
    • +1
      чем он странен?
      • НЛО прилетело и опубликовало эту надпись здесь
      • +1
        Тем, что если крестик поставить в угол, то это выигрыш. Ведущая к ничье партии рисуется другая.
        • +1
          С чего вдруг это выигрыш?
          • +2
            Туплю. Так же в шахматах, бывает, — упрешься рогом в «ааа, я сейчас такую тактику проверну», пока у тебя планомерно съедают ладью, коня, ферзя.
  • +4
    Гамбит Орлина
    всегда выигрышная комбинация? В правилах может имеет смысл добавить ограничение какое-то?
    • +1
      Можно запретить первым ходом отправлять противника в ту же игру.
      • +1
        Тогда второй игрок может заставить первого топтаться на месте. Можно попробовать вообще запретить отправлять в то же поле, пока есть другие варианты. Ну или разрешить делать ход в любом месте, если игрока отправили в ячейку, где уже есть выигрышная комбинация.
        • +2
          Вот второе мне кажется наилучшим решением… хотя пока мы не знаем, так ли хорош гамбит Орлина
          • +1
            Попробовал сыграть против гамбита Орлина. Выиграл, хотя с тем же успехом мог и проиграть. Надо попробовать начать его не из центра, а из угла — первый ход в угол в обычных крестиках-ноликах более эффективен, чем ход в центр.
  • +1
    У нас, в Чехии, популярными являются Piškvorky (оф. сайт) (wiki).
    Это аналогия японской игры Гомоку (wiki) (яп. 五目並べ)

    P.S.
    Т.к. мне нравится Гомоку, меня достаточно сильно заинтересовали новые крестики-нолики, спасибо за статью :)
  • +1
    Очень интересно, спасибо! Надо попробовать.
  • +1
    Если каким-то образом исключать «отыгранные» поля из игры (т.е. те, в которых уже есть результат), Гамбит Орлина перестает быть возможным — что хорошо.
  • +1
    Кстати, «гамбит Орлина» можно начинать из любой клетки. Если таким образом «сдать» оппоненту клетки A1 и A2, а потом пойти в угол a3 клетки A3 (тем самым, захватив её), то оппонент сам отдаст вам победу — ему больше ничего не останется. Хотя в варианте «поле с рядами и крестиков и ноликов считается и за крестик, и за нолик» это не работает.
    А избежать «гамбита» просто — достаточно сказать, что если ход был сделан в «рекурсивную» клетку, то оппонент может ходить куда угодно.
    • +1
      Это не поможет: я хожу в центр, Вы — куда угодно, я хожу в выбранном Вами поле снова в центр и Вы таки отправляетесь в него… разве что к концу у Вас будет один нолик в нецентральном поле
      • +1
        А если я своим первым ходом пойду в центр другого поля?
        • +1
          Ну тогда гамбит разыграете Вы) Ну на самом деле тогда имеет смысл тому, кто играет крестиками, изначально ходить в центры нецентральных полей, оппонент не сможет призвать его в центральное из-за рекурсивных ограничений.

          На самом деле от гамбита спасает правило, что в выигранное поле не ходят — ходят в любое, тогда достаточно быстро гамбит кончится… ну вернее крестики захватят 5 полей а не 8
          • +1
            Ну, пытается первый игрок загнать меня в центр. Я за три хода центр закрою, а потом отправлю его в то поле, откуда он начал игру. Там центр уже занят, так что ему придётся придумывать что-то ещё… А это уже больше похоже на полноценную партию.
            • +1
              Да, за три… на счет 5 я чтот затупил вчера…
    • +1
      Можно запретить ходить в центр первым ходом
  • +1
    Можно при глобальной ничьей присуждать победу тому, кто смог захватить больше полей… это тоже в какой-то мере результат
  • +1
    Выбор определяется предыдущим ходом вашего оппонента. Клетка в маленьком поле, в которую он сходил — это то маленькое поле, в котором вам предстоит делать ход. (И клетка, в которую вы сходите, в свою очередь определяет, в каком маленьком поле будет ходить ваш оппонент.) К примеру, если я схожу сюда…
    Ваш следующий ход вы будете делать сюда…
    Ничего не понял — судя по тексту ходить нужно туда куда сходил оппонент, но маркером обведено другое поле. Поясните пожалуйста.
    • +3
      Первый игрок сходил в произвольном поле в правый верхний угол, значит второй ходит в правое-верхнее поле куда угодно. Например, в центр, значит первый игрок теперь должен ходитьв центрально поле… и тд
      • +1
        Все, дошло, спасибо. Ход в маленьком поле указывает в какой ячейке большого поля находится маленькое поле, в котором будет делать ход противник.
  • +1
    Думаю, что «Альтернативные» тут не лучший перевод, т.к. Ultimate Tic-Tac-Toe идет по аналогии с Ultimate Frisbee, IMHO.
  • +5
    А если в одном из полей ничья, то оно делится еще на 9 полей (третьего уровня).
  • +1
    Правило «послали на заполненное поле — ходи куда хочешь» кажется мне искусственным. Его стоило бы заменить на «нельзя делать первый ход в клетку, соответствующую своему же полю». Заодно и гамбит пофиксится.
    • +1
      Это может быть наказанием за невнимательность, зачем искусственно ограничивать возможность хода.
      Все равно ведь мы не хотим, чтобы противник имел возможность ходить куда угодно.
      • +1
        ИМХО, лучше один раз искусственно ограничить, чем много раз искусственно разрешить. Впрочем, дело вкуса.
  • +2
  • +3
    Если кому то наскучит и этот вариант, всегда можно добавить новый уровень, причем предела нет!
  • +3
    Поиграл сегодня с товарищем. У нас с первой же игры появился другой режим — кто первый соберет 3 подряд тот и выиграл. И задача сводится к тому чтобы не дать сопернику победить себя ни в одном поле… просто попробуйте…
    • +1
      Хорошая идея. А то очень сильное преимущество было у того кто начинает игру
      • +2
        FakeFactFelis, предлагаю добавить этот режим в статью. Опять играли — весьма интересно получается и главное нет соблазна гамбит использовать…
        • +1
          Ну это же перевод, а не оригинальная статья, поэтому что-то убрать или добавить не получится.
  • +1
    А мы год назад примерно на работе периодически отвлекались на 3х-мерные крестики-нолики. Очень занимательная штука, однако. (Даже была идея реализовать ее на JS)
    После смены работы игрушка дома теперь без нескольких фишек без дела лежит.
  • +2
    Если говорить о различных вариациях крестиков-ноликов, у Гарднера, кажется, был вариант правил, когда каждый игрок может ставить как крестик. так и нолик, а выигрывает тот, кто соберёт ряд из трёх одинаковых фигур, неважно, крестики это будут или нолики. При том же размере поля стратегия становится гораздо менее тривиальной.
  • +1
    Мы с другом играли в трёх и четырёхмерные вариации крестиков-ноликов, которые сами придумали. Для трёхмерного варианта рисуется три слоя 3х3, и каждому игроку даётся по два «виртуальных» игрока, например, назовём их X, O, R, T. Сначала ходит X, потом O, потом R, потом T. Причём люди ходят по очереди. Если выигрывает X или R — победил первый игрок, иначе второй.

    Этих виртуальных игроков пришлось ввести для баланса, иначе кто-то гарантированно побеждал, как я помню. В четырёхмерных нужно ещё больше виртуальных игроков, не помню сколько точно.
    • +1
      Надо было просто увеличить размер поля. Даже в 4^3 первому выиграть не очень легко.
  • +1
    А я вот первым делом подумал о том, как это дело совместить с трёхмерными крестиками-ноликами (те, в которых каждый из 3 слоёв куба 3*3 представлен обычным полем). Офигенно же должно получаться!
  • +3
    Сделал версию с мультиплеером — 82.196.5.189/
    Может потом и ИИ приделаю
    Пояснялка
    Чтобы поиграть нужна зайти в комнату где 1 человек или в несуществующую
    Чтобы закончить игру, нужно чтобы 1 из игроков вышел из комнаты или перезашел в неё же
    Чтобы начать игру в комнате где она закончилась — перезайти

    Так как в комментариях говорят про неидеальность правил, то проверки победы нет, победитель определяется путём дискуссии в чате)
    • +2
      Фичареквест: показывайте имена игроков, которые сейчас играют.
      • +1
        Сделал, при заходе в комнату пишется в чат
  • +2
    это чудесно!
  • 0
    Ого. Топик добра!
  • +1
    Отличная вещь. Автору большое спасибо!
  • +1
    Гамбит Орлина можно модифицировать до гарантированно выигрышной стратегии: www.khanacademy.org/cs/in-tic-tac-toe-ception-perfect/1681243068. А тут можно поучаствовать в турнире программ по модификации этой игры, в которой игрок, отправленный в уже выигранную подигру, может делать ход в любую клетку.
  • +1
    Вот наткнулся на отличную реализацию этой игры под android (не знаю, может и под ios есть). И вспомнил про эту статью. Предлагаю автору FakeFactFelis добавить в статью ссылку. Игра того стоит, лично я наконец нашел во что играть на телефоне!
    • +1
      Спасибо, информация была добавлена в виде примечания.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.