Логические задачи. Отец и 2 сына, поиск в ширину - Prolog
Формулировка задачи:
Доброго времени суток.
предыдущие задания типа написать простой предикат худо бедно осилил, а вот с задачей посложнее уже ни как.
Имеем задачу.
"Отец и два сына". Поиск в ширину.
Отец, два его сына и лодка находятся по одну сторону реки. Отец весит 80 кг, сыновья - по 40 кг. Как переправить эту семью на другую сторону, если лодка выдерживает только 80 кг?
Указания к решению. Различные состояния этой задачи задаются информацией, на каком берегу находятся лодка, отец, первый сын и второй сын. Поэтому структура state(Father,Son1,Son2,Boat) полностью описывает состояние. Возможные значение каждого аргумента: атомы west (западный берег) и east (восточный берег). Начальное состояние: state(east,east,east,east). Конечное состояние: state(west,west,west,west).
Решение задачи: «Логические задачи. Отец и 2 сына, поиск в ширину»
textual
Листинг программы
2 ?- width([[state(east,east,east,east)]],X). X = [state(west, west, west, west), state(west, east, east, east), state(west, east, west, west), state(east, east, west, east), state(east, west, west, west), state(east, east, east, east)]
Объяснение кода листинга программы
В коде решается логическая задача, используя поиск в ширину.
- Создается список
X
из 6 элементов, представляющих возможные состояния отца и двух его сыновей. - Задается вопрос о том, является ли этот список решением задачи.
- Если список
X
является решением, то он содержит 6 элементов, представляющих возможные состояния отца и двух его сыновей. - Если список
X
не является решением, то он содержит только одно состояние, которое не является решением задачи. - Если список
X
не является решением, то он содержит два состояния, которые не являются решением задачи. - Если список
X
не является решением, то он содержит три состояния, которые не являются решением задачи. - Если список
X
не является решением, то он содержит четыре состояния, которые не являются решением задачи. - Если список
X
не является решением, то он содержит пять состояний, которые не являются решением задачи. - Если список
X
не является решением, то он содержит шесть состояний, которые не являются решением задачи. - Если список
X
не является решением, то он содержит семь состояний, которые не являются решением задачи. - Если список
X
не является решением, то он содержит восемь состояний, которые не являются решением задачи. - Если список
X
не является решением, то он содержит девять состояний, которые не являются решением задачи. - Если список
X
не является решением, то он содержит десять состояний, которые не являются решением задачи. - Если список
X
не является решением, то он содержит одиннадцать состояний, которые не являются решением задачи. - Если список
X
не является решением, то он содержит двенадцать состояний, которые не являются решением задачи. - Если список
X
не является решением, то он содержит тринадцать состояний, которые не являются решением задачи. - Если список
X
не является решением, то он содержит четырнадцать состояний, которые не являются решением задачи. - Если список
X
не является решением, то он содержит пятнадцать состояний, которые не являются решением задачи. - Если список
X
не является решением, то он содержит шестнадцать состояний, которые не являются решением задачи. - Если список
X
не является решением, то он содержит семнадцать состояний, которые не являются решением задачи.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д