Предисловие 2003 года.  Сегодня, 26 сентября 2003 года, я собрался, наконец-то, разобрать архивы турниров прошлых лет и выложить их на всеобщее обозрение. Посмотрев на файлы, обнаружил, что через пару недель будет 10 лет с момента розыгрыша первого турнира – файл с результатами создан 13 октября 1993 года. Текст задачи первого турнира сохранен полностью, удалена только часть, связанная с регистрацией, сроками сдачи программ, семинаре для потенциальных участников и т.д.  Конечно, сегодня технические ограничения и, особенно, перечисляемая техника вызывают улыбку. А ведь были программы, написанные и для “Ямахи” и для БК-0010... История о том, какие героические усилия приложил нынешний директор “Progmeistars”а Александр Яковлевич Каневский, чтобы заставить БК-шку читать программу с кассетника (старожилы помнят – программы можно было хранить на магнитофонной кассете и оттуда же их запускать) воистину легендарна, но это целая отдельная история. Файлы с материалами турнира хранятся в форматах текстового редактора ChiWriter, электронной таблицы SuperCalc - не каждый знает уже, что это такое. Пятидюймовые дискеты помнят еще многие, а вот что такое плотность записи, почему она бывает разная, и что такое SD – это уже более сложные вопросы. Посмотрим через 10 лет, какую реакцию вызовет чтение правил турнира 2003 года . Не скучайте, воспоминания уже закончены, взгляните на задачу – думаю, что она и сегодня также интересна для решения, как и 10 лет назад. 
СМ

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

Правила игры. Играют двое. Игровое поле - таблица 3x3. Игроки ходят по очереди. Ход состоит в том, что игрок записывает в любую свободную клетку любое натуральное число от 10 до 18. При этом использовать уже записанные числа запрещается. Когда таблица заполнена, игроки подсчитывают свои суммы: сумма первого игрока складывается из произведения чисел, стоящих в первой строке, произведения чисел, стоящих во второй строке, и из произведения чисел третьей строки; сумма второго игрока складывается из произведений чисел по столбцам. Цель игры - получить сумму, большую, чем у соперника. Поясним это на примере. Пусть конечная позиция выглядит так:
12	14	10	
15	16	13	
11	17	18	

Сумма первого игрока равна 12•14•10+15•16•13+11•17•18=8166, а сумма второго - 12•15•11+14•16•17+10•13•18=8128. Это означает, что первый игрок выиграл со счетом 8166:8128. Как видите, партия прошла в упорной борьбе, и преимущество первого совсем невелико. 
Программа должна играть как за первого (начинающего) игрока, так и за второго. Цель программы - не просто выиграть партию, но добиться как можно лучшей разности очков; в турнире программы будут играть между собой матчи из нескольких партий, начиная партии по очереди. В случае равного количества выигранных в матче партий побеждает та программа, которая набрала больше очков. Автор программы, выигравшей турнир, становится победителем конкурса программ.
Как видите, правила игры несложны, и хотя бы простейший вариант программы можен написать даже начинающий. В то же время, здесь есть над чем подумать и более опытным в программировании.
Требования к программе. Программа должна "воспринимать" ходы соперника и "делать" собственные ходы. Точнее говоря, программа должна запрашивать информацию о ходе соперника и проверять корректность предлагаемого хода (не занята ли клетка, в которую соперник хочет поставить число; не стоит ли уже это число на игровом поле) и сообщать о собственных ходах. Допускается любая форма представления ходов, лишь бы явно указывалось какое ставится число и в какую клетку.
Время на выбор очередного хода ограничивается - для каждого класса машин ограничения свои (с учетом быстродействия конкретной ПЭВМ). Допускается использование любых ПЭВМ, совместимых с PC, равно как и школьных ПЭВМ "Ямаха", УКНЦ или БК-0010 либо БК-0011. Допускается использование любых языков и систем программирования - участники должны представить только выполняемый файл (или файлы), представлять исходный текст программы не обязательно. Программа должна быть записана на дискете размером 5,25 или 3,5 дюйма со стандартной плотностью записи (SD, DD или HD) либо на магнитофонной кассете. 
  	Программы для IBM-совместимых компьютеров будут запускаться на машине IBM PS/2, Model 30 с тактовой частотой 10 МГц, оперативной памятью 1 МБайт, графическим адаптером VGA. На этой машине программе дается 2 минуты на всю партию; время, пока ищет ход программа соперника, разумеется, не учитывается, в общем, все как в шахматах. На УКНЦ установлен лимит времени 15 минут на партию, на "Ямахе" и БК-0011 - по 20 минут.  Ограничений по времени на каждый отдельный ход нет, лишь бы суммарное время не превышало установленного предела.  Обмен с жестким диском запрещен. Учтите, что время "предобработки", т.е. время, затраченное программой от начала ее загрузки до первого хода тоже учитывается, поэтому не старайтесь занести как можно больше информации, необходимой программе, на дискету - ведь обращение к ней требует довольно большого времени.  В связи с этим придется отказаться от долгих ярких озвученных заставок в прологе, если Вам все-таки очень хочется это сделать, то поставьте все эффекты в конце. Тем не менее, постарайтесь уделить внимание и оформлению программы - хоть оно и не учитывается в игре, мы отметим призами и авторов лучшего оформления.  Минимальные требования к внешнему виду программы – ясное однозначное указание, какое число и в какую клетку ставить; при этом программа не должна, конечно, делать запрещенных ходов. Попытка сделать запрещенный ход, также как и нарушение лимита времени наказывается - программе засчитывается поражение со счетом 0:1134. Программа должна обеспечивать ввод данных с клавиатуры (и предоставлять четкие указания по организации ввода). Можно дублировать ввод с помощью "мыши".  Диалог с пользователем может быть организован на любом языке.
В заключение - для тренировки попробуйте решить две небольших задачи: 
1.	Постройте пример партии, закончившейся вничью; 
2.	Постройте пример партии, закончившейся с максимально большой разницей в пользу первого игрока.