Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Теория программирования > Игры разума
Перезагрузить страницу Внимание! Конкурс!
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Garik Garik вне форума
Member
 
Сообщений: 6,201
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 07.06.2002
По умолчанию Внимание! Конкурс! - 02.03.2005, 01:23

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

Для начала, напомню правила игры.
Игра ведется на поле размером 100x100 клеток, победившим считается тот, кто поставит в ряд 5 крестиков или 5 ноликов. В случае, если поле полностью заполнено и никто не победил, результат считается ничейным.

Каждая пара игроков проводит по 100 партий. В первой партии тот, кто будет играть крестиками (а следовательно, сделает первый ход) определяется случайным образом, далее - по очереди. В случае, если после 100 партий общий счет ничейный, игра ведется до первой победы. Если после 200 партий счет по-прежнему ничейный, это считается ничьей в партии.

Турнир проходит по принципу "каждый с каждым", т.е. каждый игрок встречается со всеми остальными. За победу дается 1 очко, за поражение или ничья - 0. Соответственно, победителем считается тот, кто набрал больше всех очков. Если у нескольких игроков равные количества очков, учитывается счет по партиям. Если счет по партиям также совпадает, устраиваются дополнительные игры.

Требования, предъявляемые к программе-игроку:
1. Игрок - это DLL для Windows, написанная на любом языке (или даже на нескольких языках). Отсылается на конкурс в виде исходников и инструкций по сборке.
2. В случае ошибочного хода (т.е. хода вне поля, либо хода на уже занятое поле) программе присуждается поражение. Если программа "падает", вызывая Access Violation, ей присуждается поражение. Если программа "падает" или выдает ошибочные ходы регулярно, она выбывает из конкурса.
3. Для программы действуют следующие ограничения:
- размер DLL не более 1 Мб.
- на обдумывание хода не более 2 секунд.
- программа может занимать не более 4х мегабайт памяти.
- программа может самообучаться и хранить внутренние данные в отдельном файле, который имеет то же имя, что и DLL, с расширением .dat. Файл кранится в той же директории, что и DLL. Размер этого файла не должен превышать 10 мегабайт. Файл хранится только в течение одной партии (т.е. в процессе 100 либо более игр с одним игроком), затем он удаляется.
При нарушении любого из этих ограничений программе присуждается поражение. При регулярных нарушениях она выбывает из конкурса.

Точные прототипы экспортируемых функций уточняются и в скором времени будут выложены тут.

Прошу всех, кто заинтересовался, оставить тут отметку, а также свои замечания и предложения по поводу правил.
Ответить с цитированием
  (#2 (permalink)) Старый
tokito tokito вне форума
Member
 
Сообщений: 477
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 01.10.2004
По умолчанию 02.03.2005, 12:48

а какие сроки? а то я точно к космонавтам не успею, у меня заморы с военкоматом и в коммандировку уеду возможно.

Но учавствовать хочу и буду :!:

2 секунды может быть мало, ведь если это будет умная длл-ка, то ближе к концу партии её придется 10 кил данных обрабатывать. И почему то мне кажется счетов типа 57:43 не будет будут 100:0 или 0:0 или 100:100
Ответить с цитированием
  (#3 (permalink)) Старый
Garik Garik вне форума
Member
 
Сообщений: 6,201
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 07.06.2002
По умолчанию 03.03.2005, 00:09

Цитата:
Originally posted by tokito+-->
Цитата:
а какие сроки? а то я точно к космонавтам не успею, у меня заморы с военкоматом и в коммандировку уеду возможно.
Но учавствовать хочу и буду :!:
Сроков пока точных нет. Я думаю, не к спеху это...

<!--QuoteBegin-tokito

[b]2 секунды может быть мало, ведь если это будет умная длл-ка, то ближе к концу партии её придется 10 кил данных обрабатывать. И почему то мне кажется счетов типа 57:43 не будет будут 100:0 или 0:0 или 100:100
Условия пока обсуждаются.
Но ИМХО для современного процессора 2 секунды - это почти вечность ))
Ответить с цитированием
  (#4 (permalink)) Старый
Garik Garik вне форума
Member
 
Сообщений: 6,201
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 07.06.2002
По умолчанию 03.03.2005, 02:51

Прототипы функций DLL-игрока:
Код:
// Начать раунд
// Здесь следует инициализировать все внутренние структуры
// Время работы этой функции не ограничено
void InitRound();
Код:
// Ход
// lpField - указатель на массив 100x100 байт, определяющий поле
// 0 - пустая клетка, 1 - крестик, 2 - нолик
// dwMoveNum - номер хода, начинается с 1
// dwOpponentMove - предыдущий ход;
// старшее слово - координата по x, младшее - координата по y.
// Для первого хода передается 0xFFFFFFFF
// Возвращает координаты хода:
// старшее слово - координата по x, младшее - координата по y.
// Время работы функции ограничено правилами
DWORD MakeMove(LPCBYTE lpField, DWORD dwMoveNum, DWORD dwOpponentMove);
Код:
// Извещение об окончании игры
// dwReason - причина окончания
// 0 - вы проиграли
// 1 - вы победили
// 2 - ничья
// 3 - ошибочный ход
void EndGame(DWORD dwReason);
Код:
// Окончание раунда
// Здесь следует удалить все внутренние структуры
// Время работы этой функции не ограничено
void FinishRound();
Жду комментариев и пожеланий.
Ответить с цитированием
  (#5 (permalink)) Старый
Влад Влад вне форума
Специалист
 
Сообщений: 3,884
Сказал(а) спасибо: 1
Поблагодарили 25 раз(а) в 25 сообщениях
Регистрация: 27.06.2002
Адрес: Санкт-Петербург
По умолчанию 03.03.2005, 18:52

1. Мне почему-то кажется, что было бы лучше, если бы функция InitRound() возвращала значение, сигнализирующее об успешном или неуспешном завершении инициализации:
Код:
BOOL InitRound();
Правда, открытым остается вопрос - а что должен делать вызывающий код (и что присудить DLL-игроку - победу или поражение?), если оная DLL-игрок по независящим от нее причинам не смогла нормально инициализироваться (не хватило памяти, дискового пространства и т.п.)?
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
qwerty qwerty вне форума
Member
 
Сообщений: 31
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 12.01.2005
По умолчанию 04.03.2005, 02:08

Цитата:
Originally posted by Garik
[b]
Код:
// Ход
// lpField - указатель на массив 100x100 байт, определяющий поле
// 0 - пустая клетка, 1 - крестик, 2 - нолик
А как определить кем играешь? Крестиками или ноликами? Или я чего то не понимаю?...
Ответить с цитированием
  (#7 (permalink)) Старый
Garik Garik вне форума
Member
 
Сообщений: 6,201
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 07.06.2002
По умолчанию 13.03.2005, 19:17

Цитата:
Originally posted by qwerty+-->
Цитата:
<!--QuoteBegin-Garik
Цитата:
[b]
Код:
// Ход
// lpField - указатель на массив 100x100 байт, определяющий поле
// 0 - пустая клетка, 1 - крестик, 2 - нолик
А как определить кем играешь? Крестиками или ноликами? Или я чего то не понимаю?...
Четный ход - крестики, нечетный - нолики.
Ответить с цитированием
  (#8 (permalink)) Старый
Amo Amo вне форума
Member
 
Сообщений: 36
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 10.03.2005
По умолчанию 17.03.2005, 23:42

Возражении по поводу правил нет и хотелось бы поучавствовать
хотя нет возник вопрос что должна делать функция EndGame
Ответить с цитированием
  (#9 (permalink)) Старый
Loid Loid вне форума
Member
 
Сообщений: 227
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 10.11.2004
По умолчанию 18.03.2005, 02:51

Garik мне кажется ты немного погорячился с 2 секундами на ход. Представь сколько будет длиться 1 матч(оцени сверху):
2*100*99=19800 сек = 5.5 часов * 100 раундов
Мое мнение - одной секунды будет вполне достаточно.
По поводу файлов мне кажется, что лучше выделять память перед началом игры, а потом дампировать её(по желанию) в файл заданного размера, а то за 2 секунды просмотреть файл в 10 Мб даже на SCSI проблематично IMHO.
А по поводу того что файл храниться только в течение партии - это просто откровенная жестокость!!!
Я бы оставил файлы, хотя насчет последнего не буду отстаивать свое мнение.
Ответить с цитированием
  (#10 (permalink)) Старый
yureckor yureckor вне форума
Member
 
Сообщений: 462
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 11.03.2004
По умолчанию 18.03.2005, 17:09

Мне идея нравится
Только время надо сократить, а то ассемблерщиков (меня типа) проложисты обыграют

IMHO, надо тему во все разделы вывести, а то я только щас зашел сюда.

PS: надо уточнить про выделение каждому памяти.
Ответить с цитированием
  (#11 (permalink)) Старый
Garik Garik вне форума
Member
 
Сообщений: 6,201
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 07.06.2002
По умолчанию 19.03.2005, 00:11

Цитата:
Originally posted by Amo
[b]Возражении по поводу правил нет и хотелось бы поучавствовать
хотя нет возник вопрос что должна делать функция EndGame
Очищать все свои внутренние структуры и освобождать ресурсы.
Ответить с цитированием
  (#12 (permalink)) Старый
Garik Garik вне форума
Member
 
Сообщений: 6,201
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 07.06.2002
По умолчанию 19.03.2005, 00:15

Цитата:
Originally posted by Loid
[b]Garik мне кажется ты немного погорячился с 2 секундами на ход. Представь сколько будет длиться 1 матч(оцени сверху):
2*100*99=19800 сек = 5.5 часов * 100 раундов
Мое мнение - одной секунды будет вполне достаточно.
Мда... Пожалуй, и одна секунда не сильно уменьшит суммарное время...
Буду думать...

Цитата:
Originally posted by Loid+-->
Цитата:
По поводу файлов мне кажется, что лучше выделять память перед началом игры, а потом дампировать её(по желанию) в файл заданного размера, а то за 2 секунды просмотреть файл в 10 Мб даже на SCSI проблематично IMHO.
Можно просто создать file mapping.
И потом - в принципе не обязательно просматривать 10 мб за 2 секунды... Ведь 2 секунды - это только 1 ход...
Впрочем, над этим я тоже подумаю.

<!--QuoteBegin-Loid

[b]А по поводу того что файл храниться только в течение партии - это просто откровенная жестокость!!!
Я бы оставил файлы, хотя насчет последнего не буду отстаивать свое мнение.
Я имел в виду - файл будет храниться в течение 100 партий с одним оппонентом. А когда начинается игра с другим оппонентом - файл очищается.
Дело в том, что в противном случае программа может получить существенное преимущество, отыграв больше партий и пройдя более "крутое" обучение.
Ответить с цитированием
Ads
  (#13 (permalink)) Старый
Garik Garik вне форума
Member
 
Сообщений: 6,201
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 07.06.2002
По умолчанию 19.03.2005, 00:17

Цитата:
Originally posted by yureckor
[b]Мне идея нравится
Только время надо сократить, а то ассемблерщиков (меня типа) проложисты обыграют

IMHO, надо тему во все разделы вывести, а то я только щас зашел сюда.

PS: надо уточнить про выделение каждому памяти.
Объявление будет развешено по разделам, когда более-менее устаканится регламент и будет хотя бы начат сервер.


Что именно уточнить насчет памяти?
Ответить с цитированием
  (#14 (permalink)) Старый
Loid Loid вне форума
Member
 
Сообщений: 227
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 10.11.2004
По умолчанию 19.03.2005, 13:03

Цитата:
Originally posted by Garik+-->
Цитата:
Я имел в виду - файл будет храниться в течение 100 партий с одним оппонентом. А когда начинается игра с другим оппонентом - файл очищается.
И я это имел ввиду.

<!--QuoteBegin-Garik

[b]Дело в том, что в противном случае программа может получить существенное преимущество, отыграв больше партий и пройдя более "крутое" обучение.
так в том то все и дело! ведь если она самообучающаяся, то должна продолжать обучение в новом матче, а не начинать каждые 100 партий обучение по новому (к тому же 100 партий не хватит для обучения )

Есть еще предложение - вести 10 партий вместо ста, не думаю, что расклад от этого сильно изменится.
Ответить с цитированием
  (#15 (permalink)) Старый
Garik Garik вне форума
Member
 
Сообщений: 6,201
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 07.06.2002
По умолчанию 20.03.2005, 00:01

Видишь ли, в чем проблема.
Основная идея турнира в том, что каждая программа отыграет с каждой.
В таком случае, если не удалять базу самообучения, то может получиться явное неравенство - одна программа может отыграла уже 5 партий, причем с сильными партнерами, а другая - не играла еще вообще.
Так будет нечестно.
Ответить с цитированием
Ответ

Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конкурс sozin Подбор комплектующих 1 25.02.2012 20:42
Внимание! Конкурс на разработку интернет-сайта! voronezhselm Работа 0 25.01.2011 10:51
Конкурс mihan2000 Офтопик 11 17.12.2009 12:23
Конкурс suharik113 Общетематический 0 04.10.2009 00:53
Внимание всем!!! КОНКУРС! Тёмыч Опросы и мнения 194 28.11.2008 13:33
Конкурс дизайна apro3 Задания за деньги 0 18.11.2008 17:24
Игра на конкурс Mikle Зацените! 0 02.03.2007 19:36
Что за конкурс Imagine Cup? Nast Работа 0 26.01.2007 18:29
Конкурс!!! Fuud Офтопик 25 04.01.2006 15:21
Конкурс работ Нижегородский Госунивер Некоммерческие проекты 1 29.12.2005 23:04
Конкурс по программированию для новичков Anonymous Некоммерческие проекты 0 21.06.2004 21:30



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов