Університет Дебрецена Факультет інформатики Розв’язування головоломки тральщика за допомогою примусових методів Керівник методу: д-р Ласло Ашалош Доцент Автор: Іштван Сабо Г.І. Дебрецен 2010

головоломку

Зміст 0. Вступ. 3 1. Мова програмування Prolog. 4 1.1 Мови програмування. 4 1.2 Історія мови Пролог. 5 1.3 Основні особливості та синтаксис Prolog. 6 1.4 Приклад пролога. 9 2. Метод задоволення примусу. 10 2.1 Визначення. 10 2.2 Проблеми задоволення обмежень. 11 3. Представляємо CLP. 14 3.1 Обмеження логічного програмування. 14 3.2 Обмеження. 16 3.3 Семантика CLP. 18 3.4 Бібліотека CLIF SWI-Prolog. 19 4. Завдання. 21 4.1 Представляємо саперника. 21 4.2 Формулювання завдання. 22 4.3 Розв’язування квадратного столу. 23 4.4 Розв’язування шестикутної таблиці. 26 4.5 Вирішення паркетної дошки. 31 5. Резюме. 37 6. Список літератури. 38 Подяка. 39 2

Приклад постановки цілей:? - мати (x, Judit), мати (x, Gerg Ger). Значення: чи є людина Х, яка є матір’ю Джудіт та Герґо, так само як і брати Герґо та Юдіт? 1.4 Приклад Prolog Після теоретичного опису давайте розглянемо структуру вихідного коду Prolog. працює: - запишіть (введіть температуру в градусах Цельсія '), прочитайте (c), відкрийте (c, f), напишіть (Температура'), напишіть (f), напишіть ('Фаренгейта), nl, попереджайте (f, попереджає), пишіть (попереджає). atvalt (cel, Fahr): - Fahr також 9.0/5.0 * Cel + 32. попереджає (T, 'Остерігайся, насправді жарко): - T> 90. попереджає (T, Остерігайся, дуже холодно!'): - T = 30, T = B записується як обмеження #> B. Під обмеженням (A # = 3 \/B #> C-2) ми маємо на увазі умову (A = 3 або B> C-2). Прикладом такого обмеження є all_different (l), яке передбачає, що елементи списку L різні. 16

вирішувати завдання розподілу. Більшість тверджень у бібліотеці є обмеженими обмеженнями домену в діапазоні цілих чисел. Він також підтримує класичні арифметичні операції, а також функції мінімуму, максимуму, модуля та абсолютного значення. Найважливіші обмеження на кінцеві області: Kif1 #> = Kif2 Kif1 # = Kif2 Kif1 #