Предисловие 2003 года. Пятый турнир прошел в сентябре-декабре 1995 года. Снова (но это на сегодняшний день в последний раз) турнир оказался “международным” – в нем участвовал Алексей Тигарев из Одессы. Еще, может быть стоит отметить довольно сложные, по крайней мере, на вид правила игры. Зато сохранился любопытный текст – часть переписки с Одессой (а в турнире собирались участвовать несколько одесситов, но до готовой программы дошел только один). Его  я также предлагаю вашему вниманию в Дополнении.
СМ

СОСТАВЬ ПРОГРАММУ САМ !

Правила игры. Игровое поле представляет из себя квадрат размером 8x8, заполненный числами от 0 до 6 так, как показано на рисунке 1:

0	6	6	2	3	5	1	6	
6	0	1	5	4	3	3	0	
0	6	3	4	4	4	6	4	
5	2	5	2	2	2	2	3	
1	1	0	0	4	3	3	3	
5	5	0	0	3	4	3	1	
5	1	2	1	4	4	2	5	
1	6	1	6	2	5	0	6	

Рисунок 1. Игровое поле.

Кроме того, для игры требуется полный комплект косточек домино. Все 28 косточек изображены на рисунке 2.
             Рисунок 2. Комплект косточек домино.

Играют два игрока - назовем их, для определенности, А и В. Игра состоит из двух этапов.
    1-й этап. На первом этапе косточки лежат открыто (числами вверх), а игроки по очереди разбирают косточки : сначала игрок А забирает любую из 28 косточек, затем любую из оставшихся 27 косточек берет себе игрок В, затем снова берет косточку (любую из 26 оставшихся) игрок А, и так далее, пока косточки не кончатся. На этом первый этап заканчивается. В конце первого этапа у каждого игрока имеются по 14 "своих" косточек домино.
    2-й этап. На втором этапе игроки по очереди выкладывают имеющиеся у них косточки на игровое поле. Выкладывание косточек происходит по следующим правилам:
   1. обе клетки игрового поля, которые займет косточка, должны быть свободны, иначе говоря, косточки не должны лежать одна на другой;
   2. оба числа, стоящие в клетках косточки должны быть равны числам, стоящим в занимаемых ими клетках игрового поля;
   3. за каждую выложенную косточку игрок получает столько очков, сколько стояло в обеих клетках этой косточки плюс еще 6 очков;
   3. за один ход можно выложить одну косточку;
   4. если игрок не может сделать ход, то он пропускает ход (т.е. заканчивает игру, и далее ходит только его противник);
   5. когда оба игрока не могут сделать хода, игра заканчивается.

Первым на втором этапе ходит игрок В (тот, кто заканчивал первый этап). Ходят игроки по очереди. Выигрывает тот, кто наберет больше очков.

	Требования к программе. Программы должны работать на IBM-совместимых ЭВМ и располагают таким ресурсом: оперативная память 4 Мбайт, графический адаптер VGA, на машине с процессором 80386 SX с тактовой частотой 40 МГц программе дается по 1,5 минуты на каждый из двух этапов. Допускается применение любых языков или систем программирования. Предъявлять исходный текст программы не обязательно - необходимо лишь сдать дискету с исполняемым файлом (или пакетом необходимых файлов). Время, пока ищет ход программа противника, не учитывается. Время, затраченное программой от начала загрузки до ее первого хода, учитывается. Ограничений по времени на каждый отдельный ход нет, лишь бы суммарное время на каждом этапе не превышало 1,5 минут. Обмен с жестким диском запрещен. 
	Минимальные требования к внешнему виду программы - ясное однозначное указание, какой именно ход сделан: на первом этапе – какая именно косточка выбрана, на втором - какая косточка ставится, в какие клетки и как косточка повернута. Для этого можно использовать двойную нумерацию (по горизонтали и по вертикали), можно использовать перемещения курсора и т.д. . Попытка сделать запрещенный ход (например, на первом этапе выбрать уже выбранную косточку, на втором этапе занять уже занятую клетку или клетку с другим числом) или неспособность программы воспринять корректный ход соперника, также как и нарушение лимита времени, наказывается - программе засчитывается поражение со счетом 0:27. Программа обязательно должна обеспечивать ввод ходов с клавиатуры (и предоставлять четкие указания по организации ввода). Можно дублировать ввод с помощью мыши. Диалог с пользователем может быть организован на любом языке. 

Задачи для разминки.
1. Какое наименьшее количество косточек может быть выложено на втором этапе обоими игроками вместе (иначе говоря, каким наименьшим количеством косточек можно "заблокировать" игровое поле)?
2. Насколько больше косточек может выложить один из игроков на втором этапе? Предполагается, что оба игрока стремятся к поставленной цели, играя кооперативно.
3. Скольким различными способами можно выложить на игровое поле все 28 косточек, соблюдая правила игры?
4. Если на игровом поле выложены все 28 косточек, то какое наименьшее количество из них могут быть расположены вертикально? горизонтально?

Дополнение. Выбранные места из переписки вокруг турнира.

1. Можно ли присылать программы по E-mail? Если да, то в каком формате?
    Присылать программы по E-mail можно. Закодированные UUENCOD'ом.
2. Отличается ли адрес для присылки дискет от адреса для заявок? Какие дискеты и форматы Вам подходят?
   Почтовый адрес для присылки программ тот же, что и для заявок. Подходят 3.5"
   и 5.25" дискеты, отформатированные любым стандартным форматом (1.44M/720K для
   3.5", 1.2M/360K для 5.25"). Можно архивировать каким-либо распространенным
   архиватором (ARJ, ICE или ZIP - по умолчанию, остальные - если предварительно
   договоримся).
3. Могут ли двое или несколько участников прислать свои программы вместе
по E-mail, на дискете, или в одном и том же конверте?
   Да, да, да.
4. Каким образом будет учитываться время работы программы, в частности, как будет измеряться время ожидания ввода с клавиатуры, поиска хода программой
соперника? Может ли программа делать что-либо в это время, и как это будет
контролироваться?
    Во время обдумывания хода противником программа может делать что угодно, это
    время не контролируется и не учитывается. Время обдумывания своего хода
    (после ввода хода противника и до выдачи своего хода) просто засекается
    внешним секундомером – особая точность здесь не преследуется – турнир
    товарищеский и некоммерческий.
5. Как будут осуществляться матчи между программами (на двух разных
компьютерах, или на одном и том же в режиме разделения времени)?
    На двух компьютерах.
6. Как будет производиться проверка на попытки программы произвести обмен
данными с винчестером? Может ли программа производить начальную загрузку
данных с винчестера, или все данные должны находиться в ее коде?
    Просто отключается винчестер при запуске в Setup'е.
7. Как программа должна реагировать на ошибки пользователя при вводе с
клавиатуры?
    Ошибочные ходы не допускает оператор, разыгрывающий партию. Однако было бы
    желательно (на случай ошибки оператора) предусмотреть анализ корректности
    введенного хода и возможность откатки на 1-2 хода.
8. Программа может работать неверно из-за наличия в памяти каких-либо
резидентов, или некорректных действий предыдущих программ или задач (в
многозадачной среде). Что будет делаться для предотвращения таких случаев, и
что рекомендуется для предохранения своей программы от попадания в такие
ситуации?
     Резидентов и предыдущих программ не будет, кроме тех, которые вы, возможно,
     запустите вместе со своей программой. Так что можно не предохраняться.
9. В начале работы программы потребуется указание, за какого из игроков
(A или B) будет играть программа. Будет ли, опять же, в этой и подобных
ситуациях учитываться время ожидания ввода с клавиатуры ответа пользователя.
Может быть, целесообразно читать информацию об этом из командной строки DOS,
например: game.exe A - запуск программы в роли игрока A, противник - игрока B, и
          game.exe B - наоборот?
    Учитывается только время обдумывания своих ходов и время, затраченное на
    обращение к диску, но не время ожидания  ввода с клавиатуры. Можно задавать
    право первого хода и из командной строки.
10. Hужна ли документация к программе, или она сама должна давать все
необходимые сведения о себе?
    На усмотрение авторов. Но хотелось бы не усложнять работу операторов,
    глубоко маскируя указания по вводу/выводу.
11. Какие решения "задач для разминки" Вы ожидаете получить, математические или программистские (т.е. представление программы с протоколом ее работы)? Как они будут оцениваться?
    На усмотрение авторов. Однако, решение должно быть обоснованным – должно
    приводиться доказательное рассуждение либо программа с протоколом.
12. Разрешено ли программам перекодировать знакогенератор?
    Да. Корректно.
13. Каков формат блоков верхней памяти (XMS или EMS)? Можно ли использовать DOS Protected Mode Interface (DPMI) и среду MS Windows?
    Все, что работает под поставленными вами драйверами.