Показать сообщение отдельно
Старый 21.05.2009, 11:51   #40 (permalink)
csbwalker
Member
 
Аватар для csbwalker
 
Регистрация: 03.03.2009
Сообщений: 87
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 187
По умолчанию

Цитата:
Сообщение от blondinka62733 Посмотреть сообщение
Три миссионера и три каннибала хотят переправиться с левого берега на правый. Как это сделать за минимальное число шагов, если в их распоряжении имеется трехместная лодка и ни при каких обстоятельствах (в лодке или на берегу) миссионеры не должны оставаться в меньшинстве.

Вот результаты нашей работы:

...

Ответ почему-то выдает просто Yes... Помогите пожалуйста, буду очень признательна.
Правильный ответ вот такой: Первыми пересекают реку миссионер и каннибал. После этого миссионер возвращается. Затем пересекают реку два каннибала. Один из них возвращается. Потом два миссионера пересекают реку. Миссионер и каннибал возвращаются. Два миссионера пересекают реку. Один каннибал возвращается. Два каннибала пересекают реку. Один каннибал возвращается. Два оставшихся каннибала пересекают реку.
Код:
go:-go(state(east,east,east,east),state(west,west,west ,west)).
тут всего четыре позиции...а человек всего шесть и остальная часть программы построена на шесть позиций, поэтому как-то так:
Код:
go:-go(state(east,east,east,east,east,east),state(west,west,west ,west,west,west)).
В результате считает довольно долго, но вроде считает...Хотя может и зациклился. Посмотрим.
Как досчитает - напишу результат выполнения, совпал ли он с правильным.
csbwalker вне форума  
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070