NS

Ответы в темах

Просмотр 15 сообщений - с 616 по 630 (из 662 всего)
  • Автор
    Сообщения
  • в ответ на: Обсуждение шашечных программ #365887
    NS
    Участник

    Странное мнение. С чего взяли что коммерческие программы покупают из-за силы игры? Коммерческие программы покупают совсем по другим причинам. И это везде, и в Го, и в Реверси, и в Шахматах…
    И везде существуют бесплатные программы играющие сильнее большинства коммерческих…
    Всё дело наверно всё-таки в функциональных возможностях, а не силе игры…
    И делеко не все хотят продавать свои программы.
    50000$ в год с продаж прельстят далеко не каждого. А в шашечном программировании суммы намного меньше.

    NS
    Участник

    ОК. Вечером запущу тест с make/unmake на последнем ходе.
    Либо просто вышлю exe-шник. Надеюсь что генератор будет не особо медленней :)

    NS
    Участник

    Сверим быстродействие… Хотя я особо сильно «вылизывать» генератор не собираюсь. :)
    Насчет Эндшпильных библиотек — я посчитал, пятифигурки вполне влезают в память… Даже без особых ухищрений. Так что с эндшпильной библиотекой проблем скорей всего не будет, постараюсь сформировать сам. (или 5-ти фигурной мало?)
    Вопрос только в дебютной.

    NS
    Участник

    Да это я торможу по-полной. Это же не рекурсивная процедура — получается так же как у меня — шашка один раз снимается с доски, потом ставится…
    Работать надо на работе, а не в чужие исходники пялиться :)

    Только со списком конечно глупость — я так и не нашел старых исходников, поэтому не помню как делал тогда, но сейчас сразу как сел — сразу мысль пришла что нужно просто перевернуть шашку.

    NS
    Участник

    Дата файла 6 мая 2006 г., 11:34:32 (я его скачал пару часов назад, так что должна быть свежая версия)
    perft сделаю как приду домой (если опять жена чего-нибудь не выдумает :) )
    Долго искать в списке — намного проще (быстрее) поменять шашку на свою, а потом обратно.

    inline void TryManCapture(int sq, int dir)
    {
    int m = sq + dir;
    if (!OP_CHECKER(m)) return;
    int to = m + dir;
    if (Board[to]) return;
    int save = Board[sq];
    Board[sq] = 0; // вот ошибка!!
    Move t;
    t.from = sq;
    AddCaptured(m, &t, 0);
    if (to <9> 35 && stm == BLACK) {
    t.promotion = true;
    AddPromoCaptures(to, &t, 1, dir);
    }
    else {
    t.promotion = false;
    AddManCaptures(to, &t, 1, -dir);
    }
    Board[sq] = save;
    }

    Мы же не просто должны запретить взятие этой шашки, а любой повторный проход через это поле!!!
    Так как шашка снята с доски — проход через это поле не будет уже взятием (Для дамки), и программа не понимает «Турецкий удар»

    Добавлено — виноват, это обнуляется поле с которого ход…
    А зачем его обнулять? Для генерации взятий шашки достаточно один раз его обнулить, а потом просто не ставить её на доску. (п после завершения генераций обратно поставить) Тоже быстрее будет.

    NS
    Участник

    Мелкие огрехи в генераторе ходов сильно на силе не скажутся, и ошибка же не в Каллисто, а в открытых исходниках демонстрационного движка «SIDra» :)

    NS
    Участник

    Почти тоже самое, но не совсем :) У меня без ошибки.

    в ответ на: Обсуждение шашечных программ #365877
    NS
    Участник

    Очень интересно, но откуда вы знаете потребности пользователей?
    То есть в шахматах — это пользователям нужно, а в шашках нет?
    Пользователи не проводят турниры и матчи, и не анализируют партии при помощи разных программ/движков? Вы «немного» лукавите. :)
    У Вас нет цели популяризации компютерных шашек? Пишете чисто за деньги?

    И последнее, Вы где нибудь видели нормальную, функционально привлекатульную оболочку для русских шашек?

    Я до вчерашнего дня этой темой не интересовался, но в шахматах — не существует полнофункциональных безглючных бесплатных оболочек… они все платные. Бесплатные либо с урезанными возможностями (WinBoard), либо ошибка на ошибке (Arena). А все коммерческие программы — поддерживают внешние движки через один из Двух стандартных протоколов (Winboard/UCI)

    NS
    Участник

    Нашел на сайте Каллисто исходники SiDra…
    Там ошибки в генераторе ходов!
    Хотя бы — съев шашку, вместо того чтоб поставить препятствие (через это поле больше бить/проходить нельзя) — зачем-то сразу снимается съеденная шашка с доски…
    Практически единственное место в генераторе где возможно сделать ошибку — и она сделана! :)
    Хотя генератор очень похожий на мой. Неужели у всех мысль в одном направлении работает? :)

    в ответ на: Обсуждение шашечных программ #365875
    NS
    Участник

    Ответьте на простой вопрос, что мне даст реализация возможности подключать внешние движки? Не забудьте вспомнить их количество.

    Что это дает пользователю
    -возможность не выходя из оболочки анализировать при помощи разных движков (по отдельности, либо параллельно)
    -возможность проведение матчей и турниров между движками (а это интересно многим) и возможность убедиться в том, что купленная программа весьма сильна
    Может сторонних (бесплатных) движков пока и не много, но они есть, и их становится всё больше и больше, и открытые протоколы в коммерческих программах подстегнут этот процесс.
    Многие шахматные программисты с удовольствием бы написали что-нибудь еще (например русские шашки :) ), но отсутствие возможности проведения матчей и турниров с сильными соперниками (в автоматическом режиме) отпугивает их.

    А разработчику — если из шести коммерческих программ пять будет поддерживать протоколы обмена, а одна нет — то она продаваться не будет. И дополнительные возможности — это конкурентное преимущество. И сильной программе нечего бояться, и вполне возможно потратить несколько часов/десятков часов на добавление поддержки открытых протоколов (если для встроенного движка используется непубличный протокол, либо он (движок) просто «вшит» в программу)

    NS
    Участник

    Я, чтоб не плодить протоколов — сразу сделаю её под протокол Каллисто. Ты ведь не против? :)

    в ответ на: 2-ой Кубок сайта среди программ. #344851
    NS
    Участник

    А финальный матч, для определения чемпиона — опять будет из двух партий?
    Может проще монетку подбросить? И так определить сильнешего. :)

    NS
    Участник

    А неоптимального много — навсикдку — после превращения в дамку можно продлжить взятие только в одном направлении (если угол — тогда вообще невозможно) — а у меня вызывается процедура взятий дамки по четырем (ошибки не будет, остальные три направления заблокированы), в структуре хода хранятся отдельно координаты откуда ход и куда — нужно конечно хранить в одном элементе (просто сдвинуть «откуда») и т.д.
    Направление взятия можно убрать из параметра (Для простой, для дамки нужно оставить)
    Зачем-то при каждом взятии в структуру списка ходов пишу что это взятия (а не простые ходы), Хотя можно это сделать в основной процедуре генерации, проверив что вернула ненулевое количество взятий.
    Можно еще чего-нибудь придумать…
    //
    А есть данные perft-а, с указанием потраченного времени, и компа на котором производилось тестирование?

    NS
    Участник

    // поменям шашку противникак на нашу, чтоб не взять повторно.

    прикольно

    if (kuda and 136)=0 then — так некрасиво (магические числа), смысл не очевиден такой конструкции

    А так вроде нормально. Что ты видишь здесь неоптимального?

    Как с генератором? Успел за вечер?

    Так этож 0x88 :) 136! :)
    За вечер не получилось — смог начать писать только в полночь…
    К Двум часам ночи дописал, проверил на нескольких тестовых позиций.
    Дальше писать уже не мог — хотелось спать :)
    Сейчас нужно бежать на работу — нужно немного подправить генератор взятий дамки (работает вроде правильно (правда не уверен), но совсем кривой) и у меня вопрос по правилам — меня переклинило — шашка которой совершаем взятие тоже снимается только по окончании взятия? (может ли шашка в процессе взятия вернутся на изначальное место, либо пройти через него?)
    Я перед генерацией взятий снимаю шашку (которая совершает взятия), а после ставлю обратно. Это правильно?

    в ответ на: Обсуждение шашечных программ #365871
    NS
    Участник

    Я бы Вам советовал, в качестве примера поясняющего некорректность вашего аргумента, посмотреть на ситуацию с чекерсными программами. Проводится досточно много официальных турниров. Резульаты таковы, что каждая серьезная программа выигрыла, по крайне мере один турнир. Причем (но это уже маркетинг) именно этот турнир упоминается на сайте данной программы.
    Делать, на основании одного турнира (извините letas тут вообще не «катит») выводы, что одна программа НЕСРАВНЕННО хуже другой это полный бред. А когда на вопрос «чем», отвечают «ты не в курсе, что это программы совершенно разного уровня» это только подтверждает вывод предыдущего предложения.

    У меня не так плохо с теорией вероятности и мат. статистикой, так что оценить результаты одного турнира (включая последний чемпионат по шахматам) я в состоянии.

    Поэтому и говорю о поддержке коммерческими программами открытых протоколов — это даст возможность объективно оценить силу.

    Кстати, ситуация когда коммерческие программы играли слабее бесплатных, была в свое время и в шахматах… Да и сейчас несколько бесплатных программ (некоторые с открытыми исходниками!!!) весьма сильны :)

Просмотр 15 сообщений - с 616 по 630 (из 662 всего)