30.05.2006, 07:45 | #1 |
Модератор
|
Алгоритм игры рендзю
Как мне известно, многие из форумчан являются студентами матфака, хотел попросить у вас помощи(да и у всех кто занимается програмированием).Вообщем по предмету комбинаторные алгоритмы мне задали написать игру рендзю : крестики - нолики на доске произвольного размера, пять в ряд.Большую часть программы написал(реализовал алгоритм на основе оценочной функции), проблема появилась в самом конце : как проверять на выигрышь одного из игроков?В обычных к-н это легко, простым перебором, благо поле не большое, а как быть с полем большого размера?
Надеюсь на помощь, в пятницу надо как то сдавать программу. З.Ы. А алгоритм туповатый какой то, ходит наугад , ну слава богу хоть работает . |
30.05.2006, 13:56 | #4 |
Пользователь
|
Хорошо
Просто при очередном ходе проверять не входит ли он в пятерку подряд поставленных символов, содержащих новый элемент. Оценка же у тебя пересчитывает не все поле а только зону нового символа, надеюсь? Расскажи какой алгоритм использовал можно в личку если не лень а я посмотрю что можно сделать
__________________
Первым делом мы испортим самолеты! [7th legion] Последний раз редактировалось Alice Mizer; 30.05.2006 в 19:19. |
30.05.2006, 18:34 | #6 | ||||||||||||
Firefox User
|
__________________
Эволюция, Феликс! До Schweppes надо дорасти!(с) Гепард из рекламы =) Подневольный солдат.||| Последний раз редактировалось Кролль; 30.05.2006 в 18:34. |
||||||||||||
30.05.2006, 20:18 | #9 | ||||||||||||
Местный
|
__________________
заходи на аниме форум! |
||||||||||||
30.05.2006, 21:45 | #10 | ||||||||||||
Модератор
|
"Итак сyть оценочной фyнкции - оценить насколько выгодно нам поставить в даннyю точкy свою фишкy. Очевидно нам бывает выгодно это сделать либо для создания своего длинного pяда, либо для блокиpования длинного pяда пpотивника. Также следyет yчесть, что бывает выгоднее пpодолжить/заблокиpовать большое количество не очень длинных pядов, вместо одного длинного. Фишка, поставленная в даннyю пyстyю клеткy может одновpеменно yчаствовать в пpодолжении до 8 pядов (2 гоpизонтальных, 2 веpтикальных и 4 диагональных). Считаем, что мы поставили фишкy в данное место. Тогда можно сосчитать длинны каждого из наших pядов, включающих этy фишкy. Введем коэф. M = sum(Ki). Где Ki - коэф. важности i-го pяда. Т.к. напpавление pяда нам безpазлично, то Ki зависит только от длинны pяда. Для пpостоты можно взять Ki=3*длинна pяда. Полyченный коэф. М - оценка той выгоды, котоpyю мы полyчим, поставив в даннyю клеткy свою фишкy. Далее пpедположим, что мы не поставили в даннyю клеткy фишкy, и соответственно это сделал пpотивник. Аналогично считаем коэф. N - оценка выгоды, полyчаемой пpотивником. Сложив М и N с некими оценочными коэф. полyчим окончательнyю оценкy: F = M + Q*N. Чисел я не помню, поэтомy с вычислением Ki стоит поигpаться, возможно его стоит заменить степенной фyнкцием (но с небольшим основанием!). Коэф. Q - показатель агpессивности алгоpитма, если он больше 1 - алгоpитм сидит в глyхой обоpоне; меньше 1 - алгоpитм пытается захватить инициативy. По моемy мнению, Q следyет бpать меньше 1. Из фич, yсложняющих жизнь пpотивникy, можно добавить фактоp слyчайности, для ваpиантов хода с pавными, или близкими, оценочными фyнкциями. Теоpетически пpотив такого алгоpитма может сyществовать выигpышная стpатегия, но я ее не нашел." (ц)Алголист Оценка высчитывается для каждой клетки, далее ход делается в самую "важную" клетку. С проверкой на победу мне уже подсказали, оказалось это самое легкое , даж не знаю как сам не додумался(наверно сказывается постоянное невысыпание - вчера сутки не спал ).Надо просто рассмотреть каждую клетку с поставленным крестиком/ноликом на наличие ряда из 5 таких фишек.Т.е. рассмотреть надо 4 стороны для каждой клетки в которую сделан ход. Тему можно считать закрытой . |
||||||||||||
31.05.2006, 00:09 | #12 |
Модератор
|
Ага, ужасный то ужасный, но времени нет думать над чем то более лучшим.В пятницу последний срок сдачи.Ходы он делает наугад , так что там выносить то нечего, хотя если его улучшить(как написано выше), то возможно получится что то стоящее.
З.Ы. to Alice Mizer Из профиля : Чем занимаетесь: Работа - дизайнер Програмированием тож увлекаешься ? Последний раз редактировалось N0rd; 31.05.2006 в 00:09. |
31.05.2006, 01:06 | #13 |
Пользователь
|
Дизайнер не цветочки рисовать, а делать большие проекты, с вычислениями. Там в ход всякие встроенные псевдоязыки идут. Да и само программирование пробовала. Я увлекаюсь разного рода играми, ведь компьютер - мой лучший друг. Не помню как называется игра вроде Колобот. Так там на чем-то похожем на Си нужно програмировать юнитов! Научилась! Но я сам Си знаю оч плохо, учили только Паскалю (ну то есть дельфи, он хоть под окошками работает) и Basic (не смейся, с него многи начинали наверно).
Ну так вот, увлекаюсь разного рода играми. В крестики нолики на компьютере столько играла, что знаю много хороших ходов.. они просто не поддаются таким алгоритмам, там придется рассматривать кучи специальных вариантов и еще много много всего... Из того что связано с компом пожалуй совсем не шарю в интернете и ХТМЛ с Явой=( Хочу Яве научиться=)))
__________________
Первым делом мы испортим самолеты! [7th legion] |
31.05.2006, 01:18 | #14 | ||||||||||||
Местный
[Epic] |
__________________
N0rd в стиме |
||||||||||||
31.05.2006, 01:19 | #15 |
Местный
|
Alice Mizer, сложилось ощущение что понятия Java и JavaScript для тебя одно и то же. Хочу предостеречь от этого жуткого заблуждения. Java выучить, зная C++ и ООП - дело пары дней. Реально любой язык учится за пару недель.
HTML - Это не программирование, а разметка текста и ни чего интересного в этом нет. Жуткое занятие, надоедает быстро. Можно кое-что на JavaScript/VBScript запрограммить для красивости или интерактивности. Последнее время распространение активно получает Ajax и подобные технологии. Они активно используют динамическую подгрузку данных с помощью JavaScript. Так что задача разобраться в интеренете, хтмл и ява очень многосторонняя и требет уточнения. |
31.05.2006, 01:52 | #18 |
Пользователь
|
В смысле я плохо шарю в том что связано с нетом, с хтмл, и с Явой.
Victors Яве я хотела бы научиться именно языку, а не Яваскрипт. Я отлично знаю что такое ХТМЛ но не знаю почти тегов. Тот же ББкод и то больше мне известен - на форумах он часто как более простая аналогия ХТМЛ для постов... Ну а в интернете - вообще не понимаю как все устроено, и как передается =)) Вооот.
__________________
Первым делом мы испортим самолеты! [7th legion] |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
S.T.A.L.K.E.R.: Shadow of Chernobyl | a2z | Action | 1291 | 09.10.2011 20:00 |
Mirror's Edge | d1sco | Action | 317 | 13.02.2010 19:17 |
COD2: Обновления, моды, патчи, полезные программы | Vadim | Call Of Duty 2 | 293 | 04.07.2009 15:11 |
ЧМ по хоккею 2009 | BulkiN | Спорт | 314 | 14.05.2009 19:42 |
Xenus 2: Белое золото | AcE | Action | 56 | 15.11.2008 14:04 |