Предисловие 2003 года. Четвертый турнир прошел в январе-мае 1995 года. Примечателен он многим. Во-первых, турнир оказался “международным” – в нем участвовала программа, написанная командой из Санкт-Петербурга. Во-вторых, сменилась наконец-то техника. Правда, еще довольно долго в турнирах действовал запрет на обмен с жестким диском (т.е., формально говоря, программа должна была запускаться с дискеты и, если и подчитывать информацию, то только с дискеты же). Это делалось для того, чтобы обладатели навороченных по тем временам машин не имели большого преимущества, насчитав заранее большой объем данных – объем хранимых данных ограничивался размером дискеты. В-третьих, турнир оказался очень плодовитым для курсов – трое (!) из его участников впоследствии преподавали на курсах, а двое и сейчас преподают. И еще одна история запомнилась. Одна программа выделялась пользовательским интерфейсом. Нет, он не был свехнавороченным, наоборот, интерфейс был предельно прост – черно-белый текстовый режим, никаких излишеств, очень экономный в средствах. Запомнился он тем, что был удивительно удобным, все те, кто разыгрывал турнир это отмечали единодушно, не сговариваясь. Автор этой программы стал программистом, уже сейчас руководит группой в весьма солидной программистской фирме. Для курсов главное, конечно то, что он еще оказался и хорошим преподавателем и, к счастью, преподает у нас на курсах. А узнали мы его именно из турнира. <конец воспоминаний>
Ну, а какая была игра, насколько она была интересной – взгляните сами...
СМ

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

Правила игры. Играют двое на прямоугольном поле 5x6 (30 клеток, расположенных в 5 строк по 6 клеток в каждой строке)‚ в начальной позиции все клетки игрового поля пусты. Игроки ходят по очереди. Каждый игрок своим ходом ставит в любую свободную клетку один из двух символов - крестик или нолик. Подчеркнем, что каждым своим ходом каждый игрок может поставить либо крестик, либо нолик, независимо от того, какие символы он ставил раньше и какие символы ставил его соперник. Каждый из игроков старается образовывать ряды из трех подряд идущих одинаковых символов. Ряды могут располагаться по горизонтали, по вертикали или по диагонали (под углом в 45 градусов к сторонам игрового поля). Каждая новая тройка одинаковых символов, получившаяся после очередного хода игрока, приносит ему одно очко. Например, в позиции, изображенной на рисунке, ход

	A	B C	C 	D	E	F	
1							
2							
3							
4							
5							

крестиком в клетку B1 дает игроку 2 очка (одно очко за тройку B1-C1-D1, и еще одно - за тройку B1-C2-D3), также, как и ход ноликом в клетку E3 (по одному очку за тройки E2-E3-E4 и E3-E4-E5); ход ноликом в C5 приносит сразу 3 очка за три новые тройки: F5-B5-C5, B5-C5-D5 и C5-D5-E5.
Цель игры - набрать больше очков, чем соперник. Партия заканчивается, когда все поля будут заняты. Программы играют между собой матчи из 2-4 партий, чередуя право первого хода. В случае равного количества побед в матче или турнире преимущество отдается тому, у кого лучше разность очков.
Требования к программе. Программы должны работать на IBM-совместимых ЭВМ и располагают таким ресурсом: оперативная память 2 Мбайт, графический адаптер VGA, на машине с процессором 80386 SX с тактовой частотой 33 МГц программе дается 1,5 минуты на всю партию. Разумеется, программа может быть написана и отлажена на любом IBM-совместимом компьютере. Допускается применение любых языков или систем программирования. Предъявлять исходный текст программы не обязательно - необходимо лишь сдать дискету с исполняемым файлом (или пакетом необходимых файлов). Время, пока ищет ход программа противника, не учитывается. Время, затраченное программой от начала загрузки до ее первого хода, учитывается. Ограничений по времени на каждый отдельный ход нет, лишь бы суммарное время не превышало 1,5 минут. Обмен с жестким диском запрещен. Минимальные требования к внешнему виду программы - ясное однозначное указание, какой именно ход сделан -- какой символ ставится и в какую клетку. Для этого можно использовать двойную нумерацию (по горизонтали и по вертикали - как в приведенном примере), можно использовать перемещения курсора, можно просто пронумеровать клетки по порядку и т.д. Попытка сделать запрещеннлй ход или неспособность программы воспринять корректный ход соперника, также как и нарушение лимита времени, наказывается - программе засчитывается поражение со счетом 0:7. Программа обязательно должна обеспечивать ввод ходов с клавиатуры (и предоставлять четкие указания по организации ввода). Можно дублировать ввод с помощью мыши. Диалог с пользователем может быть организован на любом языке. 
И, как обычно, две задачи для разминки. Лучшие решения этих задач также будут отмечены. 
1.	какое наибольшее количество очков в одной партии может набрать победитель?
2.	какой наибольшей разности очков в партии может добиться победитель?
В задачах предполагается, что оба игрока стремятся к поставленной цели, играя кооперативно (один из игроков играет в обычную игру, а второй - в поддавки).