/*Многоугольники пропуск цветов, спектр повторяется*/
%База данных многоугольников
polygon(triangle,red,3,5).
polygon(triangle,orange,3,6).
polygon(square,yellow,4,7).
polygon(pentagon,orange,5,7).
polygon(septagon,red,7,12).
polygon(treagon,margenta,14,22).
polygon(hexagon,green,6,10).
polygon(square,green,4,13).
polygon(kvantagon,margenta,9,15).


%База данных цветов Радуги
rainbow_db(red,orange).
rainbow_db(orange,yellow).
rainbow_db(yellow,green).
rainbow_db(green,lightblue).
rainbow_db(lightblue,blue).
rainbow_db(blue,margenta).

rainbow_(A,B):-
	rainbow_db(A,B).
rainbow_(A,B):-
	rainbow_db(A,C),
	rainbow_(C,B).
rainbow(A,B):-
	rainbow_(A,B).
rainbow(margenta,red).

%следующий_многоугольник(+цвет_послед,
%                  -обозн_иском_следа,
%                  -цвет_след,
%                  +плотность_послед, -плотность_нового)


next_polygon(S,Cp,Next,Cpnn,Pol,Polnn,SNext):-
	rainbow(Cp,Cpn),	     
	polygon(Next,Cpnn,Polnn,SNext),
	SNext>=S.
	
%добавление_многоугольник(+цвет_послед,
%                   +кол-во гРаней,
%                   -СПИСOK,Temp)
polygon_add(S,Cp,Pol,[(Next,Cpn,SNext)|T],T1):-
	next_polygon(S,Cp,Next,Cpn,Pol,Poln,SNext),
	not find(T1,Next),
	polygon_add(SNext,Cpn,Poln,T,[Next|T1]),!.
polygon_add(S,Cp,Pol,[],T1).


%МногоУГОЛЬНИКИ(?самый_пеРвый, -Список)
main(Gon,[(Gon,Cp,S)|L]):-
	polygon(Gon,Cp,Pol,S),
	polygon_add(S,Cp,Pol,L,[Gon]).

%Поиск заданого элемента в списке	
%find(+List,+El)
find([H|T],H).
find([H|T],El):-
	find(T,El).
/* *********************************************************************** */
main11(Ch):-
	findall(L,main(X,L),[Stand|L_ch]),
	length(Stand,N),
	max_level(L_ch,N,[Stand],Ch),!.
%
max_level([],_,L,L).
max_level([H|T1],Num,L2,Ch):-
	length(H,Num2),
	Num2>Num,
	max_level(T1,Num2,[H],Ch).
max_level([H|T1],Num,L2,Ch):-
	length(H,Num2),
	Num2=Num,
	max_level(T1,Num,[H|L2],Ch).
max_level([_|T1],Num,L2,Ch):-
	max_level(T1,Num,L2,Ch).

