Автор |
Сообщение |
Kallisto |
|
Тема сообщения:
Отправлено: Авг 24, 2006 - 02:02 PM
|
|
Зарегистрирован: Авг 18, 2003
Сообщений: 747
|
|
Чтобы прога нормально играла достаточно 4-х фигурной ЭБ.
Дебютную библиотеку обсуждали на гостевой Креста. |
|
|
|
|
|
NS |
|
Тема сообщения:
Отправлено: Авг 24, 2006 - 02:02 PM
|
|
Зарегистрирован: Авг 22, 2006
Сообщений: 671
Откуда : Санкт-Петербург
|
|
ОК. Вечером запущу тест с make/unmake на последнем ходе.
Либо просто вышлю exe-шник. Надеюсь что генератор будет не особо медленней |
|
|
|
|
|
Kallisto |
|
Тема сообщения:
Отправлено: Авг 24, 2006 - 01:59 PM
|
|
Зарегистрирован: Авг 18, 2003
Сообщений: 747
|
|
В тех таблицах, что я приводил Каллисто при подсчете количества позиций не выполнял ходов (make/unmake) на посленем уровне, т.к. это не нужно для подсчета.
Но для проверки скорости ядра все же лучше вместе с ними:
Каллисто:
Код:
1 - 7 time: 0 speed: Infinity
2 - 49 time: 0 speed: Infinity
3 - 302 time: 0 speed: Infinity
4 - 1469 time: 0 speed: Infinity
5 - 7482 time: 0 speed: Infinity
6 - 37986 time: 0 speed: Infinity
7 - 190146 time: 15 speed: 12676 Kn / sec
8 - 929905 time: 110 speed: 8454 Kn / sec
9 - 4570667 time: 484 speed: 9444 Kn / sec
10 - 22450628 time: 2438 speed: 9209 Kn / sec
11 - 110961169 time: 12062 speed: 9199 Kn / sec
12 - 545059387 time: 59047 speed: 9231 Kn / sec
СиДра:
Код:
1 - 7 - time: 0 speed: Infinity
2 - 49 - time: 0 speed: Infinity
3 - 302 - time: 0 speed: Infinity
4 - 1469 - time: 0 speed: Infinity
5 - 7482 - time: 0 speed: Infinity
6 - 37986 - time: 0 speed: Infinity
7 - 190146 - time: 32 speed: 5942 Kn / sec
8 - 929905 - time: 187 speed: 4973 Kn / sec
9 - 4570667 - time: 875 speed: 5224 Kn / sec
10 - 22450628 - time: 4391 speed: 5113 Kn / sec
11 - 110961169 - time: 21468 speed: 5169 Kn / sec
12 - 545059387 - time: 105219 speed: 5180 Kn / sec
|
|
|
|
|
|
NS |
|
Тема сообщения:
Отправлено: Авг 24, 2006 - 01:00 PM
|
|
Зарегистрирован: Авг 22, 2006
Сообщений: 671
Откуда : Санкт-Петербург
|
|
Сверим быстродействие... Хотя я особо сильно "вылизывать" генератор не собираюсь.
Насчет Эндшпильных библиотек - я посчитал, пятифигурки вполне влезают в память... Даже без особых ухищрений. Так что с эндшпильной библиотекой проблем скорей всего не будет, постараюсь сформировать сам. (или 5-ти фигурной мало?)
Вопрос только в дебютной. |
|
|
|
|
|
Kallisto |
|
Тема сообщения:
Отправлено: Авг 24, 2006 - 12:39 PM
|
|
Зарегистрирован: Авг 18, 2003
Сообщений: 747
|
|
По скорости будет то же самое, т.к. ходов сбивающих более 2 шашек очень мало и несколько лишних проверок для них практически никак не скажутся. |
|
|
|
|
|
NS |
|
Тема сообщения:
Отправлено: Авг 24, 2006 - 12:03 PM
|
|
Зарегистрирован: Авг 22, 2006
Сообщений: 671
Откуда : Санкт-Петербург
|
|
Да это я торможу по-полной. Это же не рекурсивная процедура - получается так же как у меня - шашка один раз снимается с доски, потом ставится...
Работать надо на работе, а не в чужие исходники пялиться
Только со списком конечно глупость - я так и не нашел старых исходников, поэтому не помню как делал тогда, но сейчас сразу как сел - сразу мысль пришла что нужно просто перевернуть шашку. |
|
|
|
|
|
Kallisto |
|
Тема сообщения:
Отправлено: Авг 24, 2006 - 12:01 PM
|
|
Зарегистрирован: Авг 18, 2003
Сообщений: 747
|
|
NS писал(а):
Добавлено - виноват, это обнуляется поле с которого ход...
А зачем его обнулять? Для генерации взятий шашки достаточно один раз его обнулить, а потом просто не ставить её на доску. (п после завершения генераций обратно поставить) Тоже быстрее будет.
Так ведь это обнуление именно это и делает (только один раз). |
|
|
|
|
|
Kallisto |
|
Тема сообщения:
Отправлено: Авг 24, 2006 - 11:59 AM
|
|
Зарегистрирован: Авг 18, 2003
Сообщений: 747
|
|
Блин, совсем запутал ты меня
Ведь все правильно!!! |
|
|
|
|
|
Kallisto |
|
Тема сообщения:
Отправлено: Авг 24, 2006 - 11:57 AM
|
|
Зарегистрирован: Авг 18, 2003
Сообщений: 747
|
|
Да тупо как-то получилось. Добавил проверку по спискам и забыл убрать удаление с доски. Видимо просто запутался при отладке.
Списков достаточно, чтобы все было правильно (так в Каллисто).
До переворачивания просто не догадался |
|
|
|
|
|
NS |
|
Тема сообщения:
Отправлено: Авг 24, 2006 - 11:52 AM
|
|
Зарегистрирован: Авг 22, 2006
Сообщений: 671
Откуда : Санкт-Петербург
|
|
Дата файла 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;
}
Мы же не просто должны запретить взятие этой шашки, а любой повторный проход через это поле!!!
Так как шашка снята с доски - проход через это поле не будет уже взятием (Для дамки), и программа не понимает "Турецкий удар"
Добавлено - виноват, это обнуляется поле с которого ход...
А зачем его обнулять? Для генерации взятий шашки достаточно один раз его обнулить, а потом просто не ставить её на доску. (п после завершения генераций обратно поставить) Тоже быстрее будет. |
|
|
|
|
|
Kallisto |
|
Тема сообщения:
Отправлено: Авг 24, 2006 - 11:48 AM
|
|
Зарегистрирован: Авг 18, 2003
Сообщений: 747
|
|
Что-то одна строчка внутри фигурных скобок пропадает. Ну да ладно. И без нее понятно. |
|
|
|
|
|
Kallisto |
|
Тема сообщения:
Отправлено: Авг 24, 2006 - 11:45 AM
|
|
Зарегистрирован: Авг 18, 2003
Сообщений: 747
|
|
Посмотрел исходники SIDra нет там такого.
Код:
inline bool AddCaptured(int sq, Move *m, int caps)
{
for (int i = 0; i <caps>cap_sq[i]) return false;
}
m->cap_sq[caps] = sq;
m->cap_type[caps] = Board[sq];
return true;
}
Вот так добавляется новая сбитая шашка. Она с доски не убирается (раньше действительно убиралась). Просто прежде чем сбивать следующую шашку мы проверяем, что раньше ее не сбивали.
У тебя какой даты Generator.cpp? На сайте должен лежать 06.05.06 11:34.
Когда сделаешь perft? |
|
|
|
|
|
plus600 |
|
Тема сообщения:
Отправлено: Авг 24, 2006 - 10:58 AM
|
|
Зарегистрирован: Дек 24, 2002
Сообщений: 1329
Откуда : Москва
|
|
NS писал(а): Мелкие огрехи в генераторе ходов сильно на силе не скажутся, и ошибка же не в Каллисто, а в открытых исходниках демонстрационного движка "SIDra"
Если речь идет о сидре, то виноват, но думал речь идет о Калисто.
На силе не скажится, скажится на правильности игры |
_________________ С уважением,
Сергей Старцев
______________________________________
Пользуюсь только программами серии Plus
|
|
|
|
|
NS |
|
Тема сообщения:
Отправлено: Авг 24, 2006 - 10:51 AM
|
|
Зарегистрирован: Авг 22, 2006
Сообщений: 671
Откуда : Санкт-Петербург
|
|
Мелкие огрехи в генераторе ходов сильно на силе не скажутся, и ошибка же не в Каллисто, а в открытых исходниках демонстрационного движка "SIDra" |
|
|
|
|
|
plus600 |
|
Тема сообщения:
Отправлено: Авг 24, 2006 - 10:31 AM
|
|
Зарегистрирован: Дек 24, 2002
Сообщений: 1329
Откуда : Москва
|
|
|
|
|
|