Крестики-олики

Это текстовое описание варианта игры в крестики-нолики от ИП Руммо В.Н. фотостудия Трезвая Азбука. Бесплатно пробовать, поиграть с роботом-программой круглосуточно, можно здесь - вк.ком/о_н_трезв(vk.com/o_n_trezv)

Делаю эту игру для своей дочки Екатерины. Очень сильно желание назвать её Кристинки-Олики. Правила отличаются совсем не много, поэтому и название придется изменить всего на одну выпавшую букву. Катьки-нолики - вообще не звучит!

Правила.
Для игры в крестики-олики нужны СМСки или любой другой канал именно текстовой, побуквенной связи.

Поле чертиться из 9 плюсиков по три в строчку. вместо плюсика ставиться букв Х - крестик, буква О - нолик. Перенос символов построчный - три строки тож обязательное условие.
Для примеры взято пустое поле и с тремя ходами:
+++   +++
+++   +о+
+++   о+х

Создавая программу на базе бесплатных ВК-роботов для коллективных бесед в той же социальной сети пришел к такому алгоритму.
Главное правило алгоритма - робот-программа на любое сообщение (команда - поле 3 на 3) с любым количеством и расположением крестиков, ноликов выдаст случайны ход из всех возможных следующих вариантов. А их всё же конечное число!

Командами являются все варианты. Ход начинается строго с нолика. Ой,Олика! не путать символы:+,х,о; плюс, маленькая буква ХЭ, маленькое Оо. Не ноль - буква О!
И пустые ячейки заполнять плюсиками. Следующий ход является КОМАНДОЙ. Никаких префиксов и дополнительных команд не надо. Кроме, разве что, команды - правила крестиков-оликов. Возможно сделаю отдельную группу под эту игру с одноимённым название Крестики-Олики. Сделать мобильно приложение, что бы в разных соцсетях работала у меня не получиться. Нету столько  у меня желания, времени и денег.

Приложение БЕСПЛАТНОЕ.
Если за него будут просить деньги кто-нибудь кроме меня, Руммо В.Н. - это мошенники. Не платите!

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

Меня хватило только на три хода переборки вручную всех вариантов расстановки  символов. Каждый следующий ход добавляет варианты... Да, там(вариантов) будет многотысячное число... И не спасёт отбрасывание выигрышных комбинаций... а может ис пасёт... Я вчера узнал, что те кто так программирует называются Кодерами. От слова КОД - те кто пишут код... А я алгоРИТМщик! Ритмозадаватель я!

Так. Доделки из социальной сети и практики.
Меня не хватило сделать генератор  +/о/х, а ведь всего 9 ходов возможно  в классических крестиках ноликах 3 на 3. Честно, я пытался в ТА-боте. И результаты можно посмотреть круглосуточно. Альфа-бэта, короче, пробная версия работает. Я её отключать не собираюсь. Как и остальные хороводы из слов зависит в полурабочем состоянии. Продолжу в автобиографическом стиле описывать алгоритм. который меня устроил в крестиках-оликах. Помним главное отличие от классических? Напомню! Робот не помнит предыдущих ход. Помнит только сколько всего ходов была и сколько крестиков-оликов случайным образом расставить по полю.

Сделав в ручную больше 500 расстановок и дойдя до 3-4 хода. Точней на 4-ом,5-ом ходе с перебором всех возможностей я сдался. Я осознал что с ошибками сделал 3-4 ход. И как всегда компьютер  зашторивал глаза. Я взял ручку и бумагу. и решил прописать первые варианты возможного выигрыша. На 5-м ходе можно выиграть...

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

Аналитика. Конечно математика! С её комбинаторикой - факториалами, вагонами и протонами. Ну, и интернетовские школьные задачки почитал как найти 3 из 36. пределал её под свой условия практически дословно. Только цифры поменял.

ЗАДАЧА
Число размещений из 33 элементов по 3.
ОТВЕТ:
1) Если последовательности, поочередности важны, то 5456 вариантов
2) Если порядок не важен, то 32736 вариантов
ПРОВЕРКА:
Пошаговое объяснение.
1) Первый элемент можем выбрать 33 способами, второй элемент 32 способами, третий элемент 31 способами. Всего 33*32*31 = 32736. Но мы должны разделить на 3 факториал, то есть на 6 - это количество перестановок из 3 элементов. Итог 720/6 = 5456.
2) Если порядок важен, то делить на 3 факториал не надо, то есть будет 32736 вариантов.

Но ведь эта задача только для третьего хода! И он выдал 32 тысячи вариантов, которые я хотел в ручную прописать? Я расстроился сильно, но не сдался... Что-то мне подсказывало что я условие сформировал не верно. Как минимум дело в том, что вариантов кк бы два: крестик, нолик, пустая клетка. Вот о пустой клетке, о третьем варианте забывают дети и взрослые. В моём варианте крестиков-ноликов, официально названых крестиками-оливками, это категорично запрещено. Пустые клеточки заменены плюсиками, а нолик - оликом. Нолик заменён буквой "О" однозначно, точно и категорично.

Блин, а при чём здесь 33?  У меня из 9 вариантов же нужно выбирать!

ЗАДАЧА.
Сколько возможно вариантов расстановки крестиков-ноликов пошагово и суммарно. Сколько всего вариантов расстановки крестиков ноликов до полного заполнения поля три на три? И сколько пропадает ходов после выигрыша?
РЕШЕНИЕ.

1-ый ход одну клеточку в поле из 9 ячеек можно разместить 9 способами. Перестановки внутри одной клетни не возможны. Крестик на нолик во время игры не меняем. Вот первая условность которую отбрасываем, но математически и физически она имеет смысл. и робот игры в крестики-олики должен, обязан спросить: кто ходит первым, кто ходит оликом. На практики в живую этот вопрос задается один раз, в первой партии. А потом остается в умолчаниях - игроки ходят по очереди, пока обом игрокам не надоест играть. У первого походившего теоретическое преимущество в один ход и к ниму липнет право выбора ходить крестиком или оликом. Если постоянно дёргаться и менять крестик на нолик. Забывать в кавычках чем походил, то возможно 18 ходов. 9 умножил на 2.
Х/O возможен максимум 9 вариантами. Перестановок - ноль. Не запомнить, не увидеть что стоит х или о... Это нонсенс! Чистое поле - это ноль. А первый ход на нём возможен 9 вариантами. Граница хода путается. Как и с натуральными числами. Никто не считает с нуля.
Промежуточный ОТВЕТ: 1(х/о) и 8(+) - 9. 1(9+) из 9 - 0
2-ый ход две клеточки в 9 ячеек. 9*8=72 - это количество вариантов в независимости от того кто и как первый походил. Я проверял на бумаге каждый ход рисую. И этот ответ сходиться с теорией. Там что-то про факториалы...Две клеточки заполнены на всё том же поле из 9 ячеек. Возможные перестановки внутри связки крестики-олики - две. И если их не учитывать то 36 вариантов заполнения ячеек.
Промежуточный ОТВЕТ: 2(х/о) и 7(+) на 9 - 72. 2(х/o и 8+) из 9 - 36
3-ый ход три заполненных клеточки в 9 ячейках. 9*8*7=504 Если учесть, что в три ячейки олик может зайти всего три раза на любой позиции... Матиматически говорят нужно поделить на факториал трёх. Но физические. Художественный образ мне больше нравиться - оставить забронированное место неизвестностям и даже ошибкам. В нашем конкретном примере придётся оставить крестику или олику ход!
Промежуточный ОТВЕТ: 3(х/о) и 6(+) на 9 - 504. 3(х/o и 7+) из 9 - 84
4-ый ход четыре двояко заполненных ячеек из 9. Не известно кто и чем ходит... В предыдущем и будущем ходе не важно кто и чем ходил первым. Только два поля играю... Нужно учитывать их только частично. Иначе запутаешься слишком большим вариантом возможностей. 9*8*7*6=3024  и  9*8*7*6/4/3/2=126 Вот тебе и разница умолчаний! ВОт здесь у людей случается паника - кто ходил первым! А!!! Важно или нет? Столько упущенных возможностей. Тысячи вариантов против сотни - это когда ты не заморачивался на перестановки и право первого хода. Это когда ты внимательно следишь за предыдущим ходом и высокими вероятностями. Это когда ты не зациклился на первом своём или чужих ходах. Прям чувствуется бой не на жизнь, а на смерть. Ну, а я дальше запишу числа. Сделаю это для красоты и общей картины. Секреты  и тактику игры в крестики-нолики, ещё в детстве, я сделал сам разгадав.
Промежуточный ОТВЕТ: 4(х/о) и 5(+) на 9 - 3024. 4(х/о и 6+) из 9 - 126
5-ый ход пять - опять? Интересно как сильно взлетит вероятность обоих вариантов? С учётом повторов и без? Здесь прийдется поверить. а лучше как я проверьте практикой. Добавьте своё условие. В стартовую задачу. Например: сколько максимальных выигрышных расположений - всего 8. Вот он разгаданный ещё в детстве секрет. Три строки, три столбца и две диагонали. Всего не так уж много вариантов для запоминания! А теперь о тактике. На пальцах посчитать не сложно сколько выигрышных вариантов проходит через центр? Правильно - 4 штуки. А во всех остальных клеточка возможно, как не крути пустые плюсики, всего 2 выигрышных расположения. самое время ещё раз напомнить ключевое отличие оликов от ноликов. Нам важны пустышки замененные на плюсики. Нужны все варианты. Считаем дальше по той же формуле! 9*8*7*6*5= 15120 и 9*8*7*6*5/5/4/3/2=126
Промежуточный ОТВЕТ: 5(х/о) и 4(+) на 9 - 15120. 4(х/о и 5+) из 9 - 126
6-ый ход Да, в предыдущем/будущем ходе было на один больше/меньше чем  в рассматриваемом. Это, который раз убеждаюсь, и по формулам заметно. Вычитка и перепроверка - святое. И здесь главное не путаться, а то ни чего не проиграешь. За то что я играю после выигрыша мне точно ничего не будет. Это оскорбление чувств верующих подростков и не состоявшихся личностей. Как я мог! и как я продолжаю такой вандализм! А я ведь все 9 ходов давиду до конца. Вобью контрольный гвоздь в крышку гроба любой самонадеянности.  Так теперь шесть цифер перемножить, а потом поделить учитывая умолчаниями здравый пофигизм. Поехали.
9*8*7*6*5*4=60480 и 9*8*7*6*5*4/6/5/4/3/2=84
Промежуточный ОТВЕТ: 6(х/о) и 3(+) на 9 - 60480. 5(х/о и 4+) из 9 - 84
7-ый ход и семь заполненных ячеек, но проще считать пустые.
9*8*7*6*5*4*3=181440 и 9*8*7*6*5*4*3/7/6/5/4/3/2=36
Они главнее, так все и считают. Просто не придают пустоте, рамкам символизм. В моём случаи я пустые клеточки обозначал плюсиками, что бы избавиться от путаницы и связать всё с ни чем. Да, да, да... Я так через ноль связываю плюс бесконечность с минус бесконечность. Это делают в умолчаниях все нормальные математики, физики. А вот лирикам кое-что со школы и в семье запрещают, а повзрослев они сами отказываются всё понимать, они это давно знали, знают и применяют тайком.
Промежуточный ОТВЕТ: 7(х/о) и 2(+) на 9 - 181440. 6(х/о и 3+) из 9 - 36
8-ый ход и две не заполненных позиции. Или одна не заполненная ячейка? Здесь последний рубеж оборы паникёров. Он реально физически его пройти не могут. Я думал что это чистая психосоматика и убеждения, наука,знания может помочь. Да я так думал и верил, но ошибся. У меня у самого здесь паника возникает. Я не знаю как и о чем писать. Вариантов сотня тысяч. А по аналоги формул нужно просто домножить на два, ено это реально страшно. Потому что стартовая идея крестиков-оликов разбивается в дребезги. Бессмысленных вариантов становиться вероятностно больше. И на последних ходах  ориентируюсь на случайность робот сможет выдать даже в одной раскладке два победителя. кстати, пишу с бумажного черновика этот текст и эту вероятность ещё не прикидывал. На 7-ом ходу возможно что случайная расстановка выдаст двух победителей? Запросто! Чисто теоретически видно, что это возможно было уже на шестом ходе, когда у соперников было сделано по три хода. Так диагонали отпадают, тогда сопернику три в ряд одинаковых не достанется... Того 6 вариантов? Нет, 8 вариантов... А... Практика помоги! Ответ 12. Так как надо не забыть вертикаль и горизонталь. Не оставляю загадочности для  9 хода. все секреты. интриги и спойлера выдал. Простите. Дальше будут сухие числа. Общий ответ и выводы. Хотя, нет! Хотя, останется открытым вопрос, как я сам себя удовлетворил и всё-таки сделал простейший генератор случайного хода в крестики-олики.
9*8*7*6*5*4*3*2=362880 и 9*8*7*6*5*4*3*2/8/7/6/5/4/3/2=9
Промежуточный ОТВЕТ: 8(х/о) и 1(+) на 9 - 362880. 7(х/о и 2+) из 9 - 9
9-ый ход последний ход не оставляет пустых ячеек. Ноль не пишем для простоты, единицу тож можно не писать. Последний бой он самый трудный. Поэтому сразу пишу циферки со знаком умножить и поделить с новой строки. Не забыли кто и чем первый из игроков ходил? Робот точно не забудет! Казуальные игры, текстовые программы по сути логические. Они реально ломаются и скажу более эмоционально - умирают, если забывают базовую функцию. Изначально закладывались две переменные, а теперь без третей никуда? Читатели, вы заметили что вероятность по двум переменным оликово-крестовым возрастает, а их производная... Их тайный покровитель плюси повёл ебя странно и сначала рос, а потом уменьшался? Это нормальное распределение вероятности. Даже всего на двух переменных, я молчу про двоичное исчисление и комплексные числа, сработал закон нормального распределения. ещё раз тоже самое повторю! другими словами! Классические условия игры в крестики-нолики смещают сознание(расчёт вероятности) из видимой плоскости в невидимою. То что было предсказуемо и желаемо, куда поставить первый ход - всего 9 вариантов, превращается в никому не нужные последние 9 пустых клеточек. А они по разному и абсолютно так же как в начале и вроде на выйграш не грама не влияют. Любое число таможенное на ноль - это ноль. Остаюсь верным себе и пишу арабские циферки.
9*8*7*6*5*4*3*2*1=362880 и 9*8*7*6*5*4*3*2/9/8/7/6/5/4/3/2=1
Промежуточный ОТВЕТ: 9(х/о) и 0(+) на 9 - 362880. 8(х/о и +) из 9 - 1

Нолики-олики...

ОТВЕТ:
1(х/о) и 8(+) =9__________________0(9+)=0
2(х/о) и 7(+) =72__________1(х/o и 8+) =36
3(х/о) и 6(+) =504_________2(х/o и 7+) =84
4(х/о) и 5(+) =3024_______3(х/о и 6+) =126
5(х/о) и 4(+) =15120______4(х/о и 5+) =126
6(х/о) и 3(+) =60480_______5(х/о и 4+)=84
7(х/о) и 2(+) =181440_____6(х/о и 3+)=36
8(х/о) и 1(+) =362880_____7(х/о и 2+)= 9
9(х/о) =362880____________8(х/о и 1+)=1
Итого: 725760 возможных вариантов полного заполнения поля.

А теперь вернёмся к тому что я делал и не доделал. В начале статьи я сделал командой для робота три строчки по три плюсика. Первых ход быстро получилось перебрать. Ещё забывают учитывать популярность или пропускную способность канала связи. Допустим мне удалось собрать фан-клуб любителей играть в обновлённые крестики-нолики. А что если сразу несколько человек напечатают нулевое поле? Что если сразу несколько человек в одной коллективной беседе начнут игру? переменные.

Первый и второй ход слились в вопросе и ответе. Без всяких комментариев.

Потом, когда я окончательно запутался пытаясь простым переборам учесть все варианты, мне помогал ручка и бумага. Я так не один раз делал во время учёбы в ВУЗе. Сложные расчёты на компьютере переписывал от руки и они становились легкими. По крайней мере с мёртвой точки мысль моя трогалась. Мысли начинали крутиться живее. Так и тут я решил на бумаге прописать все варианты возможные вокруг полной заполненной строчки в три клеточки.

Могу добавить фотографию. получилось красиво. И да главное я это делал что бы определить количество повторов. А оказалось я наложил победный принцип… Победитель же должен быть один? И у него всего 8 вариантов победить. Но я тогда психанул и просто взял часть возможностей. В общем получились восемь квадратиков шесть на шесть.
            
Часть победной выборки.
Квадрат получается если учитывать рад предыдущего хода. А так все случаи вокруг побед будет удобно рассматривать по количеству оставшихся клеток. Возьмём самый сложный вариант 4 и 5 ход. Вроде бы квадратик должен быть по пустым клеточкам, а нет — 6 на 5. Короче, мне надоело… Возится с двойной вероятностью. Их тут две — исчезновение пустых клеточек и порядок заполнения. И уже на аналитику потрачены предыдущие абзацы.

Практика.
Сообществу @o_n_trezv можно написать команду [олик ищи] или [олик.о0о.] и робот выдаст номер столба и строчки в которую нужно поставить символ. Да, он не будет учитывать предыдущие хода, поэтому просто повторите команду. Попрактиковавшись я понял, что шанс выиграть у такого робота минимальный. Чистовое поле оставляем тоже, рисуем не стартовую решеточку, а 9 плюсиков. Плюсики вместо пустых клеток считаем плюсики с низу вверх и слева направо. Лучше показать как выглядит практически.

3.1-3.2.-3.3
2.1-2.2-2.3
1.1-1.2-1.3

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

Вряд ли я когда создам отдельное приложение под маркой и официальным название Крестики-олики или хотя бы сообщество(беседу) в ВК…

Получить хотя бы электронные авторские права с таким разбором классических крестиков-ноликов я обязан.

(с) ИП Руммо В.Н. фотостудия Трезвая Азбука 2020


Рецензии