Предисловие 2003 года. Пятый турнир прошел осенью 1996 года. Турнир этот одновременно стал одним из предварительных этапов нового многоэтапного соревнования - первой Соросовской олимпиады по информатике или,  как она официально называлась, OIS – олипиада по информатике при поддержке “Фонда Сороса - Латвия”. Правила игры, на этот раз, очень просты и прозрачны, реализация пользовательского интерфейса очень проста. Видимо, оба этих фактора обусловили небывало высокую активность – в турнире участвовало 52 (!) программы.  Пришлось впервые отказаться от круговой системы розыгрыша и прибегнуть к швейцарской системе. А игра, на мой взгляд, получилась одна из самых удачных во всех турнирах:  очень простые, даже элегантные, правила, и очень непростой анализ...
СМ

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

Правила игры. Игра проходит на квадратном поле 7x7 клеток с 49 карточками. Каждая карточка с одной стороны окрашена в черный цвет, а с другой - в зеленый цвет. Сначала все карточки расположены на игровом поле черной стороной вверх (в каждой клетке расположена одна карточка). Начальный вид игрового поля изображен на рисунке 1.

	A	B	C	D	E	F	G	
1								
2								
3								
4								
5								
6								
7								
Рисунок 1. Начальный вид игрового поля.

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

	A	B	C	D	E	F	G	
1								
2								
3								
4								
5								
6								
7								
	 	 Рисунок 2. Возможный первый ход

Игрок, который не может сделать ход, проигрывает.
	За победу в игре победителю присуждается столько очков, сколько карточек с черной стороной сверху осталось на игровом поле. Проигравший очков не получает. К примеру, если после 7-го хода второго игрока противник не может совершить ход, то игра заканчивается с результатом 0:21 в пользу второго игрока.

	Минимальные требования к оформлению внешнего вида программы: ясные и непротиворечивые указания, какой именно ход выполняется - какие карточки переворачиваются. Программа обязана поддерживать ввод ходов с клавиатуры (и давать ясные указания по организации ввода). Для этого можно использовать перемещенеия курсора, двойную индексацию клеток и т.д. Диалог с пользователем может быть организован на любом языке, принимая во внимание общепринятые правила этикета при использовании электронных средств общения. Попытка сделать запрещенный ход (например, перевернуть две карточки, не связанные ходом коня, перевернуть карточку, лежащую зеленой стороной вверх) или неспособность программы воспринять корректный ход противника наказывается - программе присуждается поражение со счетом 0:25.

	Программы играют между собой матчи из 2-4 партий, начиная попеременно. В случае равного количества побед в матче или турнире преимущество отдается той программе, которая имеет лучшую разность очков.
	Программы должны работать на IBM-совместимых ЭВМ и располагают таким ресурсом: оперативная память 4 МБайт, графический адаптер VGA; на машине с процессором 80486 с тактовой частотой 66 МГц программе дается 90 секунд на партию. Разумеется, программа может быть отлажена на любом компьютере. Допускается применение любых средств программирования. Предъявлять исходный текст программы не обязательно - необходимо лишь представить исполняемый файл (или пакет необходимых файлов). Время, пока ищет ход программа противника не учитывается. Учитывается время, затраченное программой от начала загрузки до начала ее работы. Ограничений по времени на каждый отдельный ход нет, лишь бы суммарное время не превышало 90 секунд. Обмен с жестким диском запрещен.

	Попробуйте решить также еще две задачи, связанные с описанной игрой. Решения этих задач также будут оцениваться.
1. Какое наибольшее количество очков может набрать в одной партии первый игрок?
2. Какое наибольшее количество очков может набрать в одной партии его противник?
	В обеих задачах предполагается, что оба игрока стремятся к поставленной цели, играя кооперативно (один играет на выигрыш, а другой играет в поддавки). В обеих задачах ответы необходимо обосновать. Решения задач должны быть представлены на бумаге или в виде DOSовского текстового файла либо файла в формате MS Word.