4 / 4 / 2
Регистрация: 21.02.2010
Сообщений: 81
1

Задача про миссионеров и канибалов

16.11.2012, 22:26. Показов 1323. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть задача: Три миссионера и три каннибала должны пересечь реку в лодке, в которой могут поместиться только двое. Миссионеры должны соблюдать осторожность, чтобы каннибалы не получили на каком-либо берегу численное преимущество. Как переплыть реку?

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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
domains
состояние = состояние(integer,integer,symbol)
список_состояний = состояние*
 
predicates
nondeterm перевозить(integer,integer)
nondeterm разрешенное_состояние(integer,integer)
nondeterm решение(состояние,список_состояний,список_состояний)
сделать_движение(состояние,состояние,состояние)
nondeterm новое_состояние(состояние,состояние)
nondeterm поиск(состояние,список_состояний)
 
clauses
решение(состояние(0, 0, вправо), _, []).
решение(ТекущееСостояние, ПосещенноеСостояние, [Перемещение|ХвостПеремещениея]) :-
        новое_состояние(ТекущееСостояние, СледующееСостояние),
        not(поиск(СледующееСостояние, ПосещенноеСостояние)),
        сделать_движение(ТекущееСостояние, СледующееСостояние, Перемещение),
        решение(СледующееСостояние, [СледующееСостояние|ПосещенноеСостояние], ХвостПеремещениея).
 
поиск(H,[H|_]).
поиск(H,[_|T]):-поиск(H,T). %содержится ли элемент в списке
 
сделать_движение(состояние(M1, K1, влево), состояние(M2, K2, вправо), состояние(M, K, вправо)) :-
        M = M1 - M2,
        K = K1 - K2.
сделать_движение(состояние(M1, K1, вправо), состояние(M2, K2, влево), состояние(M, K, влево)) :-
        M = M2 - M1,
        K = K2 - K1.
перевозить(2, 0).
перевозить(1, 0).
перевозить(1, 1).
перевозить(0, 1).
перевозить(0, 2).
 
разрешенное_состояние(X, X).
разрешенное_состояние(3, X).
разрешенное_состояние(0, X).
 
новое_состояние(состояние(M1, K1, влево), состояние(M2, K2, вправо)) :-
        перевозить(M, K),
        M <= M1,
        K <= K1,
        M2 = M1 - M,
        K2 = K1 - K,
        разрешенное_состояние(M2, K2).
новое_состояние(состояние(M1, K1, вправо), состояние(M2, K2, влево)) :-
        перевозить(M, K),
        M2 = M1 + M,
        K2 = K1 + K,
        M2 <= 3,
        K2 <= 3,
        разрешенное_состояние(M2, K2).
goal
решение(состояние(3,3,влево), [состояние(3,3,влево)], Путь).
Помогите разобраться, где и что делается в коде
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.11.2012, 22:26
Ответы с готовыми решениями:

Задача Про миссионеров и ганнибалов
Постановка задачи такая: Три миссионера и три каннибала хотят переправиться с левого берега на...

Задача про взлом кода из книги Эрика Фримена про основы javascript в конце 5 главы.
читаю книгу Эрика Фримена про основы javascript.В конце 5 главы есть задачка про взлом кода.Никак...

Задача на перебор вариантов. Задача Л.Эйлера. Про чиновника
Задача Л.Эйлера. Некий чиновник купил лошадей и быков на сумму 1770 талеров. За каждую лошадь он...

Переместить миссионеров и людоедов на другой берег реки
Племя из М миссионеров и L людоедов находится по одну сторону реки, через которую необходимо...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.11.2012, 22:26
Помогаю со студенческими работами здесь

Задача про IP
Простите что не совсем в тему , но у меня ответ 97.15.81.53/15 , но говорят это неправильно ...

Задача про соленоид
Катушку индуктивностью L=300 мГн и сопротивлением R=140 Омподключили к источнику постоянного...

Задача про ракету
Нужно решить задачу,написав код на с++. Ракета массой 300 т стартует с Земли. Через какое время...

Задача про матрицу
Помогите решить задачу или скиньте ссылку на похожую. Заранее спасибо! &quot;Задача 11. Вводится матрица...

Задача про подъезд
Дан подъезд. на каждом этаже по 4 квартиры. вводится номер квартиры. выводится номер этажа.

Задача про биты
Написать функцию, которая возвращает число, полученное из числа X,в котором все розряды,...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru