Добавить Предикат Sublist. Пролог(5.2)

Тема в разделе "Другие задачи", создана пользователем KalinaK, 30 окт 2013.

  1. KalinaK

    KalinaK New Member

    Регистрация:
    30 окт 2013
    Сообщения:
    2
    Симпатии:
    0
    Разработать правила для предиката, реализовать указанную цель на прологе(5.2)

    Всем привет! У меня версия пролог 5.2 и задание состоит в том, чтобы к нижеприведенной задаче добавить предикат sublist( SubL,L ), здесь SubL,L списки.
    Предикат истеннен если: список SubL является подсписком списка L.
    Пример: [s,d,s],[a,s],[d,s,f],[ ], [a,s,d,s,f] – подсписки [a,s,d,s,f] (не все).
    Цель – sublist ( SL, [a,s,d,f] ).

    /****************LISTS*******************/

    DOMAINS
    p=string
    x=integer
    l_p=p*
    l_x=x*

    PREDICATES
    member(p,l_p)
    delete(p,l_p,l_p)
    append(l_p,l_p,l_p)
    reverse(l_p,l_p)
    reverse(l_p,l_p,l_p)
    print_list(l_p)
    generate(x,x,l_x)


    CLAUSES

    member(X,[X|_]).
    member(X,[_|L]):-
    member(X,L).

    delete(A,[A|L],L).
    delete(A,[B|L],[B|L1]):-
    delete(A,L,L1).


    append([],L,L).
    append([A|L],L1,[A|L2]):-
    append(L,L1,L2).

    reverse([],[]).
    reverse([A|L],L1):-
    reverse(L,L2),
    append(L2,[A],L1).

    reverse([],L,L).
    reverse([A|L],L1,L2):-
    reverse(L,[A|L1],L2).
    print_list([]).
    print_list([A|L]):-
    write(A),nl,
    print_list(L).
    generate(N,N,[N]).
    generate(M,N,[M|T]):-
    M<N,
    M1=M+1,
    generate(M1,N,T).
     
  2. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    ICQ 395-546-218
    skype rrrfer.rrrfer
    платно, конечно.
     
Загрузка...

Поделиться этой страницей