Форум программистов, компьютерный форум, киберфорум
Prolog
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/47: Рейтинг темы: голосов - 47, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 14.01.2015
Сообщений: 4

Объясните задачу про волка, козу и капусту

14.01.2015, 13:47. Показов 9693. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Я прошу у Вас помощи, на SWI Prolog нашла решение задачи про волка, козу и капусту, но не знаю какой вопрос задать, что бы программа выдала мне ответ. Вот собственно решение:

Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
состояние(правый,правый,правый,правый,_):- 
  write('Приехали'),nl, 
  write('Итоговая последовательность действий в обратном порядке:'),nl.  
 
состояние(Человек,Волк,Коза,_,_):- 
  Волк=Коза,not(Коза=Человек),write('Козу съели'),nl,!,fail. 
состояние(Человек,_,Коза,Капуста,_):- 
  Капуста=Коза,not(Коза=Человек),write('Капусту съели'),nl,!,fail. 
 
состояние(правый,Волк,Коза,Капуста,Последний):- 
  not(Последний=ничего),write('Поехали порожняком на левый'),nl, 
  состояние(левый,Волк,Коза,Капуста,ничего),write('Поехали порожняком на левый'),nl. 
 
состояние(Вместе,Вместе,Коза,Капуста,Последний):- 
  not(Последний=волк),напротив(Вместе,Другой), 
  write('Повезли волка на'),write(Другой),nl, 
  состояние(Другой,Другой,Коза,Капуста,волк), 
  write('Повезли волка на '),write(Другой),nl. 
 
состояние(Вместе,Волк,Вместе,Капуста,Последний):- 
  not(Последний=коза),напротив(Вместе,Другой), 
  write('Повезли козу на '),write(Другой),nl,
  состояние(Другой,Волк,Другой,Капуста,коза), 
  write('Повезли козу на '),write(Другой),nl. 
 
состояние(Вместе,Волк,Коза,Вместе,Последний):- 
  not(Последний=капуста),напротив(Вместе,Другой), 
  write('Повезли капусту на '),write(Другой),nl, 
  состояние(Другой,Волк,Коза,Другой,капуста), 
  write('Повезли капусту на '),write(Другой),nl. 
 
состояние(левый,Волк,Коза,Капуста,Последний):- 
  not(Последний=ничего), 
  write('Поехали порожняком на правый'),nl, 
  состояние(правый,Волк,Коза,Капуста,ничего), 
  write('Поехали порожняком на правый'),nl. 
 
напротив(правый,левый). 
напротив(левый,правый). 
 
goal:-состояние(левый,левый,левый,левый,ничего).


Я это решение перевела на английский язык, что бы SWI Prolog смог почитать его:

Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
condition(right,right,right,right,_):-
write('came'),nl,
write('Final procedure in reverse order:'),nl.
 
condition(Man,Wolf,Goat,_,_):-
Wolf=Goat,not(Goat=Man),write('the Goat ate'),nl,!,fail.
condition(Man,_,Goat,Cabbage,_):-
Cabbage=Goat,not(Goat=Man),write('Cabbage ate'),nl,!,fail.
 
condition(right,Wolf,Goat,Cabbage,Last):-
not(Last=none),write('Went empty on the left'),nl,
condition(left,Wolf,Goat,Cabbage,nothing),write('Went empty on the left'),nl.
 
condition(Together,Together,Goat,Cabbage,Last):-
not(Last=wolf),opposite(Together,Other),
write('Drove the wolf'),write(Another),nl,
condition(Other,Another,Goat,Cabbage,wolf),
write('Drove the wolf '),write(Another),nl.
 
condition(Together,Wolf,Together,Cabbage,Last):-
not(Last=goat),opposite(Together,Other),
write('Drove the goat '),write(Another),nl,
condition(Other, Wolf, Other,Cabbage,goat),
write('Drove the goat '),write(Another),nl.
 
condition(Together,wolf,Goat,Together,Last):-
not(Last=cabbage),opposite(Together,Other),
write('was Taken cabbage '),write(Another),nl,
condition(Other,wolf,Goat,Another,cabbage),
write('was Taken cabbage '),write(Another),nl.
 
condition(left,Wolf,Goat,Cabbage,Last):-
not(Last=none),
write('Went empty on the right'),nl,
condition(right,Wolf,Goat,Cabbage,nothing),
write('Went empty on the right'),nl.
 
front(right,left).
front(left,right).
Подскажите пожалуйста, верное ли решение и какой вопрос нужно задать. Спасибо Вам заранее!!!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.01.2015, 13:47
Ответы с готовыми решениями:

Перевезти через реку волка, козу и капусту
Здравствуйте. Требуется задача на Turbo Prolog: Крестьянину нужно перевезти через реку волка, козу и капусту. На реке есть лодка, на...

Решить задачу про волка, козу и капусту
Преподаватель поставил задачу решить задачу про волка, козу и капусту, как не пробовал не получается...

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

1
Фрилансер
 Аватар для Black Fregat
3709 / 2083 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
14.01.2015, 22:09
Как минимум, у Вас Другой переведен в одних местах как Other, а в других Another

Добавлено через 7 часов 1 минуту
Та же путаница с nothing и none
В обоих случаях поменяйте что одно на другое, чтобы везде было одинаково.

В строках 26, 29 Wolf - переменная, нужно писать с большой буквы.

Добавлено через 1 минуту
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
?- ['goat'].
% goat compiled 0.00 sec, 136 bytes
true.
 
?- condition(left,left,left,left,none).
Drove the wolf to right
Cabbage ate
Drove the goat to right
Went empty on the left
Drove the wolf to right
Went empty on the left
the Goat ate
Drove the goat to left
Drove the cabbage to right
Went empty on the left
Drove the goat to right
came
Final procedure in reverse order:
Drove the goat to right
Went empty on the left
Drove the cabbage to right
Drove the goat to left
Drove the wolf to right
Went empty on the left
Drove the goat to right
true .
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.01.2015, 22:09
Помогаю со студенческими работами здесь

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

Объясните задачу
Не могу понять задачку, объясните пожалуйста.

Объясните задачу
KM/AM=CB/AC=7/24 Почему KM=14?

Объясните задачу
Длина Московской кольцевой автомобильной дороги —109 километров. Байкер Вася стартует с нулевого километра МКАД и едет со скоростью v...

Указатели, объясните задачу
Объясните 4 пункт, желательно с примером.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru