8

ХО челлендж!

Дорогие пикабушники!
На днях мне пришла в голову идея написать крестики-нолики. Точнее в голову мне пришла идея о простоте и безотказности алгоритма. Реализовать идею оказалось несложно, около 3-х часов заняло у меня написание программки. При всей простоте программы, она оказалась совершенно непобедима! Лишь спустя 2 дня я смог найти комбинацию ходов для достижения победы и сразу же решил бросить вам, товарищи, вызов! А вам слабо победить мой алгоритм? Ссылка на скачивание игры: https://yadi.sk/d/SRnFC-xEhLb2H

P.S. Знаю что опасно скачивать в интернете приложения, но тут не про вирусы, провалиться мне на месте. Все чисто, гарантирую.
Вы смотрите срез комментариев. Показать все
3
Автор поста оценил этот комментарий

Если начинаешь первым, то победить легко, а если первой начинает программа, то если не ошибаться - всегда ничья. Обычно, когда играют два человека на поле 3x3, то игра сводится к тому, что почти всегда ничья, а победа будет только если один из них ошибется. И если нормальный алгоритм, то компьютер не будет ошибаться, а человек будет. Т.е. на поле 3x3, при игре компьютера против человека, всегда будет или ничья или победа компьютера. Повторюсь, это если нормальный алгоритм. Можешь скинуть свой алгоритм (желательно в виде блок схем) ? Давай доработаем его до непобедимого :)

раскрыть ветку (5)
Автор поста оценил этот комментарий

Ну так весь алгоритм сводится к тому что идет выставление приоритетов для постановки нолика. Очередность приоритетов от меньшего к большему: один рядом стоящий нолик, два в линию стоящих нолика, два в линию стоящих икса. Вот отсюда одна из особенностей, если у него есть возможность поставить третий нолик в линию, но при этом он видит два крестика, то он не станет побеждать, а заблокирует 2 крестика. Могу в виде блок схемы, могу в виде исходников. На блок схему уйдет какое-то время.

раскрыть ветку (4)
0
Автор поста оценил этот комментарий
- - -

- - -   и так, допустим, что это наше поле 3x3

- - - 


Если мы начинаем ходить первыми и ходим вот так

- - -                                                         - - -

- х -  то компьютер нам ответит вот так    - х -

- - -                                                         - - 0

                                   х - -

После этого мы ходим  - х - , 

                                   - - 0

                                                                                    х - -

а компьютер по твоему алгоритму всегда ответит нам    - х -

                                                                                    - 0 0

                                                                              х - -

после чего мы закрываем его и ставим ему вилку     - х - .

                                                                              х 0 0

Получается, что он всегда проигрывает при таком раскладе.

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

Если в твоем алгоритме, кроме этого случая больше дырок нету, то можно просто добавить исключение:


х - -

- х -  если у нас на поле такая ситуация, то пусть он ходит не по алгоритму, а

- - 0   как-нибудь по-другому.

раскрыть ветку (3)
0
Автор поста оценил этот комментарий

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


На данный момент есть 2 варианта победы алгоритма. Можно, конечно, как частные случаи внести обходы моментов поражения. Но это же уже не алгоритм. А как с помощью алгоритма заставить его хитрить я не могу придумать.


Выражаясь словами, когда есть подвох от игрока, алгоритм должен бросать свои 2 основных принципа и ходить нестандартно. Хотя нет, это только частные случаи, это исключения. Не буду убирать, любой робот должен быть победимым. Иначе они поработят нашу планету. 

раскрыть ветку (2)
0
Автор поста оценил этот комментарий
Согласен :) Кстати, можно добавить проверку, которая будет отслеживать возможность построения вилки при следующем ходе человека и если такая возможность есть, то закрывать ее. Удачи тебе :)
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Спасибо! Если будет настроение, внедрю.

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества