Форум программистов, компьютерный форум, киберфорум
Prolog
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
5 / 5 / 2
Регистрация: 04.10.2010
Сообщений: 205

Задачка про Гномов и Злого волшебника Грендальфа

30.05.2015, 22:37. Показов 1058. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер!
Подкинули логическую головоломки, которые надо решить на Prolog. Никак не могу осилить одну из них:
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
На рудниках злого волшебника Грендальфа уже много лет трудятся пять гномов. По приказу чародея каждый из них ищет камни строго определённого вида. Грендальф хранит в своей канцелярии два списка узников: список имён, в котором имена гномов расположены по алфавиту, и список сроков, упорядоченный по возрастанию сроков заключения, среди которых есть 80,159,176 и 202 года.
  Известно, что:
  1. Гном с кайлом стоит в списке сроков сразу после искателя сапфиров.
  2. Брыкли в списке сроков следует сразу за гномом с турбобуром. Однако Брыкли      
      придётся работать всё же не так долго, как специалисту по изумрудам.
  3. Искателю изумрудов придётся томиться в подземелье дольше, чем Фигли, но и тот  
      трудится уже больше 80 лет.
  4. Звякли никогда не имел дела с сапфирами. В списке сроков он стоит прямо перед 
      искателем агатов.
  5. Квакли в списке сроков следует сразу за гномом с киркой и прямо перед гномом с 
      отбойным молотком, ищущим алмазы.
  6. Имя гнома, специализирующегося на алмазах, стоит в списке имён сразу после 
      имени бедняги, который заключён на 131 год.
Нужно ответить на вопросы:
1.  Кто ищет рубины?
2.  Кто работает заступом?
3.  Каков срок заточения у Дрихли?
В сети есть только одна тема, и та на форуме: Задачка про Гномов и Злого волшебника Грендальфа .Но до полноценного решения не дошли(

Выводит в конце "Press the SPACE bar". Если вручную вводить Goal, то пишет NO. Что я делаю не так?

Немного дописанный код программы:
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
domains
tname=string
ttool=string
tsrok=integer
tston=string
tsroki=tsroki(tname, tsrok, tston, ttool)
tsrokilist=tsroki*
 
predicates
puzzle
structure(tsrokilist)
key(tsrokilist)
question(tsrokilist, tname, tsrok)
solution(tname, tsrok)
 
tgname(tsroki,tname)
tgtool(tsroki,ttool)
tgston(tsroki,tston)
tgsrok(tsroki,tsrok)
 
stateafter(tsroki, tsroki, tsrokilist)
 
member(tsroki,tsrokilist)
 
goal
puzzle.
 
clauses
puzzle:-
structure(Struct),
key(Struct),
question(Struct, Name, Srok),
solution(Name, Srok).
 
structure([
tsroki(_,80,_,_),
tsroki(_,131,_,_),
tsroki(_,159,_,_),
tsroki(_,176,_,_),
tsroki(_,202,_,_)
]).
%structure(
%[tsroki(_,_,_,_),
%tsroki(_,_,_,_),
%tsroki(_,_,_,_),
%tsroki(_,_,_,_),
%tsroki(_,_,_,_)]
%).
 
 
key(Sroki):-
% объявление камней:
%member(tsroki(_,80,_,_),Sroki),
%member(tsroki(_,131,_,_),Sroki),
%member(tsroki(_,159,_,_),Sroki),
%member(tsroki(_,176,_,_),Sroki),
%member(tsroki(_,202,_,_),Sroki),
 
% объявление камней:
%member(tsroki(_,_,"Almaz",_),Sroki),
%member(tsroki(_,_,"Rubin",_),Sroki),
%member(tsroki(_,_,"Sapfir",_),Sroki),
%member(tsroki(_,_,"Agat",_),Sroki),
%member(tsroki(_,_,"Izumrud",_),Sroki),
% объявление инструментов:
%member(tsroki(_,_,_,"Kailo"),Sroki), 
%member(tsroki(_,_,_,"Turbobur"),Sroki),
%member(tsroki(_,_,_,"Kirka"),Sroki),
%member(tsroki(_,_,_,"Molot"),Sroki),
%member(tsroki(_,_,_,"Zastup"),Sroki),
 
 
% ключ 1:
% Гном с кайлом стоит в списке сроков сразу после искателя сапфиров.
stateafter(Gn2, Gn1, Sroki),
tgtool(Gn1,"Kailo"),
tgston(Gn2,"Sapfir"),
 
% ключ 2:
% Брыкли в списке сроков следует сразу за гномом с турбобуром. однако Брыкли 
% придётся работать всё же не так долго, как специалисту по изумрудам.
stateafter(Gn4, Gn3, Sroki),
stateafter(Gn3, Gn5, Sroki),
tgname(Gn3,"Brikli"),
tgtool(Gn4,"Turbobur"),
tgston(Gn5,"Izumrud"),
 
% ключ 3:
% Искателю изумрудов придётся томиться в подземелье дольше, чем Фигли, но и тот   
% трудится уже больше 80 лет.
stateafter(Gn7, Gn6, Sroki),
stateafter(Gn8, Gn7, Sroki),
tgston(Gn6,"Izumrud"),
tgname(Gn7,"Figli"),
tgsrok(Gn8,80),
 
% ключ 4:
% Звякли никогда не имел дела с сапфирами. В списке сроков он стоит прямо перед 
% искателем агатов.
stateafter(Gn9, Gn10, Sroki),
tgname(Gn9,"Zvakli"),
not(tgston(Gn9,"Sapfir")),
tgston(Gn10,"Agat"),
% ключ 5:
% Квакли в списке сроков следует сразу за гномом с киркой и прямо перед гномом с 
% отбойным молотком, ищущим алмазы.
stateafter(Gn12, Gn11, Sroki),
stateafter(Gn11, Gn13, Sroki),
tgname(Gn11,"Kvakli"),
tgtool(Gn12,"Kirka"),
tgtool(Gn13,"Molot"),
tgston(Gn13,"Almaz"),
 
% ключ 6:
% Имя гнома, специализирующегося на алмазах, стоит в списке имён сразу после 
% имени бедняги, который заключён на 131 год.
stateafter(Gn15, Gn14, Sroki),
tgston(Gn14,"Almaz"),
tgsrok(Gn15,131).
 
question(Sroki, Name, Srok):-
%опрос 1 
member(G1,Sroki),
tgname(G1,Name),
tgston(G1,"Rubin"),
%опрос 2
member(G2,Sroki),
tgname(G2,Name),
tgtool(G2,"Zastup"),
%опрос 3
member(G3,Sroki),
tgsrok(G3,Srok),
tgname(G3,"Drihli").
solution(Name, Srok):-
write("Rubin ishet Gnom"), write(Name), nl,
write("Zastupom rabotaet Gnom"), write(Name), nl,
write("Srok y Drihli"), write(Srok).
 
stateafter(A,B,[A,B,_]).
stateafter(A,C,[A,_,C]).
stateafter(B,C,[_,B,C]). 
tgname(tsroki(A,_,_,_),A). %имя
tgsrok(tsroki(_,B,_,_),B). %срок
tgston(tsroki(_,_,C,_),C). %камни
tgtool(tsroki(_,_,_,D),D). %инструменты
 
 
member(X,[X|_]).
member(X,[_|Y]):-
member(X,Y).
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.05.2015, 22:37
Ответы с готовыми решениями:

Задачка про Гномов и Злого волшебника Грендальфа
Добрый день. Задали такую головоломку решить на Прологе: ЗАДАЧА №10. Пользуясь методом «образовать и проверить», напишите...

Задача про гномов
Помогите пожалуйста разобраться с задачей-> На скамье длиной L см расположены N гномов. В момент времени 0 гномы начинают двигаться...

Тема про гномов, эльфов и орков. Ролевики и толкиенисты, кучкуемся!
Девять - струны звонкой лютни, той, что носят менестрели, что воспели в своих песнях девять призраков летучих. Словно ветер...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.05.2015, 22:37
Помогаю со студенческими работами здесь

Задачка про матрицы
Доброго времени суток! имеется такая задачка - все положительные элементы матрицы С(M,N) разделить на константу Е, все отрицательные -...

Задачка про треугольник.
Для вас эта задача очень легкая, но я не как не могу ее сделать. Пожалуйста помогите! Условие такое : В треугольнике (см. рис. 1.8,...

Задачка про экзамен
Экзамен состоит с 10 вопросов, на каждый с которых нужно дать ответ "Да" либо "нет". Какая вероятность того что студент ответит хотя...

Задачка про кенгуру
Здравствуйте. Нашел задачку на https://www.hackerrank.com/challenges/kangaroo/problem. Не могу организовать цикл. Нужен цикл который...

задачка про автомобиль
Автомобиль движется со скоростью 60 км/ч. Внешний диаметр покрышек колес равен 60 см. Найти величину нормального ускорения внешнего слоя...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru