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

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

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

Author24 — интернет-сервис помощи студентам
Коллеги, помогите с решением задачки. Имеется 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 2
Вопрос снят. Решил по-другому.
0
02.11.2012, 10:04
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.11.2012, 10:04
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Rust или Go? А может C++?
hw_wired 28.01.2025
С каждой новой технологией или методологией появляются новые языки программирования, призванные решать конкретные задачи либо улучшать аспекты производительности и безопасности. Среди множества. . .
Fortran и WinAPI: как создать приложение с графическим интерфейсом
hw_wired 28.01.2025
Fortran — это один из старейших высокоуровневых языков программирования, широко используемый в науке и инженерии уже несколько десятилетий. Его название происходит от "Formula Translation" (перевод. . .
Списки в Haskell
hw_wired 28.01.2025
Haskell является функциональным языком программирования, который отличается лаконичностью синтаксиса и мощными абстракциями. Важным концептом в Haskell являются списки — упорядоченные коллекции. . .
Функции высшего порядка в Haskell
hw_wired 28.01.2025
Haskell – это современный функциональный язык программирования, который получил широкое распространение благодаря своей выразительности и мощным абстракциям. Одной из ключевых особенностей Haskell. . .
Как в цикле обойти все поля объекта в JavaScript
bytestream 28.01.2025
Объекты в JavaScript представляют собой фундаментальные структуры данных, которые позволяют хранить и организовывать связанную информацию в виде пар ключ-значение. Каждый объект можно представить как. . .
Как выбрать строки в DataFrame по значению столбца в Pandas
bytestream 28.01.2025
В области анализа данных библиотека Pandas стала незаменимым инструментом для работы с табличными данными в Python. Эта мощная библиотека предоставляет множество функций для эффективной обработки и. . .
Как сделать перенос строки в Bash
bytestream 28.01.2025
При работе с командной оболочкой Bash разработчики часто сталкиваются с необходимостью форматирования текстового вывода, где ключевую роль играет правильное управление переносами строк. Умение. . .
Поиск подстроки в строке с помощью Bash
bytestream 28.01.2025
Поиск подстроки в строке является одной из важных задач в программировании и обработке текстов. Применение такого поиска можно найти в самых разных областях, от анализа данных до разработки. . .
[golang] 169. Majority Element
alhaos 28.01.2025
Тут надо вернуть "мажористый" элемент который встречается в слайсе больше чем в половине случаев. По условиям задачи во входных данных такой элемент обязан присутствовать. / / . . .
Когда лучше использовать LinkedList вместо ArrayList в Java
bytestream 28.01.2025
При разработке Java-приложений выбор правильной структуры данных играет ключевую роль в обеспечении эффективности и производительности программы. ArrayList и LinkedList являются двумя. . .
Какой ответ HTTP лучше использовать: 403 Forbidden или 401 Unauthorized, когда недостаточно прав
bytestream 28.01.2025
В современной веб-разработке правильная обработка ошибок и точное информирование клиентов о статусе их запросов играют критическую роль в создании надежных и безопасных приложений. Особое внимание. . .
Как получить список всех файлов коммита в Git
bytestream 28.01.2025
Система контроля версий Git представляет собой мощный инструмент для управления изменениями в программном коде и других файлах проекта. В основе работы Git лежит концепция коммитов - снимков. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru