Я хочу написать функцию жителей (Housenumber, N), которая
(1) дает мне количество жителей на дом с учетом номера дома
И
(2) когда Housenumber является переменной, можно отследить все резидентские числа для каждого номера дома.
Приведены следующие факты в форме резидента (имя, фамилия, Housenumber).
resident('Tim','Cook',1).
resident('Elisabeth','Cook',1).
resident('Thomas','Cook',1).
resident('George','Cook',1).
resident('Steve','Jobs',2).
resident('Lisa','Jobs',2).
resident('Karen','Jobs',2).
resident('Mark','Zuckerberg',3).
resident('Priscilla','Zuckerberg',3).
Второе условие должно работать следующим образом:
residents(X,N).
X = 1,
N = 4,
X = 2,
N = 3,
X = 3,
N = 2.
Я попробовал следующую попытку.
residents(X,N):-
findall(X,resident(_,_,X),L),
length(L,N).
Первое условие удовлетворено, однако второе условие дает мне общее количествоколичество всех жителей, не сгруппированных по каждому дому.Я также пытался использовать bagof и setof предикатов, но это не помогло.Большое спасибо за любую помощь.