%% find_object(Descriptions,Area,Identity) %% Finds an object's number for an object with a certain Area from Descriptions, which is a list of object number, bottom-left corner and top-right corner %% find_object([[0,[0,0],[1,1]],[1,[0,2],[1,4]]],1,Identity). %% Identity = 0; find_object(Descriptions,Area,Identity) :- find_areas(Descriptions,[],Areas), member([Identity,Area],Areas). %% find_areas(Descriptions,Areas1,Areas2) %% Calculates the areas of object described in Descriptions, adds them to Areas1 and %% returns Areas2 find_areas([],Areas,Areas). find_areas([[Identity,[X1,Y1],[X2,Y2]]|Descriptions],Areas1,Areas2) :- Area is (X2-X1)*(Y2-Y1), append(Areas1,[[Identity,Area]],Areas3), find_areas(Descriptions,Areas3,Areas2).