Re: Алгоритмы и программы | |
---|---|
leonid Сообщений: 3204 Откуда: Рига Дата регистрации: 03.02.2006 |
Вот еще один вариант, усовершенствованный. Позволяет брать ходы назад при помощи BackSpace
|
Re: Алгоритмы и программы | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Hi All!
Пока вышло нечто вроде этого - на квадратных полях до 5*5 дело обычно завершается ничьёй (в т.ч. и при "симметричной" стратегии) - на полях большего размера найти ничью увы не удаётся - причем с ростом размера растёт и число пустых полей (т.е. проигрыш наступает раньше). На поле 6*6 не хватает всего 2-х точек - т.е. одного хода до ничьи P.S. Код под VFP9. И естественно не оптимизирован никак и является избыточным - по сути наброски для одной из возможных стратегий...
------------------ WBR, Igor |
Re: Алгоритмы и программы | |
---|---|
leonid Сообщений: 3204 Откуда: Рига Дата регистрации: 03.02.2006 |
Hi, Igor!
Цитата:Я тоже такую позицию нашел. А вот вничью сыграть не получится. Я перебрал все позиции - нет ничейной. Так что на четных досках, начиная с 6х6 начинающий проигрывает. Осталось разобраться с нечетными. P.S. Код посмотрю дома, здесь девятки нет. |
Re: Алгоритмы и программы | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Hi leonid!
Напомни плиз как считается число позиций в таком случае (не учитывая зеркальные - т.е. просто размещения на N полях N/2 однородных объектов). Для случая нечётных досок как я понимаю ситуация во многом схожая - если не ходить сразу в центр, то всё равно проигрываешь из-за симметричной стратегии - если походить - то по идее противник специальными "симметричными" ходами может привести к проигрышу... И ещё - мне кажется что основная сложность (для человека) в этой игре - это просто найти квадрат - т.е. если играть на бумажке, то очень сложно определять проиграл ты уже или нет ------------------ WBR, Igor |
Re: Алгоритмы и программы | |
---|---|
leonid Сообщений: 3204 Откуда: Рига Дата регистрации: 03.02.2006 |
Hi Igor!
Если я правильно помню, то это "це из эн по эн пополам", т.е. n!/((n/2)!*(n/2)!). Но это по памяти, может и ошибаюсь. Но я перебирал только позиции, которые встречаются при симметричной стратегии. Их поменьше, всего 2^(n/2). Перебрались где-то за пять минут. Цитата:Все равно проигрываешь, если вообще не ходить в центр. В любой момент ход в центр сбивает симметричную стратегию, а вот "специальные "симметричные"" ходы - это надо подумать. Сразу не очень понятно, что это за ходы. Цитата:Вот это точно. Я попробовал, играешь, играешь, а потом выясняется, что проиграл уже пять ходов назад, или наоборот, выиграл. Так что без компьютера здесь делать нечего. Я поигрался с твоим кодом вчера вечером, интересные вещи получаются. Если задокументировать в самом начале программы строку
|
Re: Алгоритмы и программы | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Hi leonid!
Цитата:- это по сути аналогично стратегии на чётной доске - т.е. если мы проигрываем ДО наступления последнего хода - то мы проигрываем БЕЗ этого хода А вот "специальная стратегия" при первом ходе в центр доски - это должно быть просто - попытаться построить квадрат с вершиной в центре - поскольку в центре "не наша" точка - мы не проигрываем, а вот противник как раз и проигрывает Вообще центральная точка - это точка в которой сходятся вершины наибольшего числа квадратов. Для чётных досок кстати всё так же - чем ближе к центру там больше квадратов "закрывает" точка. Субъективно конечно кажется что это плохой ход, но реально конечно может оказаться что это не так - если у меня в резерве есть "несмертельный" ход, а у противника - нет, то без разницы сколько квадратов я "почти закрыл" Цитата:Для этого необходимо первыми тремя ходами (инициатива то первоначально у первого игрока) сделать 3D квадрат с пустой вершиной в центре (в силу симметрии у противника будет такой же 3D квадрат и он не сможет сделать ход в центр). Насчёт того как манипулировать стратегиями ты точно подметил Однако проверяя "руками" мне показалось, что стратегия "насоли врагу" ведёт себя не лучше чем "обезопась себя"... А в случае симметричной стратегии разница вообще практически незаметна... Я думал насчёт того чтобы отделить реализацию стратегии от основного блока игры - это позволит упростить "соревнование стратегий". Но пока не дошли руки... Для начала стоит вынести настройки (в т.ч. порядок ORDER BY, а в случае "взвешивания" - коэффициенты) и продумать интерфейс взаимодействия стретегии (игрока) с движком. Вспомогательные функции можно оставить и в движке. P.S. Закомментированный блок соответствует стратегии, когда отделяются только "смертельные" ходы, а все прочие участвуют в оценке - на начальных стадиях это IMHO оказывает особенно большое влияние... P.P.S. А насчёт игры с человеком - тут всё упирается именно в возможности человека "найти квадраты" - конечно они заведомо меньше чем у компьютера (в среднем - ведь наверняка есть уникумы просто "видящие" позицию - типа тех кто в уме извлекает корни разных степеней из 10-значных цифр ) ------------------ WBR, Igor |
Re: Алгоритмы и программы | |
---|---|
leonid Сообщений: 3204 Откуда: Рига Дата регистрации: 03.02.2006 |
Что-то в последнее время все не было времени заняться этим у компьютера, только иногда (в транспорте) получалось в голове подумать. Так вот интересно получается. Если задачу чуть-чуть изменить, и вместо "любых" квадратов рассматривать только "правильные", т.е. такие, у которых стороны параллельны сторонам доски, то на достаточно большой доске ничьей все-равно быть не может. В отличие от "любых" квадратов, перебором этот результат не получишь, а доказательство его совершенно нетривиально (по крайней мере я не знаю достаточно простого). Размер минимальной доски, на которой ничьей быть не может я тоже не знаю, но если оценить на глазок, то должно быть где-то 12х12 - 16х16. Перебором - это слишком много, разве что только если очень сильно пооптимизировать.
|
Re: Алгоритмы и программы | |
---|---|
leonid Сообщений: 3204 Откуда: Рига Дата регистрации: 03.02.2006 |
А вот кто не хочет попробовать поиграть с компьютером? Вообще выиграть у компьютера - задача достаточно безнадежная. Единственный вариант - на четной доске ходить вторым и выбрать симметричную стратегию. Ну или очень-очень долго тренироваться, но не думаю, что у кого-нибудь хватит терпения и времени. В алгоритме реализована стратегия, предложенная Игорем (ну или очень похожая на нее).
Ходить с помощью DblClick. Программа позволяет брать ходы обратно с помощью BackSpace. Без этого - ну никак.
P.S. 2Igor Hi, Igor! Я выложил новую версию DeFox в разделе Обсуждаем проекты. Там улучшена защита, и в частности вставлено несколько трюков AntiOlly. Сдается мне, что сейчас в нее залезть значительно труднее. Если интересно, посмотри. Вот ссылка forum.foxclub.ru Исправлено 1 раз(а). Последнее : leonid, 01.08.07 09:58 |
Re: Алгоритмы и программы | |
---|---|
mayil Автор Сообщений: 277 Откуда: Гянджа, Азербайд Дата регистрации: 20.06.2006 |
Привет всем & Leonid & Igor!
Я продолжаю построение алгоритма игры «Квадратобоязнь»! Вы провели серьезное исследование сей игры, и сделали важные выводы. Добро! Однако ж, 99 % партий, например, в шашках также заканчиваются вничью, тем не менее, в шашки еще играют. И даже проводятся первенства! То же и в шахматах! Теоретически любая шахматная партия ничейная при правильной игре! Так найти эту правильную игру непросто! Так что играть в шахматы также еще будут! То же и в Квадратобоязни (КВБ - в дальнейшем). 1) Во-первых, применять симметричную стратегию и выигрывать у компа не доставляет мне никакого удовольствия! И не делает мне чести! Мы будем сражаться с ним по-честному! 2) Во-вторых, алгоритм должен быть универсальным - для досок различных размеров. Я беру от 3 до 9 . Этого достаточно. Уже на доске 7х7 игра достаточно сложная - настолько, что когда я просматриваю варианты, у меня начинает болеть голова! 3) Доски буду рассматривать в общем случае прямоугольные. 4) Далее, надо подобрать два взаимно простых натуральных числа, и обозначить ими со-стояния полей, да так, чтобы было взаимно-однозначное соответствие между ситуацией в вершинах квадратов и суммой состояний полей. Короче, недолго думая принимаем: если поле свободно - его состояние равно 0, если поле занято белой фишкой – фишкой компьютера состояние поля равно 1, если же поле занято черной фишкой человека – пусть его состояние равно 5-ти. Теперь проверим однозначность: Состояния полей квадрата Состояние квадрата(сумма состояний вершин его) 0 0 0 0 0 все вершины свободны 0 0 0 1 1 одна вершина занята фишкой компа 0 0 1 1 2 две вершины заняты фишкой компа 0 1 1 1 3 три вершины заняты фишкой компа 0 0 0 5 5 одна вершина занята фишкой человека 0 0 5 5 10 две вершины заняты фишкой человека 0 5 5 5 15 три вершины заняты фишкой человека 0 0 1 5 6 смешанные состояния - безопасные для 0 1 1 5 7 обоих противников 0 1 5 5 11 1 1 1 5 8 закрытые состояния, они в дальнейшем 1 1 5 5 12 не играют никакой роли и исключаются 1 5 5 5 16 из рассмотрения 1 1 1 1 4 проигрыш компа 5 5 5 5 20 проигрыш человека Продолжение следует…………. |
Re: Алгоритмы и программы | |
---|---|
mayil Автор Сообщений: 277 Откуда: Гянджа, Азербайд Дата регистрации: 20.06.2006 |
[attachment 5251 KVADRO.rar]
Привет всем! Дал бог терпения закончить программу. Посмотрите ее - Игра КВАДРАТОБОЯЗНЬ. Bindevent новая для меня штука. В хелпе трудно разобраться - перевод вроде по-русски, да трудно понять! И потому мне пришлось заранее выставить 81 имэйдж и держать их невидимыми. А при запуске показывать только требуемое для размера игровой доски количество. Был бы один примерчик по Bindevent-у для анализа! Было бы хорошо! Или , как говорят форумчане "будет счастье". Папку KVADRO запишите на диск с:. Замечания и пожелания принимаются без ограничений! Пока. |
Re: Алгоритмы и программы | |
---|---|
leonid Сообщений: 3204 Откуда: Рига Дата регистрации: 03.02.2006 |
А играет она не шибко сильно
[attachment 5277 game.jpg] Это, естественно, не я ее обыграл, а алгоритм Игоря. |
Re: Алгоритмы и программы | |
---|---|
mayil Автор Сообщений: 277 Откуда: Гянджа, Азербайд Дата регистрации: 20.06.2006 |
Здравствуй , Leonid!
Да я и сам выигрывал его , правда на доске 5х5. 1) Уровень мастерства проги наверное можно повысить, если расположить строки таблицы DANGER как-то по другому. Но явных критериев нет- чисто эмпирически. 2) Я в дальнейшем намеревался рассмотреть оценочную функцию и ее значения для каждого поля держать в колонке funk таблицы spisok, даже ввел в рассмотрение веса квадратов (табл. katalog, колонка ves ). Но опять же эти веса придется выбирать эмпирически, чисто опытным путем. Ну например, что "вреднее": три квадрата типа 0,1,5,5 или два квадрата 0,1,1,5? Веса в графе ves пока ориентировочные - сырые, это только прикид. 3) щелкнув на поле доски правую кнопку мыши можно увидеть все семейство квадратов данного поля. Чем темнее появившиеся границы, тем более "опасен" сей квадрат. Коли такое разноцветье раздражает ( а меня уде да!) , то замените в графе Couleur все RGB троицы на нули! Пока. |
Re: Алгоритмы и программы | |
---|---|
mayil Автор Сообщений: 277 Откуда: Гянджа, Азербайд Дата регистрации: 20.06.2006 |
Задача о шарах. Задайте формулой число шаров, которые можно выложить в виде: и правильного треугольника и квадрата (см. рисунок). Составьте программу и найдите минимальное количество шаров, удовлетворяющее условию задачи (не считая, конечно же, тривиальную единицу).
[attachment 6822 shariki.JPG] |
Re: Алгоритмы и программы | |
---|---|
leonid Сообщений: 3204 Откуда: Рига Дата регистрации: 03.02.2006 |
Вот программу не надо составлять. Не имеет эта задача решения.
|
Re: Алгоритмы и программы | |
---|---|
Владимир Максимов Сообщений: 14100 Откуда: Москва Дата регистрации: 02.09.2000 |
Программу, конечно, не надо. Достаточно формулы. Количество шаров в треугольнике - это арифметическая прогрессия = (n+1)*n/2 Количество шаров в квадрате - это квадрат = n**2 Здесь n - это количество шаров в одной стороне треугольника или квадрата. Чтобы количество шаров было однаково надо приравнять эти два значения n**2 = (n+1)*n/2 После решения этого уравнения имеем n = 1 Т.е. кроме единицы других вариантов нет. |
Re: Алгоритмы и программы | |
---|---|
mayil Автор Сообщений: 277 Откуда: Гянджа, Азербайд Дата регистрации: 20.06.2006 |
Доброе утро. Как раз программа с простым перебором вывалит вам бесконечное множество решений.
|
Re: Алгоритмы и программы | |
---|---|
mayil Автор Сообщений: 277 Откуда: Гянджа, Азербайд Дата регистрации: 20.06.2006 |
Внимание!Стороны треугольника и квадрата разной длины. Их равенство не требовалось в условии задачи.
|
Re: Алгоритмы и программы | |
---|---|
Zakharov_slava Сообщений: 2022 Откуда: Алматы Дата регистрации: 14.10.2005 |
А мне кажется или на картинке в треугольнике и в квадрате разное число шаров?
|
Re: Алгоритмы и программы | |
---|---|
leonid Сообщений: 3204 Откуда: Рига Дата регистрации: 03.02.2006 |
m^2 = (n+1)*n/2 не имеет решения ни при каких целых m и n больших единицы, а если программа вываливает много решений, значит она неправильно написана. Проверьте на калькуляторе. |
Re: Алгоритмы и программы | |
---|---|
Goodwin Сообщений: 3539 Откуда: Омск Дата регистрации: 03.05.2006 |
6, 35, 204...
|
© 2000-2024 Fox Club  |