На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> Помогите пожалуйста! , Sos!
    Задачки легки, просто я не понимаю пролог после С++ :yes-sad: и полоса у меня в жизни не светлая пошла, да и сессия, курсовик, все в раз поставили, поэтому вся надежда только на вас!:(
    1.Создайте предикат, находящий предпоследний элемен списка (список одноуровневый).
    2.Создайте предикат, который будет находить последнию позицию вхождения данного элемента в список.
    3.Предикат delev2 для разбивки списка на уровни. Пример: исходный список [a,b,c] результирующий список [[[a],b],c].
    4.Предикат delev1 для уничтожения уровней в списке. Пример: исходный список [a,[b,[c]]], результирующий список [a,b,c].
    Предикат intersect для пересечения двух множеств.
      Решения :

      3. разбивка списка на уровни, прим. [a,b,c] - [a,[b,[c]]]
      split([H|[]],[H]).
      split([H|T],[H|[T1]]):-split(T,T1).
      (Правда для сложных случ. по типу [[a|b]|[c|d]] не будет обработки.)

      4. линеаризация(уничтожение многоуровневости списка к пр. [a,[b,[c]]] - [a,b,c])
      lineariz([H|T],L1):-lineariz(H,LS),lineariz(T,LS2),!,union_lists(LS,LS2,L1).
      lineariz([],[]).
      lineariz(H,[H]).
      (а вот здесь любая сложность списка ни по чем)


      обьединение списков
      union_lists([],L,L).
      union_lists([H1|T1],L,[H1|T3]):-union_lists(T1,L,T3).

      обращение списка
      reverse1([], []).
      reverse1([H|T],Z):-reverse1(T,S),union_lists(S,[H],Z).

      отношение принадлежности элемента списку
      elem(H,[H|_]).
      elem(H,[_|T]):-elem(H,T).

      пересечение двух списков
      inters([],_,[]).
      inters([H|T1],L,[H|T3]):-elem(H,L),!,inters(T1,L,T3).
      inters([H|T],L,L2):-inters(T,L,L2).
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0174 ]   [ 15 queries used ]   [ Generated: 2.05.24, 16:02 GMT ]