Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2011, 01:23   #1
gucul
Новичок
Джуниор
 
Регистрация: 22.12.2011
Сообщений: 1
По умолчанию Prolog(Сборные конструкции)

SWI-Prolog
Здравствуйте...Помогите пожалуйста с задачкой:
Составить букет из нечетного количества цветов, соблюдая следущие условия:
1)В букете могут встречаться два и более цветка одного цвета, если они разного сорта.
2)Последовательность подбора растений должна соответствовать одной из двух последвательностей:
- розовый красный оранжевый желтый
- голубой синий фиолетовый
3)Максимальное количество цветов первой последовательности - 7, второй - 9.
4) Допускаются пропуски нескольких цветов
Написать программу формирования сборной конструкции. Создать базу данных которая представляет сборные компоненты. Информации в БД должно быть достаточно для формирования нескольких решений.

----------------------------------------------------------------------
Есть мой код, в котором создана БД, есть пропуски цветов, и *вроде как* учтена нечетность количества ( Берем первый элемент, далее выбираем по два и проверяем условия, таким образом количество будет нечетным. )

%%% Data Base
plants_db_filling:-
recordz(plant,(r1,a,red)), %Idetifier, Sort, Colour
recordz(plant,(r2,a,orange)),
recordz(plant,(r3,b,orange)),
recordz(plant,(r4,c,yellow)),
recordz(plant,(r5,d,pink)),
recordz(plant,(r6,e,lightblue)),
recordz(plant,(r7,e,blue)),
recordz(plant,(r8,f,cyan)),
recordz(plant,(r9,g,cyan)),
recordz(plant,(r10,b,orange)),
recordz(plant,(r11,b,yellow)).

%Yslovia sledovania cvetov-------------------------
% ?Colour, ?Next Colour
folow(pink,red).
folow(red,orange).
folow(orange,yellow).
folow(lightblue,blue).
folow(blue,cyan).
%--------------------------

%Podkluchenie BD--------------
% - Multyring
main(Mult):-
recorded(plant,_),
!,
main1(Mult).
main(Mult):-
plants_db_filling,
main1(Mult).
%------------------------------

main1([First|Plants]):-
recorded(plant,(First,_,C)),
add_plant(_,C,Plants).

add_plant(_,C,[First,Next|Plants]):-
next_colour(C,C1),
next_colour(C1,C2),
recorded(plant,(First,_,C1)),
recorded(plant,(Next,P2,C2)),
add_plant(P2,C1,Plants).

add_plant(_,C,[]):-
\+ (next_colour(C,C1),
next_colour(C1,C2),
recorded(plant,(_,_,C1)),
recorded(plant,(_,_,C2))).

%Sobludenie usloviy sledovaniya
next_colour(C,C1):-
folow(C,C1).
%Uslovie propuska cvetov
next_colour(C,C1):-
folow(C,Cp),
next_colour(Cp,C1).
gucul вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Интересные конструкции с++ Sparky Помощь студентам 6 13.10.2011 22:47
циклические конструкции nex 9119 Помощь студентам 1 18.12.2010 17:34
селективные конструкции (switch) Ste Общие вопросы C/C++ 9 04.12.2010 17:05
Вопрос по конструкции if() С++ ROD Помощь студентам 2 20.12.2008 20:14