ГоБиблиотека: Конкурсы/ПроГо/Оценки/ЙосеХод

Конкурс Программистов ГО: «Определение хода в йосэ».
Время проведения: 1 Февраля 2005 – 1 Октября 2005

КОНКУРС ЗАВЕРШЕН. Победила программа Neuron 7.97 с результатом 18.3 %

ГоНаПК/ПроГо/Конкурсы => Конкурсы/ПроГо (КонкурсыКарта) => Конкурсы/ПроГо/Оценки/ЙосеХод

Оглавление документа

Условия конкурса

ЗАДАЧА: Определить ходы профессиональных игроков в конце партии.

Необходимо написать функцию на языке Паскаль или С++,

Описание функции на С++:
int Themove(Board* Position,int Colorstone,int KO,
int &move1, int &move2, int &move3, int &move4);

на ВХОД которой подаётся массив 19х19 целых чисел Position, который
отображает позицию партии ГО, ноль в массиве означает пустое место
на доске, единица – чёрный камень, два – белый камень.
Также на вход подаётся число Colorstone – определяющее чей ход (1 – чёрных, 2 – белых)
и число KO – отбражающее КО-борьбу, если оно равно 0 – то нет КО-борьбы,
иначе число показывает пункт в который нельзя ходить из-за КО-борьбы.

На ВЫХОДЕ функция должна выдавать четыре целых числа, каждое число это
пункт на доске, и является попыткой угадать следующий ход в партии,
то есть даётся четыре попытки угадать следующий ход.

Для C++ если ход ПАС, то число равно -1, иначе число обозначает пункт на доске.
Для Паскаля если ход ПАС, то число равно 0, иначе число обозначает пункт на доске.

Описание функции на C++:
int Themove(Board* Position,int Colorstone,int KO,
int &move1, int &move2, int &move3, int &move4);

Описание функции на Паскале:
function Themove(Position: Board; Colorstone: integer; KO :integer;
var move1: integer; var move2: integer;
var move3: integer; var move4: integer): integer;

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

Для Borland Turbo Pascal нужен файл TPU, для Delphi файл DCU,
в котором функция и вспомогательные типы описаны как:
Type Board = array[1..19,1..19] of integer;
function Themove(Position: Board; Colorstone: integer; KO :integer;
var move1: integer; var move2: integer;
var move3: integer; var move4: integer): integer;

Для Visual Studio C++ нужен файл LIB в котором функция и вспомогательные типы описаны как:
struct Board { int P[19*19] };
int Themove(Board* Position,int Colorstone,int KO,
int &move1, int &move2, int &move3, int &move4);

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

Есть процедура procedure Calculatemovedifference
которая распаковывает SGF файл, выполняет ходы и расставляет позицию партии
в структуре Board, после каждого хода применяет вашу функцию Themove и
получает от Вашей функции четыре возможных хода в текущей позиции.

Далее идет начисление Вам очков по следующей схеме:

Если move1 совпадает с ходом в партии то + 1 очко.
Если move2 совпадает с ходом в партии то + 1/2 очка.
Если move3 совпадает с ходом в партии то + 1/4 очка.
Если move4 совпадает с ходом в партии то + 1/8 очка.
Если move1 находится в окрестности ±1 пункт от хода в партии то + 1/16 очка.
Если move1 находится в окрестности ±2 пункта от хода в партии то + 1/48 очка.
Если move1 находится в окрестности ±3 пункта от хода в партии то + 1/96 очка.

За ход Вам начисляются очки по лучшей из этих категорий.
То есть за ход можно получить не более 1 очка.
За первый пас в партии (если он угадан) очки начисляются,
остальные пасы и ходы после первого паса в конкурсе не участвуют.
Далее очки суммируются, делятся на количество всех участвующих ходов,
определяется процент угадывания, у кого он выше, тот и победитель.

В конкурсе будут участвовать последние 90 ходов из каждой партии.

Условия конкурса в файле:
KonkYose.doc ( 32K )

Сроки

Конкурс проводится с 1 Февраля по 1 Октября 2005 Года.


Призы

Призов спонсоры выделили всего два, один за первое место – $200, и один за 50 % результат,
то есть если количество очков делённое на количество ходов больше или равно 0.5 то приз $200.
Если победителей несколько, то призы делятся.


Цели

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


Результаты конкурса

будут отображаться на этой странице.

Дата: 18 Мая, 2005 года:
Место Алгоритм      Автор         Игр   Ходов     Очки    Процент   Время        Примечания
  _   Neuron 7.97__ Melnikov A.   3078  275144   50349.5  18.30 % 0.489 Сек/Ход  22 кю на сервере KGS
  _   Neuron 7.95__ Melnikov A.   3078  275144   31464.6  11.44 % 0.014 Сек/Ход  ~ 25 кю
  1   Hane&Kosumi__ Sample        3078  275144    4681.5   1.70 %    18 Сек      Пример Алгоритма
  2   Free Space___ Sample        3078  275144    4141.5   1.51 %    12 Сек      Пример Алгоритма
  3   Pas__________ Sample        3078  275144    3078.0   1.12 %    11 Сек      Пример Алгоритма
  4   Random_______ Sample        3078  275144    2109.6   0.77 %    10 Сек      Пример Алгоритма

Полная информация по шести лучшим алгоритмам:
Варианты   Очки|  Neuron 7.97   |  Neuron 7.95   |  Hane&Kosumi   |  FreeSpace      |  Pas            |  Random         |
Move1_____ 1   | 34085 = 34085.0| 20034 = 20034.0|  2153 =  2153.0|  1897 =   1897.0|  3078 =   3078.0|   776 =    776.0|
Move2_____ 1/2 | 19832 =  9916.0| 13703 =  6851.5|  2217 =  1108.5|  1915 =    957.5|     0 =      0.0|   740 =    370.0|
Move3_____ 1/4 | 16134 =  4033.5| 10852 =  2713.0|  2172 =   543.0|  1861 =    465.3|     0 =      0.0|   757 =    189.3|
Move4_____ 1/8 | 13779 =  1722.4|  9584 =  1198.0|  2096 =   262.0|  1959 =    244.9|     0 =      0.0|   716 =     89.5|
Move1Dist1 1/16|  5144 =   319.6|  5243 =   327.7|  4653 =   290.8|  4320 =    270.0|     0 =      0.0|  5305 =    331.6|
Move1Dist2 1/48|  7886 =   164.3|  9595 =   199.9|  9022 =   188.0|  8464 =    176.3|     0 =      0.0|  9979 =    207.9|
Move1Dist3 1/96| 10440 =   108.8| 13493 =   140.6| 13076 =   136.2| 12536 =    130.6|     0 =      0.0| 13953 =    145.3|
All Points     |       = 50349.5|       = 31464.6|       =  4681.5|       =   4141.5|       =   3078.0|       =   2109.6|
Percent (P/M)  |       = 18.30 %|       = 11.44 %|       =  1.70 %|       =   1.51 %|       =   1.12 %|       =   0.77 %|


Помощь участникам

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

Код программы на Паскале и тестовая база партий для проверки конкурсной функции.
CompMove_PAS.zip ( 42K )
Содержание архива:
Games – Директория с тестовыми партиями.
Konkmovego.pas – файл с функцией Calculatemovedifference
Main.dpr – запуск из Delphi
Move.pas – Каркас конкурсной функции.
ZLog.txt – результат работы программы на Паскале

Код программы на Си++ и тестовая база партий для проверки конкурсной функции.
CompMove_CPP.zip ( 42K )
Содержание архива:
Games – Директория с тестовыми партиями.
Konkmovego.cpp – файл с функцией Calculatemovedifference и запуском из Visualstudio C++.
Konkmovego.h – Header
Move.cpp – Каркас конкурсной функции.
ZLog.txt – результат работы программы на C++


Ссылка на предыдущий конкурс

«Вычисление результата законченной партии».