% A quiz team structure takes the form:
% team(Captain, Vice_captain, Regular_team_members).
% Captain and Vice_captain are player structures;
% Regular_team_members is a list of player structures.
% player structures take the form:
% player(First_name, Surname, details(Speciality,Recent_score)).
team(player(niall,elliott,details(history,11)),
player(michelle,cartwright,details(fashion,19)),
[player(peter,lawlor,details(science,12)),
player(louise,boyle,details(current_affairs,17))]).
Мне была предоставлена база данных выше (я не копировал все записи людей, как это было бы слишком долго).Запрос на знание Prolog
Меня попросили получить фамилию любого вице-капитана, в команду которого входит капитан или член регулярной команды, чья специальность - наука.
Я могу получить фамилию вице-капитанов, используя приведенный ниже код, но я не могу вернуть только те команды, которые включают капитана или членов регулярной команды, специальность которых - наука. Что мне нужно добавить, чтобы сделать это?
part_two(Surname):-
team(_,player(_,Surname,_),_).
Я также попросил, чтобы также получить имя и фамилию любого капитана, чьи регулярные члены группы насчитывают более одного, и кто все имеют одинаковые фамилии.
Это моя попытка до сих пор:
part_three(First_name,Surname):-
team(Captain,_,Regular_team_members),
first_name(Captain,First_name),
surname(Captain,Surname),
Regular_team_members=[_,_|_].
Мне просто нужно, чтобы исключить детали этих капитанов, чьи регулярные члены команды не все имеют одинаковую фамилию.
Если первые 2 команды являются капитаном и вице-капитаном автоматически, как команда не может содержать капитана? – BitTickler
@BitTickler Я просто пропустил детали капитана, поскольку мне нужны были только детали вице-капитана. – Dazzler95