На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> Prolog, списки
    Подскажите пожалуйста, как решить поставленную задачу:
    "Определить предикат для объединения элементов двух списков, находящихся в диапазоне от N1 до N2"
    т.е. я ввожу 2 списка, например: [1,2,3,4,5] и [3,4,5,6] затем ввожу N1=2 и N2=4.
    И должен получиться следующий список:[2,3,4,3,4].
    есть код по объединению двух списков
    ExpandedWrap disabled
      domains
      int=integer
      intl=integer*
       
      predicates
       
      inters(intl,intl,intl)
       
      clauses
       
      inters([],L2,L2).
      inters([H|T1],L2,[H|T2]):- inters(T1,L2,T2).
       
      goal
      inters([1,2,3,4,5],[5,7,8,9,10],L),write(L),nl.
    Сообщение отредактировано: Астр0 -
      Цитата Астр0 @
      т.е. я ввожу 2 списка, например: [1,2,3,4,5] и [3,4,5,6] затем ввожу N1=2 и N2=4.
      И должен получиться следующий список:[2,3,4,3,4].

      Нет, должен получиться список [2,3,4,4,5,6].

      ExpandedWrap disabled
        domains
        list = integer*
         
        predicates
        conc(list,list,list)
        sublist(integer,integer,integer,list,list)
         
        goal
        clearwindow,A=2,B=4, sublist(A,B,1,[1,2,3,4,5],L1),
        sublist(A,B,1,[3,4,5,6],L2),conc(L1,L2,L),write(L).
         
        clauses
         
        conc([], L, L).
        conc([H|T], L, [H|T1]):-
        conc(T,L,T1).
         
        sublist(_,_,_,[],[]):-!.
         
        sublist(N1,N2,N,[H|T],[H|T1]):-
          N>= N1, N<=N2,!,
          NN=N+1,
          sublist(N1,N2,NN,T,T1).
         
        sublist(N1,N2,N,[H|T],T1):-
          NN=N+1,!,
          sublist(N1,N2,NN,T,T1).
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0186 ]   [ 15 queries used ]   [ Generated: 30.05.24, 22:30 GMT ]