Нажмите для просмотра прикрепленного файлаПредлагаю конкурс несколько необычного формата (возможно, кто-то даже сочтет, что предлагаемое не имеет права называться конкурсом).
Итак:
- никаких ограничений по срокам,
- никаких ограничений на используемый язык программирования,
- никаких ограничений на количество файлов проекта,
- никаких ограницений на содержимое файлови и набор используемых функций,
- отсутствие исчерпывающего набора допустимых компиляторов,
- независимость от организаторов конкурса,
- возможность отладки и настройки алгоритмов в "настоящем" окружении, а не в собственной реализации, которую нужно писать самому, и которая может отличаться от той, что используют органмизаторы,
Ограничения:
- только Windows,
- используемый компилятор должен уметь делать Windows DLL,
- все конкурсные соревнования проводятся на пользовательском компьютере,
- при публикации конкурсной программы в виде DLL ОБЯЗАТЕЛЬНО размещение исходников (п.9 Правил форума), а также указание используемого компилятора, его версии и настроек. Если программа использует внешние файлы, необходимо описание структуры этих файлов.
Основные положения.
Предмет: разработка алгоритмов для игры в Калах.
Способ: алгоритм оформляется в виде Windows DLL, после чего управляющая программа подключает две DLL и проводит между ними соревнование, помещая отчет в файл.
Правила проведения.
Организатор размещает:
- исполняемый файл: kalah.exe - консольное приложение (TMT Pascal 4.01, Windows Console, настройки по умолчанию), исходники прилагаются.
- пример игрока, делающего случайные ходы, файл KlPlRnd.dll, (TMT Pascal 4.01, Windows DLL, настройки по умолчанию), исходники прилагаются.
- то же самое, файл Kalah_D.dll, (Turbo Delphi, Windows DLL, настройки по умолчанию), исходники прилагаются.
- исходники дополнительных модулей, необходимых для компиляции управляющей программы и DLL.
- пример командного файла для проведения конкурса run.bat - поочередно запускает два раунда соревнований, меняя игроков местами (первого со вторым).
- описание требований, предъявляемых к DLL, файл readme.txt.
Организатор осуществляет поддержку управляющей программы, исправляя в ней найденные пользователями ошибки, и выполняя некоторые из пожеланий пользователей.
Организатор НЕ запускает DLL пользователей на своем компьютере - все тестирования проводит конкурсант.
Организатор обещает, что он не включил в состав программы вредоносного кода, но не гарантирует отсутствие каких-либо проблем у пользователя вследствие ошибок в программе либо заражения ее вирусами после публикации (организатор рекомендует проверять на наличие вирусов все скачиваемые из И-нета программы).
Конкурсант проводит разработку алгоритма, его отладку, тестирование и проведение своей локальной части конкурса на своем компьютере, после чего размещает отчет о результатах тестов вместе с DLL и исходником на форуме.
Управляющая программа позволяет проводить разработку, отладку и тестирование алгоритмов пользователя, в частности протоколирование работы как управляющей программы, так и алгоритмов пользователей с различной степенью подробности, проведение многократных игр для набора статистики, настройки управляющих коэффициентов, обучения НС и т.п.
Ключи командной строки:
/h:N (N - десятичное число, default = 6) - количество лунок в игре (3-6),
/b:N (N - десятичное число, default = 6) - начальное количество камней в каждой лунке (3-6),
/r:N (N - десятичное число, default = 1) - количество раундов (для подсчета статистики),
/t:N (N - десятичное число, default = 300) - количество ходов, после которого фиксируется ничья (во избежание зацикливания),
/f:xxxxxx.txt (строка без пробелов, default = 'KlLog.txt') - файл протокола,
/l:NM, где N и M - цифры: N=0 для "Доски", N=1 или N=2 для "Игрока", default = 3 - уровень подробности лог-файла.
M - от 0 до 5: (0 - лог-файл не создается, 1 - только интегральная по игре (KlDone), 2 - только интегральная по раунду (KlEndRound),
3 - краткая на каждом ходе, 4 - средняя на каждом ходе, 5 - самая подробная)
/p:N=M (N - 1 или 2 (номер игрока), M - десятичное или 16-чное число) - настроечные параметры, передаются "Игрокам" в 10-чном /p:1=12345 или 16-чном /p:2:$12ab или /p=1:12abh виде
Для участия в конкурсе достаточно:
1. Открыть один из приведенных примеров (если используется Паскаль).
2. Заменить строки, содержащие название алгоритма, имя автора и описание.
3. Заменить несколько строк в функции KlGetTurn на собственный алгоритм.
4. Сохранить под новым самостоятельно придуманным именем.
5. Откомпилировать файл, получив DLL.
6. Скопировать файл в KlPlayer1.dll или KlPlayer2.dll по своему выбору либо видоизменить командный файл run.bat под свое имя библиотеки.
7. Запустить kalah.exe или run.bat, получив протокол работы программы (точнее, три протокола: управляющей программы и по одному от игроков).
8. Разместить на форуме результат работы программы (необходимо два варианта счета: при игре 1-м и 2-м игроком) вместе с указанием, против кого она играла, исходник, саму DLL, указание компилятора и настроек.