1. Да се дефинира предикат-генератор на списъците, имащи последен елемент терма a и с елементи - алтернативно сменящи се a и b, тоест:

[a],[b,a],[a,b,a],[b,a,b,a],...

2. Даден е граф с върхове - естествени числа, представен със списък с елементи от вида [<връх> <съсед 1> <съсед 2> ...]. Да се дефинира предикат, който проверява дали даден връх е достижим от друг връх прилагайки обхождане в широчина.

3. Да де дефинира предикат, който реализира обхождане в широчина и намира най-късия път между два върха (ако има).

4. Да се дефинира предикат move(N,A,B,C,A1,B1,C1), решаващ задачата за ханойските кули. Предикатът да предизвиква страничен ефект - изписване на последователноста от ходове, които водят до решение на задачата (тук N е броят на дисковете, които трябва да се преместят от пилон A на пилон C, A,B,C са стекове със съдържанието на трите "пилона", а в A1,B1,C1 трябва да се получи новото състояние след преместването).

Забележка: Задачата за ханойските кули е следната. Дадени са три "пилона", върху които могат да се нареждат краен брой "дискове" с различен диаметър. Никои два диска не са с еднакъв диаметър и даден диск може да се постави върху друг, само ако е с по-малък диаметър от него. В началото всички дискове са на първия пилон. Да се даде списък от ходове (премствания на дискове), като на всеки ход може да се взема само най-горния диск на даден пилон и да се постави само върху по-голям диск на някой съседен пилон или да е първия диск на този пилон.

Последно модифициране: събота, 12 ноември 2011, 17:38