Форум » » IPPOLIT & ROBBOLITO » Ответить

IPPOLIT & ROBBOLITO

Bison: Предлагаю обсудить особенности устройства Ипполита. Все-таки некаждый день появляются сильнейшие opensource программы.

Ответов - 251, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 All

bankuss: onedrey пишет: Чем, по-вашему, вызвано, что версии выкладываются только под Линукс? бесплатность во всем! так как и сам линукс и его проги бесплатны (ну и двиг тоже) или просто авторы работают на линуксе

bankuss: компиляция asm команд в режиме х64 VS2008(2005) не разрешается! все через masm64 (ml64) но как его использовать неясно...

onedrey: или просто авторы работают на линуксеЭто понятно. Не ясно, как он его могут тестировать, если не в партиях с рыбой? Потому что под wine будет неадекватное сравнение.. Со старыми версиями стравливают? Можно, конечно, на разных машинах запустить рыбу и ипполита...


bankuss: Генерацию таблиц Робболито сможем переделать? ТБ как бы не помешают. В линуксе он у меня все чинно сгенерил, по папкам разложил, при запуске видит.

IvenGO: Извиняюсь за неграмотный вопрос: вот тут все про алгоритмы да про алгоритмы, а что по оценочной функции сказать можно? Она революционно нова?

onedrey: а что по оценочной функции сказать можно?Меня тоже этот вопрос больше других интересует. Не думаю, что революционно нова, но, кажется, точнее, чем рыбкина

unknow: Други! Как же легко стало после Ипполита читать исходники Стрелки :) Просто образец ясного и прозрачного кода. Только сейчас оценил.

WinPooh: Это вы ещё не читали исходники шахматной программы ИТЭФ для машины М-20, в виде рукописных бланков с автокодом

NS: В робболите зачем-то время в миллисекундах умножается на 1000?! А вот такой код вызывает ошибки, и очень тяжело понять его поведение: void risolvere_termine (int d) { sint64 x; if (!salto_ok) return; x = orologio () - OROLOGIO; nodo_conteggio = nodo_frequenza; if (d == ABISSO) // предельная глубина cerca_alt (1); if (x - INVIO > 1000000) notizia (x); if (d >= 1 && d < 8) goto FINALE; if (x > ORA_ASSOLUTA) cerca_alt (1); if (d == 0) goto FINALE; if (!MOSSA_BRUTTA && x >= ORA_BATTAGLIA) cerca_alt (2); if (FACILE && x >= ORA_FACILE) cerca_alt (3); if (!MOSSA_BATTAGLIA && x >= ORA_ORDINARIA && !MOSSA_BRUTTA) cerca_alt (4); FINALE: while (interrogativo_ingresso ()) input_console (); } Аварийки срабатывают криво. Процедура эта запускается раз в неколько тысяч генераций ходов, а ней и аварийка по времени (при этом она не срабатывает при Depth от одного до восьми), и аварийка при достижении предельной глубины (255)

NS: Чтение консоли написано с ошибкой. (interrogativo_ingresso ())

bankuss: В версии D всего 1 изменение: файле valu.c #define bianco_minore_pietra (8<<2) #define nero_minore_pietra (16<<2) а было: #define bianco_minore_pietra 8 #define nero_minore_pietra 16

NS: просрочки убрал, расход времени сделал более агрессивным - сила увеличилась.

bankuss: NS кидай изменения, внесем в исходники

NS: :) Потом. Ты силушку сначала проверь :) Если NPS просадил - вечером откомпилирую по человечески, и забыл пондермув добавить - но это уже вечером.

NS: Кроче - посмотрел на свежую голову, ничего особо править не надо. Достаточно поставить запас времени. То есть перед расчетом времени написать [pre2] if (movestogo) ORA = (ORA - 1000000 - movestogo * 200000); else ORA = (ORA - 1000000 - 40 * 200000); // в безлимитке запасаемся на 40 ходов. //Ну и в случае израсходования времени, чтоб совсем не блицевала - if (ORA < 100000) ORA = 100000;[/pre2] И в аварийках убрать условие на глубину [pre2] // if (d >= 1 && d < 8) // goto FINALE;[/pre2] Либо переместить его сразу за основную аварийку [pre2] if (x > ORA_ASSOLUTA) cerca_alt (1); if (d >= 0 && d < 8) // при d==0 не надо использовать методы сокращения времени, это не вызов из корня goto FINALE;[/pre2] А вторая причина зависаний - это останавливаются часы. Надо смотреть где с разрядностью переменных накосячено. uint64 x; x = GetTickCount() * 1000; В этом коде переполнение наверно действительно получается.

дуп: x = GetTickCount() * 1000; Не должно переполнить. Эта функция возвращает число мс с момента старта ОС. Т.е. спустя сутки после включения компа это число всего 86 400 000. Это если я не нагнал в подсчетах

NS: Результат умножения имеет какой тип? Результат умножения это не число мс. А 1000*Число мс.

WildCat: Т.е. спустя сутки после включения компа это число всего 86 400 000 Т.е. если это чилсо умножить на 1000 то unsigned __int64 будет переполнятся где-то 20 раз в сутки.

ThinkingALot: WildCat пишет:  цитата: Т.е. спустя сутки после включения компа это число всего 86 400 000 Т.е. если это чилсо умножить на 1000 то unsigned __int64 будет переполнятся где-то 20 раз в сутки. . int32 будет, int64 - нет.

NS: результат умножения будет иметь какой тип? int32 или uint64?



полная версия страницы