Форум программистов, компьютерный форум, киберфорум
Prolog
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 12.05.2010
Сообщений: 3
1

Три миссионера и три каннибала (vs 7.2)

13.05.2010, 14:01. Показов 1296. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
я нашла код, пытаюсь разобрать его по частям, но мне выдаетcя ошибка Fatal error 2505: Cannot create file..., errno=13 Permission denied. Это происходит после работы с последним пунктом. Подскажите пожалуйста, что я не так делаю.
Вот код:
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
implement main
   open core
   open console
    open list
constants
    className = "main".
    classVersion = "".
domains
сост = tuple(symbol, integer*, integer*).
путь = сост*.
class predicates
поиск_в_ширину: (сост, сост) -> путь determ.
поиск_в_ширину: (путь*, сост*, сост) -> путь determ.
переход: (сост) -> сост nondeterm.
перевезти: (integer, integer*, integer*, integer*, integer*) nondeterm (i,i,i,o,o). 
clauses
    classInfo(className, classVersion).
поиск_в_ширину(X, Y) = поиск_в_ширину([[X]], [X], Y).
 
поиск_в_ширину([[Y | П] | _], _, Y) = [Y | П]:- !.
поиск_в_ширину([[X | П] | Пути], Состояния, Y) = поиск_в_ширину(НовПути, Состояния1, Y):-
    Продолжения = [[Z, X| П] || Z = переход(X), not(isMember(Z, Состояния))],
            НовПути = append(Пути, Продолжения),
            Вершины = [V || [V | _] = getMember_nd(Продолжения)],
            Состояния1 = append(Вершины, Состояния).
 
переход(tuple("л", Л, П)) = tuple("п", Л1, П1):-
    N = std::fromTo(1, 2),
    перевезти(N, Л, П, Л1, П1).
переход(tuple("п", Л, П)) = tuple("л", Л1, П1):-
    N = std::fromTo(1, 2),
    перевезти(N, П, Л, П1, Л1).        
 
перевезти(N, [КДо, МДо], [КПосле, МПосле], [КДо-КЛ, МДо-МЛ], [КПосле+КЛ, МПосле+МЛ]):- 
    КЛ = std::fromTo(0, КДо),
    КЛ <= N, 
    МЛ = N - КЛ,
    МЛ <= МДо,  
    if МДо-МЛ > 0 then КДо-КЛ <= МДо-МЛ end if,
    if МПосле+МЛ > 0 then КПосле+КЛ <= МПосле+МЛ end if.
class facts
    счетчик : positive := 0.
clauses
    run():-
     TaskWindow = taskWindow::new(),
        TaskWindow:show(),
         init(),
        Старт = tuple("л", [3, 3], [0, 0]),  
        Цель= tuple("п", [0, 0], [3, 3]), 
        Путь = поиск_в_ширину(Старт, Цель), 
        foreach tuple(Берег, Левый, Правый) = getMember_nd(reverse(Путь)),
                Левый = [КЛ, МЛ], Правый = [КП, МП]
          do 
            writef("%. На левом берегу: % кан. и % мис.; на правом берегу: % кан. и % мис. \n", 
                   счетчик, КЛ, МЛ, КП, МП),
            if Берег = "л" 
               then write("\tлодка отправляется с левого берега на правый\n\n")
               else if not(Левый = [0, 0]) then 
                      write("\tлодка отправляется с правого берега на левый\n\n") end if
             end if,
             счетчик := счетчик + 1
        end foreach,
        !, 
        _ = readLine();
        succeed().  
end implement main
 
goal
mainExe::run(main::run).
Добавлено через 17 часов 2 минуты
Прошу закрыть тему.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.05.2010, 14:01
Ответы с готовыми решениями:

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

Три миссионера и три каннибала
На левом берегу реки находятся три миссионера и три каннибала. К этому же берегу причалена...

Три миссионера и три каннибала
Три миссионера и три каннибала находятся на одном берегу реки. Все они хотят перебраться через...

Переставить первые три и последние три буквы, сохранив порядок их следования
Дано слово.Переставить первые три и последние три буквы,сохранив порядок их следования.Задачу...

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

Переставить первые три и последние три строки массива, сохранив порядок
Очень нужна помощь в решении задачи, уже какой день над ней бьюсь и не могу решить. Дан...

Поменять местами первые три и последние три символа исходного слова
В ячейке А1 записано слово. Поменять местами первые три и последние три символа исходного слова....

Переставить первые три и последние три элемента одномерного динамического массива
Дан одномерный массив из N элементов. Переставить первые три и последние три элемента, сохранив...

Переставить первые три и последние три столбца, сохранив порядок их следования
очень срочно нужно, а у меня вообще ничего не получается( 1) Дан двумерный массив из пяти строк и...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru