На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Страницы: (7) « Первая ... 2 3 [4] 5 6 ... Последняя » все  ( Перейти к последнему сообщению )  
> адача на Turbo Prolog
    Цитата Ya-Feya @
    Помогите с программой, которая обрабатывает элементы списка.
    Исходный список вводится пользователем и содержит целые числа (за исключением 0). Признаком конца ввода является ввод 0.
    Программа должна из введенного списка
    а)получить новый список, каждый элемент которого на 1 больше соответствующего элемента введенного списка;
    б) получить новый список удалив из исходного списка все отрицательные элементы.
    Полученные списки поэлементно распечатать.

    ExpandedWrap disabled
      domains
      list=integer*
       
      predicates
      inpp(list)
      print(list)
      p1(list,list)
      p2(list,list)
       
      goal
      write("Input list "),inpp(L),
      p1(L,L1),p2(L,L2),
      print(L1),nl,nl,print(L2).
       
      clauses
      inpp([H|T]):-
        readint(H),H<>0,!,
        inpp(T).
      inpp([]).
       
      print([]):-!.
      print([H|T]):-
        write(H),nl,print(T).
        
      p1([],[]):-!.
      p1([H|T],[H1|T1]):-
         H1=H+1,
         p1(T,T1).  
       
      p2([],[]):-!.
      p2([H|T],[H|T1]):-
         H>0,!,
         p2(T,T1).
      p2([H|T],T1):-
         p2(T,T1).


    Добавлено
    Цитата jekahm @
    Помогите, пожалуйста, решить такую вот задачку:
    Найти число решений логической задачи о расстановке ферзей для доски 8 на 8, при условии, что в квадрате 2.2 и 4.3 есть один ферзь.
    Заранее благодарен!

    Эта задача и в инете есть решённая, и в разделе. В разделе, по-моему, задача о расстановке махараджей. Там и расстановка ферзей обсуждалась.
      Спасибо большое!
        Надо найти номера элементов в списке(т.е. по эл-там найти номера.)

        n_element([X|_],1,X)-!.
        n_element([_|L],N,Y):–
        N1=N–1,
        n_element(L,N1,Y).

        он ругается что N - свободная переменная=((

        как исправить ошибку?
          Что является входными данными?
          Задан список и задан один элемент, найти его номер?
            да, или номера (если эл-т встречается несколько раз).
              ExpandedWrap disabled
                domains
                list=integer*
                predicates
                num(list,integer,integer)
                 
                clauses
                 num([X|_],X,1).
                 num([_|T],X,N):-
                   num(T,X,N1),
                   N=N1+1.
                 
                goal
                 findall(N,num([2,2,3,2,2],2,N),L),write(L).
                Помогите написать предикат для вычисления моды списка!!

                P.S. Мода — это число, чаще всех встречающееся в наборе чисел. Например, мода набора чисел 2, 3, 3, 5, 7 и 10 будет равна 3.
                  ExpandedWrap disabled
                    domains
                    list=integer*
                     
                    predicates
                    moda(list,integer,integer)
                    count(integer,list,integer)
                    del(integer,list,list)
                    max(integer,integer,integer,integer,integer,integer)
                     
                    clauses
                     moda([X],X,1):-!.
                     moda([H|T],M,N2):-
                       count(H,[H|T],N),
                       del(H,T,T1),
                       moda(T1,X,N1),
                       max(H,N,X,N1,M,N2).
                     
                     count(X,[],0):-!.
                     count(X,[X|T],N):-
                       count(X,T,N1),
                       N=N1+1.  
                     count(X,[H|T],N):-
                       count(X,T,N).  
                     
                     del(X,[],[]):-!.
                     del(H,[H|T],T1):-
                       del(H,T,T1).
                     del(X,[H|T],[H|T1]):-
                       del(X,T,T1).    
                     
                     max(X1,N1,X2,N2,X1,N1):-
                       N1>=N2,!.
                     max(X1,N1,X2,N2,X2,N2).    
                      
                     
                    goal
                      moda([2,2,3,2,3,2],X,N),write(X," ",N).
                    Спасибо большое!!
                      Здравствуйте,помоги пожалуйста....
                      1)Описать предикат Р(list1, list2), который истинен,если list1 состоит из повторяющихся более 3 раз элементов списка list2.
                      2)Определить предикат Р(list1, list2), который истинен,если list2 состоит из элементов списка list1, входящих в него наибольшее количество раз.
                      Помогите пожалуйста,тяжко с Прологом!!!
                        На ТурбоПрологе?
                        Цитата
                        2)Определить предикат Р(list1, list2), который истинен,если list2 состоит из элементов списка list1, входящих в него наибольшее количество раз.

                        Не поняла заданье. Покажи на примере.
                          например: list1 [1,2,4,1,5,1,2,2], list2 [1,2], элементы "1" и "2" входят по 3 раза в список 1, а список 2 состоит как раз из этих элементов, тогда ответ: да
                            Первое заданье

                            ExpandedWrap disabled
                              domains
                              li=integer*
                               
                              predicates
                              p(li,li)
                              count(integer,li,integer)
                               
                              goal
                              clearwindow,
                              p([2,1],[3,2,1,2,1,2,1,3]), write("yes");
                              write("no").
                               
                              clauses
                               
                               
                              p([],_):-!.
                              p([H|T],L):-
                                count(H,L,N),!,
                                N>=3,
                                p(T,L).
                               
                              count(X,[],0):-!.
                              count(H,[H|T],N1):-
                                count(H,T,N),
                                N1=N+1.
                              count(X,[H|T],N):-
                                count(X,T,N).
                              Второе

                              ExpandedWrap disabled
                                domains
                                li=integer*
                                 
                                predicates
                                count(integer,li,integer)
                                del(integer,li,li)
                                max(li,integer)
                                p2(li,li)
                                 
                                goal
                                clearwindow,
                                p2([3,2,1,2,1,2,1,3,1],[1]), write("yes");
                                write("no").
                                 
                                 
                                clauses
                                p2(_,[]):-!.
                                p2(L,[H|T]):-
                                  max(L,N),!,
                                  count(H,L,N),
                                  p2(L,T).
                                 
                                max([],0):-!.
                                max([H|T],N):-
                                  count(H,[H|T],N1),
                                  del(H,T,T1),
                                  max(T1,N),
                                  N>=N1.
                                max([H|T],N):-
                                  count(H,[H|T],N).  
                                 
                                del(_,[],[]):-!.
                                del(H,[H|T],T1):-
                                  del(H,T,T1),!.
                                del(X,[H|T],[H|T1]):-
                                  del(X,T,T1).  
                                 
                                count(X,[],0):-!.
                                count(H,[H|T],N1):-
                                  count(H,T,N),
                                  N1=N+1.
                                count(X,[H|T],N):-
                                  count(X,T,N).
                                Спасибо огромное!!!
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0696 ]   [ 14 queries used ]   [ Generated: 17.05.24, 12:08 GMT ]