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

Мужчины и Женщины. Рекурсия

31.10.2012, 18:38. Показов 1184. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Коллеги, помогите с решением задачки. Имеется 2 списка мужчин и женщин: Имя, Возраст.
Нужно рядом с каждым мужчиной вывести имя женщины, разница возраста которых минимальна.
Всю голову сломал, не умею правильно организовать рекурсию на этом языке (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
DOMAINS
    name = string
    age = integer
    listage = age*
    listname = name*
 
PREDICATES
    nondeterm man(name, age)
    nondeterm woman(name, age)
    nondeterm execute
    nondeterm findman(listname)
    nondeterm findwoman(listname, age, name, age)
    nondeterm findwomanr(listname, age, name, age)
 
CLAUSES
    woman("Galina", 23).
    woman("Katerina", 31).
    woman("Dasha", 21).
    woman("Nelly", 27).
    woman("Aleksandra", 18).
 
    man("Aleksey", 18).
    man("Vladimir", 23).
    man("Sergey", 21).
    man("Petr", 31).
    man("Trofim", 27).
 
    findwomanr([], _, _, _).
    findwomanr([X|Rest], Age, WomanName, WomanAge):-
        woman(X, Y), D=abs(Y-Age),
        D>=WomanAge,
        write("Skip ", X, ", ", Y), nl,
        findwomanr(Rest, Age, WomanName, WomanAge).
    findwomanr([X|Rest], Age, WomanName, WomanAge):-
        woman(X, Y), D=abs(Y-Age),
        D<WomanAge,
        WomanName=X,
        WomanAge=Y,
        write("Select ", X, ", ", Y, ", ", D), nl,
        findwomanr(Rest, Age, WomanName, WomanAge).
        
    findwoman([X|Rest], Age, WomanName, WomanAge):-
        woman(X, Y),
        WomanName=X,
        WomanAge=Y,
        findwomanr(Rest, Age, WomanName, WomanAge).
        
    
    findman([]).
    findman([X|Rest]):-
        man(X, Y),                      /* Определяем мужчину, его имя и возраст */
        write("Man ", X, ", Age ", Y), nl,          /* Выводим на экран */
        findall(Name, woman(Name, _), W),           /* Создаем список всех женщин и поместим его в W */
        findwoman(W, Y, WomanName, WomanAge),               /* Найти женщину из списка W с возрастом, близкому к Y, результат - имя в WomanName */
        write(" Woman ", WomanName, ", ", WomanAge), nl,
        findman(Rest).
 
    execute:-
        findall(Name, man(Name, _), M),             /* Создадим список всех мужчин и поместим его в M */
        findman(M).
 
GOAL
    execute.
Программа выводит:
Man Aleksey, Age 18
no
Заранее спасибо
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.10.2012, 18:38
Ответы с готовыми решениями:

Женщины и мужчины за круглым столом
Уже как пол дня не могу эту задачу решить. Притом что похожих нет. Голова кипит. Может подскажите? Три женщины и семь мужчин сидят за...

Что хотят женщины от мужчины
Что хотят женщины от мужчины, в возрасте 22 Красивый Очаровательный Материально успешный Внимательный слушатель ...

Теория вероятности: мужчины и женщины
Известно , что 5 % всех мужчин и 0,25 % всех женщин дальтоники . Наугад выбранная лицо - дальтоник . Какова вероятность того , что это...

1
0 / 0 / 0
Регистрация: 02.03.2017
Сообщений: 9
02.11.2012, 10:04
Вопрос снят. Решил по-другому.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.11.2012, 10:04
Помогаю со студенческими работами здесь

Толковая литература об отношениях мужчины и женщины
Когда-то искал литературу об отношениях, чтобы лучше понять, как понравится девушке, и т.п. И честно говоря так и не нашел. В многих...

Не вижу смысла совместного времяпрепровождения мужчины и женщины
Melodie, вообще не вижу смысла совместного времяпровождения между мужчиной и женщиной, если это не секс и не выращивание детей. У...

Определение фамилии мужчины и женщины, имеющих наименьшую зарплату
Создать текстовый файл с записями фиксированной длины. Файл содержит информацию о 8 сотрудниках фирмы (фамилия, зарплата, пол). ...

Мужчины и женщины: Мы такие разные… И все-таки мы вместе!
Мужчины и женщины: Мы такие разные… И все-таки мы вместе! Господь создал нас мужчинами и женщинами – существами различными не...

Определить фамилии мужчины и женщины, имеющих самую маленькую зарплату
Помогите решить задачу. Известны данные о 20 сотрудниках фирмы (фамилия, зарплата и пол). Определить фамилии мужчины и женщины, ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru