Скачиваний:
13
Добавлен:
01.05.2014
Размер:
442.37 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

Государственное образовательное учреждение высшего профессионального образования

«Санкт-Петербургский государственный электротехнический университет

"ЛЭТИ" имени В.И. Ульянова (Ленина)»

Кафедра МО ЭВМ

Отчет по курсовой работе

по дисциплине «Логическое программирование»

Морской бой

Вариант 7

Выполнили студенты группы 4351 Довбыш А.А.

Адамов И.А.

Руководитель Беляев С.А.

Санкт-Петербург

2007 г

1. Постановка задачи

7. Морской бой.

Дан квадрат 10х10 и корабли (1 → 4 шт., 2 → 3 шт., 3 → 2 шт., 4 → 1 шт.). В качестве исходных данных - рифы на карте. Необходимо так разместить корабли (по всем правилам игры), чтобы они не попадали на рифы.

Дополнительные тредования:

- Исходные данные (ИД) читаются из внешнего файла. Несколько вариантов ИД.

- Алгоритм решения должен быть «умнее» полного перебора.

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

- Работа выполняется в парах, но защита работы - индивидуальная и по всей программе. Студенты должны быть готовы внести изменения в любой участок кода и в логику программы.

2. Описание алгоритма решения

Инвариант — все корабли должны быть расставлены, если это возможно.

Будем задавать корабли при помощи 4 параметров: координаты XиY(нижняя или левая палуба), количество палуб (занимаемых клеток таблицы) и ориентация (горизонтальная или вертикальная).

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

3. Формат исходных данных

Исходные данные читаются из текстового файла. Файл содержит список координат клеток таблицы, в которых находятся рифы.

Пример входного файла:

[4/0,5/0,4/1,5/1,4/2,5/2,4/3,5/3,0/4,1/4,2/4,3/4,4/4,5/4,6/4,7/4,8/4,9/4,0/5,1/5,2/5,3/5,4/5,5/5,6/5,7/5,8/5,9/5,4/6,5/6,4/7,5/7,4/8,5/8,4/9,5/9].

Графическое представление исходных данных:

\ X Y \

0

1

2

3

4

5

6

7

8

9

0

*

*

1

*

*

2

*

*

3

*

*

4

*

*

*

*

*

*

*

*

*

*

5

*

*

*

*

*

*

*

*

*

*

6

*

*

7

*

*

8

*

*

9

*

*

Соседние файлы в папке Морской бой на языке Пролог