/*Многоугольники пропуск цветов, спектр повторяется*/ %База данных многоугольников 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).