Comments 6
Крестики-нолики это решённая игра :(
Мы в ВУЗе решали так: после каждого хода игрока строиш дерево со всеми вариантами ответного хода и для каждого варианта ещё поддеревья со всеми вариантами следующего хода игрока и выбирали наиболее выгодный. Вложенность деревьев можно было менять, тем самым настраивая уровень "тупости" ИИ (на сколько ходов вперёд ИИ может подсматривать). В крестиках-ноликах комбинаций не так уж и много, так что не сложно сгенерировать сразу все возможные ходы кожаного и ответные, которые приведут к победе либо к патовой ситуации.
Интересно! Это первое, что я рассматривал как классический вариант решения, немного громоздко, но для этой игры подойдет. Потом прочитал статью о современных шахматных движках и алгоритме Монте-Карло, там анализируется доска в текущий момент и лучший следующий ход согласно данным из нейросети предыдущих анализах. Потому и подумал, а что если и мне попробовать такой же принцип. Вот во второй части статьи напишу.
Кажется, что все ваши функции можно уложить в класс. Почитайте об ООП. Для ML - один фиг, но для читаемости и дальнейшей разработки может быть полезно (напр, что, если придется играть в крестики-нолики без границ? ваши списки "лягут" (( )
Крестики-Нолики (Tic Tac Toe) с компьютером на Python. Мой первый шаг к Machine Learning. Часть 1