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

Задача на Visual Prolog 5.2 про студентов МАИ.

16.05.2012, 18:42. Показов 2058. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание звучит следующим образомVIP 5.2)
В пансионате «Пицунда» Холмсу еще раз пришлось решить задачу типа «Кто есть кто?» На этот раз его заинтересовали молодые люди, которые сидели за одним из соседних столов. По карточкам, лежавшим на этом столе, он узнал фамилии этих ребят. Ими оказались Рудин, Самарин, Теркин и Уткин. А звали их Николай, Михаил, Олег, Петр. Из разговора он понял, что все они учатся на разных курсах Московского авиационного института. В частности, он узнал, что Теркин учится на первом курсе, а Николай – на втором. Выяснилось, что Олег был курсом старше Рудина. Остаток летних каникул они намеревались провести у себя дома, Петр и Самарин – в Москве, Николай в Екатеринбурге, Рудин – в Калуге.
По этим сведениям Холмс определил, у кого из студентов какое имя и на каком курсе он учится. Что же узнал Холмс?

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
DOMAINS
   
    имя,фамилия,курс,город = symbol
    студент =человек(имя,фамилия,курс,город)
    список_студентов = студент*
PREDICATES
    nondeterm входит_в(студент,список_студентов)
    nondeterm возможное_имя(имя)
    nondeterm возможная_фамилия(фамилия)
    nondeterm возможный_курс(курс)
    nondeterm возможный_город(город)
    учится_на_курсе(студент,курс)
    зовут(студент,имя)
    имеет_фамилию(студент,фамилия)
    живет(студент,город)
    
    nondeterm учится_на_курс_выше(студент,студент,список_студентов)
 
    
    nondeterm ищем_решение(список_студентов) 
    
CLAUSES
    входит_в(Студент,[Студент|_]).
    входит_в(Студент,[_|Хвост_Списка_Студентов]):-входит_в(Студент,Хвост_Списка_Студентов).
        
    возможное_имя(николай).
    возможное_имя(михаил).
    возможное_имя(олег).
    возможное_имя(петр).
    возможная_фамилия(рудин).
    возможная_фамилия(самарин). 
    возможная_фамилия(уткин).
    возможная_фамилия(теркин).
    возможный_курс(первый).
    возможный_курс(второй).
    возможный_курс(третий).
    возможный_курс(четвертый).
    возможный_курс(пятый).
    возможный_город(москва).
    возможный_город(екатеринбург).
    возможный_город(калуга).
    
    
    
    
    зовут(человек(Вася,_,_,_),Имя):- Имя=Вася.
    имеет_фамилию(человек(_,Васильев,_,_),Фамилия):-Фамилия=Васильев.
    учится_на_курсе(человек(_,_,Второй,_),Курс):- Курс=Второй.
    живет(человек(_,_,_,Земля),Земля).
    учится_на_курс_выше(A,B,[A,B,_]). 
    учится_на_курс_выше(A,C,[A,_,C]).
    учится_на_курс_выше(B,C,[_,B,C]).
 
 
ищем_решение(Студенты):-         /*  Генерация гипотезы    */
        возможное_имя(Имя1),возможное_имя(Имя2),возможное_имя(Имя3),возможное_имя(Имя4),
        возможная_фамилия(Фам1), возможная_фамилия(Фам2),возможная_фамилия(Фам3),возможная_фамилия(Фам4),
        возможный_курс(Курс1), возможный_курс(Курс2),возможный_курс(Курс3),возможный_курс(Курс4),
        возможный_город(Гор1),возможный_город(Гор2),возможный_город(Гор3),возможный_город(Гор4),
        not(Фам1=Фам2),not(Имя1=Имя2),not(Курс1=Курс2),
        not(Фам1=Фам3),not(Имя1=Имя3),not(Курс1=Курс3),
        not(Фам1=Фам4),not(Имя1=Имя4),not(Курс1=Курс4),
        not(Фам2=Фам3),not(Имя2=Имя3),not(Курс2=Курс3),
        not(Фам2=Фам4),not(Имя2=Имя4),not(Курс2=Курс4),
        not(Фам3=Фам4),not(Имя3=Имя4),not(Курс3=Курс4),
            Студенты=человек(Имя1,Фам1,Курс1,Гор1),человек(Имя2,Фам2,Курс2,Гор2),человек(Имя3,Фам3,Курс3,Гор3),человек(Имя4,Фам4,Курс4,Гор4)], 
            
            имеет_фамилию(Студент11,теркин),учится_на_курсе(Студент11,первый),
            зовут(Студент21,николай),учится_на_курсе(Студент21,второй),живет(Студент21,екатеринбург),
            зовут(Студент31,олег),учится_на_курс_выше(Студент31,Студент32,Студенты),имеет_фамилию(Студент32,рудин),живет(Студент32,калуга),
            зовут(Студент41,петр),живет(Студент41,москва),
            имеет_фамилию(Студент51,самарин),живет(Студент51,москва).
 
            GOAL
%   ищем_решение(Студенты).        /* Проверка всех генерируемых вариантов  */
    ищем_решение(Студенты), 
    входит_в(Первый_Студент,Студенты),
        имеет_фамилию(Первый_Студент, рудин),зовут(Первый_Студент,Рудина_зовут),учится_на_курсе(Первый_Студент,Рудин_учится_на_курсе);
        
    ищем_решение(Студенты), 
    входит_в(Второй_Студент,Студенты),
        имеет_фамилию(Второй_Студент, самарин),зовут(Второй_Студент,Самарина_зовут),учится_на_курсе(Второй_Студент,Самарин_учится_на_курсе);
        
       ищем_решение(Студенты), 
        входит_в(Третий_Студент,Студенты),
        имеет_фамилию(Третий_Студент, уткин),зовут(Третий_Студент,Уткина_зовут),учится_на_курсе(Третий_Студент,Уткин_учится_на_курсе);
        
        ищем_решение(Студенты), 
        входит_в(Четвертый_Студент,Студенты),
        имеет_фамилию(Четвертый_Студент, теркин),зовут(Четвертый_Студент,Теркина_зовут),учится_на_курсе(Четвертый_Студент,Теркин_учится_на_курсе).

Не получается задать список (интерпретировать учится_на_курс_выше...), и в генерации гипотезы упорядочить студентов по курсу.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.05.2012, 18:42
Ответы с готовыми решениями:

Задача про студентов(вывести отличников) VisualProlog 5.2 - Prolog
Вывести отличников.Как записать правило для вывода отличников domains фио=string группа,дисциплина = symbol ...

Visual Prolog. Задача про списки
Имеется список. Нужно удалить только 5-ый элемент этого списка, остальные оставить без изменения!

Задача про 16-ричные числа на Visual Prolog 5.2
Доброго времени суток, ребята. Прошу помочь в решении задачи. Даны два файла: в первом одно 16-ричное число, во втором - другое....

1
 Аватар для Грымзик
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
18.05.2012, 00:09
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
DOMAINS
   
    имя,фамилия,город = symbol
    курс=integer
    студент =человек(имя,фамилия,курс,город)
    список_студентов = студент*
PREDICATES
    nondeterm входит_в(студент,список_студентов)
    nondeterm возможное_имя(имя)
    nondeterm возможная_фамилия(фамилия)
    nondeterm возможный_курс(курс)
    nondeterm возможный_город(город)
 
    
    nondeterm ищем_решение(список_студентов) 
    
CLAUSES
    входит_в(Студент,[Студент|_]).
    входит_в(Студент,[_|Хвост_Списка_Студентов]):-входит_в(Студент,Хвост_Списка_Студентов).
        
    возможное_имя(николай).
    возможное_имя(михаил).
    возможное_имя(олег).
    возможное_имя(петр).
    возможная_фамилия("рудин").
    возможная_фамилия("самарин"). 
    возможная_фамилия("уткин").
    возможная_фамилия("теркин").
    возможный_курс(1).
    возможный_курс(2).
    возможный_курс(3).
    возможный_курс(4).
    возможный_курс(5).
    возможный_город("москва").
    возможный_город("екатеринбург").
    возможный_город("калуга").
 
 
ищем_решение(Студенты):-         /*  Генерация гипотезы    */
        возможная_фамилия(Фам1), возможная_фамилия(Фам2),not(Фам1=Фам2),
        возможная_фамилия(Фам3),not(Фам1=Фам3),not(Фам2=Фам3),
        возможная_фамилия(Фам4),not(Фам1=Фам4),not(Фам2=Фам4),not(Фам3=Фам4),
        Курс1=2, возможный_курс(Курс2),not(Курс1=Курс2),
        возможный_курс(Курс3),not(Курс1=Курс3),not(Курс2=Курс3),
        возможный_курс(Курс4),not(Курс1=Курс4),not(Курс2=Курс4),not(Курс3=Курс4),
        Гор1="екатеринбург",
        возможный_город(Гор2),возможный_город(Гор3),
        Гор4="москва",
        Студенты=[человек("николай",Фам1,Курс1,Гор1),человек("михаил",Фам2,Курс2,Гор2),
        человек("олег",Фам3,Курс3,Гор3),человек("петр",Фам4,Курс4,Гор4)], 
        входит_в(человек(_,"теркин",1,_),Студенты),
        входит_в(человек(_,"рудин",КурсРудина,"калуга"),Студенты),Курс3=КурсРудина+1,
        входит_в(человек(_,"самарин",_,"москва"),Студенты).
 
            GOAL
   ищем_решение(Студенты).        /* Проверка всех генерируемых вариантов  */
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.05.2012, 00:09
Помогаю со студенческими работами здесь

Логическая задача про котят Visual Prolog 9
Имеется четыре котенка – Дружок, Елисей, Фантик и Мурлыка и четыре мальчика – Миша, Максим, Леня и Дима. Каждый мальчик взял себе котенка...

Задача про ботинки и их стоимость на visual prolog 5.2
Помогите пожалуйста решить задачу по прологу Когда через реку имени королевы Рейчел был построен мост, она решила взимать плату за проход...

Strawberry Prolog. про студентов на велосипедах
собсно что нужно сделать: Пятеро студентов едут на велосипедах. Их зовут Сергей, Борис, Леонид, Григо- рий и Виктор. Велосипеды...

[Turbo Prolog] [Visual Prolog] Задача на рекурсию
Здравствуйте, помогите, пожалуйста, с такой задачей... Имеется горсть из N Монет C1,C2,....,Cn различного достоинства. Определить,...

Решение логической задачи про птиц на Visual Prolog 5.2
Доброго времени суток! Очень нужна помощь в решении задачи. В одном городе живут семь любителей птиц. И фамилии у них птичьи....


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru