Learn Go Game
Программы играющие в Го, игра Го онлайн, электронные книги и лекции Го на видео
Страницы: 123456>>
Страница: 1 из 6

КОНКУРС для программистов ГО.

mels на rugo.ru Гость
05, September, 2004 01:28   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

Работу над ГО-проектом можно разделить на отдельные подзадачи.
И по одной такой простой подзадаче предлагается провести конкурс.

УСЛОВИЯ КОНКУРСА:

ЗАДАЧА:
АЛГОРИТМ ПОДСЧЁТА РЕЗУЛЬТАТА ЗАКОНЧЕННОЙ ПАРТИИ.
Необходимо написать функцию на языке Паскаль или С++, на ВХОД которой подаётся массив 19х19 целых чисел,
который отображает позицию законченной партии ГО по японским правилам,
ноль в массиве означает пустое место на доске, единица – чёрный камень, два – белый камень.
На ВЫХОДЕ функция должна выдавать целое число соответствующее результату партии без учёта коми и съеденных камней,
а именно Очки Чёрных минус Очки Белых.
(то есть если у чёрных очков больше, то функция выдаёт положительное число)

КАК УЧАСТВОВАТЬ В КОНКУРСЕ:
Необходимо прислать мне на почту ihtiand@yandex.ru свою процедуру,
но не исходный код, а скомпелированный для Windows.
Исходный код это Ваша собственность.

Для Borland Turbo Pascal нужен файл TPU, для Delphi файл DCU, в котором функция и вспомогательные типы описаны как:
Type Board = array[1..19,1..19] of integer;
Function ScoreEndOfTheGame(EndPosition: Board): integer;

Для Visual Studio C++ нужен файл DLL или LIB в котором функция и вспомогательные типы описаны как:
struct Board { int P[19*19] };
int ScoreEndOfTheGame(Board* EndPosition);

КАК ОПРЕДЕЛЯЕТСЯ ПОБЕДИТЕЛЬ КОНКУРСА:
У меня есть база данных из чуть более 3000 партий сыгранных профессионалами и любителями до двух пасов по японским правилам.
Каждая партия хранится в SGF файле. Результаты партий тщательно проверены и записаны в тех же SGF файлах.

Есть процедура procedure CalculateDifference(SGFfile: string; var Difference: double); для Паскаля
и int CalculateDifference(char *SGFfile, double *Difference); для C++
которая распаковывает SGF файл, расставляет конечную позицию партии в структуре Board,
применяет вашу функцию function ScoreEndOfTheGame(EndPosition: Board); или int ScoreEndOfTheGame(Board* EndPosition);
к расставленной позиции и вычисляет разницу между реальным счётом
и Вами вычисленным (плюс съеденные камни плюс коми).
Если счёт совпадает, то Вам плюс одно очко, если не совпадает то ничего.
Далее определяется процент правильно вычисленных счетов партий, у кого он выше, тот и победил.

ПРИЗЫ:
Призов спонсоры выделили всего два, один за первое место - $200, и один за 100 % результат, то есть если правильно вычислены
все результаты партий - $200. Если победителей несколько, то призы делятся.

СРОКИ:
Конкурс проводится до Нового (2005) Года.

ЦЕЛИ:
1. Выявить программистов способных участвовать в ГО-проекте
и даже собрать команду для работы над играющей ГО-программой.
2. Просто спортивный интерес – побороться за призы.

ПОСТСКРИПТУМ:
Тестируемая база возможно увеличится.
Для массовости организатор выставляет два своих алгоритма.

АЛГОРИТМ СОСТАВЛЕНИЯ КОНКУРСНОЙ БАЗЫ ДАННЫХ ПАРТИЙ:
Существует множество (конечное) вариаций японских правил,
включающее правила по которым проводился хотя бы один профессиональный турнир,
и национальные чемпионаты (чтобы правила РФГ попали в множество).
Если результат партии одинаковый на всём множестве правил, то партия включается в конкурсную базу данных.

Это означает, что участник может писать алгоритм для правил из этого множества.

ДРУЖЕСТВЕННОСТЬ КОНКУРСА:
Первое.
Алгоритмы организатора участвуют вне конкурса.

Второе.
Участники могут скачать процедуру CalculateDifference и тестовую базу партий здесь:
Конкурс ГО
Именно этим кодом будут проверяться конкурсные алгоритмы.

Третье.
После окончания конкурса, конечные позиции из базы данных будут
опубликованы. (или просто разосланы конкурсантам)
Также будет опубликована статистика про каждый алгоритм.
Статистический разбор конкурса будет подробным.

С уважением.
Мельников Александр.



Отправка отредактированного (13/09/04 22:42)

Re: КОНКУРС для программистов ГО.
mels на rugo.ru Гость
05, September, 2004 01:29   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

Закончился Конкурс Программистов ГО: "Вычисление Результата партий".

Дата: 1 Января, 2005.
Результаты конкурса :

Место Имя_____________ Автор_________ Всего Правильно Ошибочно Процент Время___ Прим.
_____ DAN_1.01v_______ Melnikov A.___ 3078_ 3064_____ 14______ 99.54 % 1380 Сек В/К
_____ DAN_1.01p_______ Melnikov A.___ 3078_ 3048_____ 30______ 99.02 % __51 Сек В/К
_____ GnuGO_3.7.1_____ Authors Group_ 3078_ 2979_____ 99______ 96.78 % 3045 Сек В/К
__1__ KUKA____________ Udincev S.____ 3078_ 2801_____ 277_____ 91.00 % _656 Сек Победитель
__2__ SEOG_01a________ Guisov M._____ 3078_ 2782_____ 296_____ 90.38 % _741 Сек
__3__ PocketGoPartner_ Lyakhovsky V._ 3078_ 2669_____ 409_____ 86.71 % ___6 Сек
_____ Neuron_7.95_____ Melnikov A.___ 3078_ 1613_____ 1465____ 52.40 % __30 Сек В/К


Приз за первое место выиграл Сергей Удинцев.
Решить все партии не удалось никому.



Отправка отредактированного (18/01/05 21:08)

Re: КОНКУРС для программистов ГО.
mels на rugo.ru Гость
05, September, 2004 01:32   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

Итак первые участники.

Алгоритм от моей программы Neuron участвовавшей
во Второй Всемирной Компьютерной Олимпиаде в Лондоне (1992 год),
там, правда, были правила не совсем японские, машины были обязаны
cъесть все пленные камни на доске и после этого сказать пас.

И алгоритм который я начал писать сейчас, и назвал его DAN (2004 год).

Neuron:
Всего партий: 3003
Правильно: 1576
Ошибочно: 1427
Процент: 52.48 %

DAN:
Всего партий: 3003
Правильно: 2814
Ошибочно: 189
Процент: 93.71 %

Единственно извиняюсь, что я имею преимущество, потому как пишу
алгоритм DAN уже две недели, но обязуюсь за две недели до
конца конкурса закончить его модернизировать.

Re: КОНКУРС для программистов ГО.
Ekin на rugo.ru Любитель Го
05, September, 2004 02:26   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

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

Второй вопрос: могу ли я использовать открытый код готового движка gnugo?

Re: КОНКУРС для программистов ГО.
shadowjack на rugo.ru Ценитель Го
05, September, 2004 10:54   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

2mels:
Кроме того, у Вас есть преимущество еще и потому, что у Вас в наличии весь набор тестовых данных.

Предлагаю опубликовать 100 партий (или их финальных позиций) для возможности отладки. Отобрать партии можно случайным образом. _Все_ участники конкурса будут тестировать свой алгоритм на этих задачах, плюс найденых самостоятельно (но не на финальном наборе).

Использование готового кода, на мой взгляд, недопустимо. Цель конкурса - оценить способности программиста и его понимание пердметной области.Может быть, стоит пускать такие алгоритмы "вне конкурса".

Re: КОНКУРС для программистов ГО.
LV на rugo.ru Гость
05, September, 2004 10:57   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

Пишу программу редактор SGF для карманных компьютеров:
[rusgolib.iponweb.net]
[forum.weiqi.ru]
По большому счету осталось сделать графическое отображение дерева ходов и как раз оценка позиции/расчет результата, которой я собирался заняться на этой неделе.
Поэтому не вижу проблем не участвовать в этом конкурсе.

mels писал(а):

> Neuron:
> Всего партий: 3003
> Правильно: 1576
> Ошибочно: 1427
> Процент: 52.48 %

> DAN:
> Всего партий: 3003
> Правильно: 2814
> Ошибочно: 189
> Процент: 93.71 %

По этому поводу вопрос: имеют ли право участники проверять работу своего алгоритма на этой же базе?



Вадим Ляховский
Го на вашем КПК: Pocket Go Partner

Re: КОНКУРС для программистов ГО.
shadowjack на rugo.ru Ценитель Го
05, September, 2004 11:12   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

Да, забыл добавить - идея конкурса замечательная!
И призы - это вообще отлично!

Неплохо было бы выложить .dll или .obj с функцией
CalculateDifference для облегчения тестирования, или еще лучше - ее исходник, если там нет ничего секретного (так как я, например, предпочитаю программировать/отлаживать программы под Linux).

Пожалуй, я собираюсь поучаствовать в конкурсе.

Re: КОНКУРС для программистов ГО.
shadowjack на rugo.ru Ценитель Го
05, September, 2004 11:14   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

Да, хотелось бы узнать, есть ли где-нибудь полное изложение японских правил подсчета территории.
И еще, говорят, в японских правилах бывает, правда очень редко, "партия без результата" (где-то в форуме пробегало).

Re: КОНКУРС для программистов ГО.
Сергей Павлов на rugo.ru Знаток Го
05, September, 2004 13:24   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

Один из примеров партии без результата по яп. правилам - тройное ко.


Re: КОНКУРС для программистов ГО.
Сергей Межов на rugo.ru Ценитель Го
05, September, 2004 15:06   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

Японские правила очень хорошо изложены в книге "Правила для участников первого первенства мира среди любителей"

Re: КОНКУРС для программистов ГО.
Ekin на rugo.ru Любитель Го
05, September, 2004 21:47   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

Когда на форуме спрашивают "есть ли где-нибудь полное изложение", то имеется ввиду, есть ли где-нибудь в Интернете, то есть спрашивают URL. Я присоединяюсь к вопросу shadowjack.

Re: КОНКУРС для программистов ГО.
kit144 на rugo.ru Любитель Го
06, September, 2004 00:56   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

[okruzhor.pisem.net]
обзор японских правил



Ну что это за Жизнь... без примеси сумасшествия совсем не интересно......
[www2.psy.uq.edu.au]
[www.mercury.csse.unimelb.edu.au] - Крутой Меркурий
[habrahabr.ru]
[shogi.by] - Shuogi

Re: КОНКУРС для программистов ГО.
LV на rugo.ru Гость
06, September, 2004 12:19   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

Для проведения конкурса, необходимо, чтобы база игр, на которой будут проверятся алгоритмы участников, была неизвестна участникам. В этом смысле у mels-a преимущество. Если всем нужно создать алгоритм для определения результата 3000 неизвестных игр, то для mels-а фактически нужно исправить свой алгоритм для правильного определения 189 ИЗВЕСТНЫХ ему игр. А это немного разные вещи. Недопускать его к участию к конкурсу тоже неправильно. Для уравнения шансов участников предлагаю компромисс. Опубликовать для участников 100 игр, выбранных случайным образом из проверочной базы и чтоб например 50 игр было из тех, которые алгоритм mels-a не решил, но не сообщать какие именно. И далее чтоб сам mels не использовал основную проверочную базу, а как все использовал только эти 100 игр. И еще, по возможности увеличить базу и наравне со всеми не использовать mels-у эти новые игры для отладки алгоритма.

Re: КОНКУРС для программистов ГО.
mels на rugo.ru Гость
06, September, 2004 14:37   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

>> Ekin:
>> Имеет ли конкурсная функция право
>> бросить исключение, если она понимает,
>> что неспособна высчитать результат партии?

По условию конкурсная функция должна выдать в любом случае целое число,
при тестировании конкурсной функции никакие прерывания не обрабатываются.
Если конкурсная функция совершила runtime error или выдала exception,
то засчитываются только те партии,
которые она правильно вычислила до остановки.

>> Ekin:
>> могу ли я использовать открытый код готового движка gnugo?

Учитывая цель номер 1, ответ нет.

Было бы неплохо если gnugo поучаствовало вне конкурса.
Для этого надо кому-то подогнать открытый код gnugo под конкурсную функцию.

>> shadowjack:
>> Предлагаю опубликовать 100 партий (или их
>> финальных позиций) для возможности отладки.
>> LV:
>> Опубликовать для участников 100 игр, выбранных случайным образом

Это не возможно.
На всех олимпиадах и чемпионатах по программированию,
тестовые данные являются самой закрытой информацией.

>> shadowjack
>> Кроме того, у Mels есть преимущество еще и
>> потому, что у Mels в наличии весь набор тестовых данных.
>> LV:
>> Недопускать Mels к участию к конкурсу тоже
>> неправильно. Для уравнения шансов участников
>> предлагаю компромисс.

Правильно, преимущество к сожалению большое,
но поучаствовать хочется, поэтому компромисс такой:

Mels даёт Коми, в смысле фору 2.5 процента,
Это означает, что если например алгоритм у него набирает
100%, то засчитывается только 97.5%

Если основная борьба пойдёт в районе 97-98 процентов
(похоже что так), то это как раз разумная фора,
лишающая Mels шансов бороться за 1 место.

>> shadowjack:
>> Да, хотелось бы узнать, есть ли где-нибудь
>> полное изложение японских правил подсчета
>> территории.
>> И еще, говорят, в японских правилах бывает,
>> правда очень редко, "партия без результата".

>> Сергей Павлов:
>> Один из примеров партии без результата по яп.
>> правилам - тройное ко.

В базе данных все партии закончились двумя пасами
И каждая имеет результат.

>> shadowjack:
>> Неплохо было бы выложить .dll или .obj с функцией
>> CalculateDifference для облегчения тестирования,
>> или еще лучше - ее исходник.

Хотелось бы, чтобы tools для тестирования своей функции
писали сами участники, но если будет совсем тяжело,
то придётся выложить исходник процедуры CalculateDifference.

Хотя что там тестировать: на входе матрица, на выходе число,
Конкурсная функция типа вычислить сумму элементов матрицы.

Re: КОНКУРС для программистов ГО.
LV на rugo.ru Гость
06, September, 2004 15:31   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

mels писал(а):

> >> Опубликовать для участников 100 игр, выбранных случайным
> образом
>
> Это не возможно.
> На всех олимпиадах и чемпионатах по программированию,
> тестовые данные являются самой закрытой информацией.
...
> Правильно, преимущество к сожалению большое,
> но поучаствовать хочется, поэтому компромисс такой:
>
> Mels даёт Коми, в смысле фору 2.5 процента,

А будете лы вы продолжать тестировать свой алгоритм на тестовых данных, в том числе и на новых, если они добавятся?

Re: КОНКУРС для программистов ГО.
Олег Попов на rugo.ru Любитель Го
06, September, 2004 16:36   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

думаю, следует разделить конкурсантов и судейство.
mels будет одним из участников, а решение о победителе должен принять беспристрастный судья, на неком специальном наборе партий, неизвестных ни mels'у, ни остальным участникам. При этом никакого поправочного коэффициента для mels'a не нужно.


Re: КОНКУРС для программистов ГО.
kit144 на rugo.ru Любитель Го
06, September, 2004 17:25   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

Цитата:
____ ЗАДАЧА:
АЛГОРИТМ ПОДСЧЁТА РЕЗУЛЬТАТА ЗАКОНЧЕННОЙ ПАРТИИ.
Необходимо написать функцию на языке Паскаль или С++, на ВХОД которой
подаётся массив 19х19 целых чисел, который отображает позицию законченной
партии ГО по японским правилам, ноль в массиве означает пустое место на доске,
единица – чёрный камень, два – белый камень.
На ВЫХОДЕ функция должна выдавать целое число
соответствующее результату партии без учёта коми и съеденных камней. _________


Вопрос:
1) А почему только на этих языках?
2)Чем мотивировалось и обосновывалось?
3)А почему не "-1" для белых камней?
4) Какой цифрой обозначать нейтральные поля?
5) После двух пассов, в ситуации требующей доигрывания для уточнения позиции, жива группа или мертва, кто ходит первым? Черные или белые?


6) Скомпилированный код - exe или dll или ovr ? Или же и то и другое?



Ну что это за Жизнь... без примеси сумасшествия совсем не интересно......
[www2.psy.uq.edu.au]
[www.mercury.csse.unimelb.edu.au] - Крутой Меркурий
[habrahabr.ru]
[shogi.by] - Shuogi

Re: КОНКУРС для программистов ГО.
shadowjack на rugo.ru Ценитель Го
06, September, 2004 18:05   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

>Есть процедура procedure CalculateDifference(SGFfile: string; var >Difference: double);
>для Паскаля
>и void CalculateDifference(char *SGFfile, double *Difference);
>для C++
>которая распаковывает SGF файл
интересует как раз распаковка SGF файла, чтоб уж самому не тратить силы.

Re: КОНКУРС для программистов ГО.
kit144 на rugo.ru Любитель Го
06, September, 2004 18:08   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

[edocs.by.ru]

описание формата SGF.

Так судя по условиям конкурса, все процедуры надо самим писать.



Ну что это за Жизнь... без примеси сумасшествия совсем не интересно......
[www2.psy.uq.edu.au]
[www.mercury.csse.unimelb.edu.au] - Крутой Меркурий
[habrahabr.ru]
[shogi.by] - Shuogi

Re: КОНКУРС для программистов ГО.
kit144 на rugo.ru Любитель Го
06, September, 2004 18:11   Об авторе Фотографии автора Партии автора Набор Го автора
 +    0     

P.S.
>Есть процедура procedure CalculateDifference(SGFfile: string; var >Difference: double);
>для Паскаля
>и void CalculateDifference(char *SGFfile, double *Difference);
>для C++
>которая распаковывает SGF файл

такие условия применения функций (или процедур) применяются для динамических или статических библиотек.

Повторю вопрос -
в каком виде должна быть программа - exe, dll, ovr?



Ну что это за Жизнь... без примеси сумасшествия совсем не интересно......
[www2.psy.uq.edu.au]
[www.mercury.csse.unimelb.edu.au] - Крутой Меркурий
[habrahabr.ru]
[shogi.by] - Shuogi

Страницы: 123456>>
Страница: 1 из 6


Извините, только зарегистрированные пользователи могут писать в этом форуме.

  cassino online brasil   apuestas online en chile   Go game in Russia   Online Go lessons   How to Play Go