На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Страницы: (7) « Первая ... 4 5 [6] 7  все  ( Перейти к последнему сообщению )  
> адача на Turbo Prolog
    помогите пожалуйста с турбопрологом :wall:
    Для произвольных чисел a,b,c, определить количество действительных корней уравнения.
      Помогите переделать код, чтобы было 2 игрока, а не игрок и компьютер. турбо пролог 2.0
      Мною это непостижимо...

      [HIGHLIGHT="prolog"]database
      db(integer,integer,symbol)
      Predicates
      predicates
      pole
      go(integer,symbol,symbol)
      protect(symbol,symbol)
      type(integer,symbol)
      etc(symbol,symbol)
      goal
      write("who starts?"),nl, write("1 - I, 0 - Computer."),
      readint(Who),write("type?"),nl,write("1 - X, 0 - O."),
      readint(What),type(What,I1),etc(I1,I2),go(Who,I1,I2),!,
      nl,nl; write("Error."),nl.
      clauses
      db(1,1,"-"). db(1,2,"-"). db(1,3,"-"). db(2,1,"-").db(2,2,"-").
      db(2,3,"-"). db(3,1,"-"). db(3,2,"-"). db(3,3,"-").

      type(1,x). type(0,o). etc(x,o). etc(o,x).

      go(0,Comp,_):- protect(Comp,Comp),!,pole,nl,write("You are a loser.").
      go(0,Comp,You):- protect(Comp,You),!,pole,go(1,You,Comp).
      go(0,Comp,You):- retract(db(2,2,"-")),!,assert(db(2,2,Comp)),
      pole,go(1,You,Comp).
      go(0,Comp,You):- db(R,St,"-"), (R+St) mod 2=0,retract(db(R,St,"-")),!,
      assert(db(R,St,Comp)),pole,go(1,You,Comp).
      go(0,Comp,You):- retract(db(R,St,"-")),!,assert(db(R,St,Comp)),
      pole,go(1,You,Comp).
      go(1,You,Comp):- db(_,_,"-"),write("next:","line (ot 1 do 3): "),
      readint®,R>0,R<4,write("column (ot 1 do 3): "),
      readint(St),St>0,St<4,retract(db(R,St,"-")),!,
      assert(db(R,St,You)),go(0,Comp,You).
      go(_,_,_):- not(db(_,_,"-")),nl,write("Draw.").

      protect(Comp,You):- db(N1,St,You),db(N2,St,You),N1<>N2,
      retract(db(N3,St,"-")),!,assert(db(N3,St,Comp));
      db(R,N1,You),db(R,N2,You),N1<>N2,retract(db(R,N3,"-")),!,
      assert(db(R,N3,Comp));
      db(I,I1,You),I=I1,db(J,J1,You),J=J1,I<>J,db(K,K1,"-"),K=K1,
      retract(db(K,K1,"-")),!,assert(db(K,K1,Comp));
      db(I,J,You),I+J=4,db(N,K,You),N<>I,N+K=4,db(M,L,"-"),M+L=4,
      retract(db(M,L,"-")),!,assert(db(M,L,Comp)).

      pole:- db(1,1,S1),db(1,2,S2),db(1,3,S3),db(2,1,S4),db(2,2,S5),
      db(2,3,S6),db(3,1,S7),db(3,2,S8),db(3,3,S9),!,nl,nl,
      write(S1,S2,S3),nl,write(S4,S5,S6),nl,write(S7,S8,S9),nl,nl.
      [/HIGHLIGHT]

      Добавлено
      Это код игры крестики нолики.Помогите переделать код, чтобы было 2 игрока, а не игрок и компьютер. турбо пролог 2.0
      Мною это непостижимо...

      ExpandedWrap disabled
        database
        db(integer,integer,symbol)  
        Predicates
        predicates
        pole
        go(integer,symbol,symbol)
        protect(symbol,symbol)
        type(integer,symbol)    
        etc(symbol,symbol)
        goal
        write("who starts?"),nl, write("1 - I, 0 - Computer."),
        readint(Who),write("type?"),nl,write("1 - X, 0 - O."),
        readint(What),type(What,I1),etc(I1,I2),go(Who,I1,I2),!,
        nl,nl; write("Error."),nl.
        clauses
        db(1,1,"-"). db(1,2,"-"). db(1,3,"-"). db(2,1,"-").db(2,2,"-").
        db(2,3,"-"). db(3,1,"-"). db(3,2,"-"). db(3,3,"-").
         
        type(1,x). type(0,o). etc(x,o). etc(o,x).
         
        go(0,Comp,_):- protect(Comp,Comp),!,pole,nl,write("You are a loser.").
        go(0,Comp,You):- protect(Comp,You),!,pole,go(1,You,Comp).
        go(0,Comp,You):- retract(db(2,2,"-")),!,assert(db(2,2,Comp)),
          pole,go(1,You,Comp).
        go(0,Comp,You):- db(R,St,"-"), (R+St) mod 2=0,retract(db(R,St,"-")),!,
          assert(db(R,St,Comp)),pole,go(1,You,Comp).
        go(0,Comp,You):- retract(db(R,St,"-")),!,assert(db(R,St,Comp)),
          pole,go(1,You,Comp).
        go(1,You,Comp):- db(_,_,"-"),write("next:","line (ot 1 do 3): "),
          readint(R),R>0,R<4,write("column (ot 1 do 3): "),
          readint(St),St>0,St<4,retract(db(R,St,"-")),!,
          assert(db(R,St,You)),go(0,Comp,You).
        go(_,_,_):- not(db(_,_,"-")),nl,write("Draw.").
         
        protect(Comp,You):- db(N1,St,You),db(N2,St,You),N1<>N2,
          retract(db(N3,St,"-")),!,assert(db(N3,St,Comp));
          db(R,N1,You),db(R,N2,You),N1<>N2,retract(db(R,N3,"-")),!,
          assert(db(R,N3,Comp));
          db(I,I1,You),I=I1,db(J,J1,You),J=J1,I<>J,db(K,K1,"-"),K=K1,
          retract(db(K,K1,"-")),!,assert(db(K,K1,Comp));
          db(I,J,You),I+J=4,db(N,K,You),N<>I,N+K=4,db(M,L,"-"),M+L=4,
          retract(db(M,L,"-")),!,assert(db(M,L,Comp)).
         
        pole:- db(1,1,S1),db(1,2,S2),db(1,3,S3),db(2,1,S4),db(2,2,S5),
          db(2,3,S6),db(3,1,S7),db(3,2,S8),db(3,3,S9),!,nl,nl,
          write(S1,S2,S3),nl,write(S4,S5,S6),nl,write(S7,S8,S9),nl,nl.
        Помогите решить задачу в пролог:
        Проверить встречается ли в списке четный элемент.Заранее спасибо..
          Цитата NIKAAA @
          Помогите решить задачу в пролог:
          Проверить встречается ли в списке четный элемент.Заранее спасибо..

          ExpandedWrap disabled
            domains
            list = integer*
            predicates
            find(list,integer)
             
            goal
            find([5,5,20,5],X), write(X).
             
            clauses
              
            find([H|T],H):-
              H mod 2 =0,!.
            find([_|T],Y):-    
              find(T,Y).
            Помогите с задачей на Турбо Пролог:
            За квадратным столом сидят 4 студента. Филолог сидит напротив Козыря, рядом с историком. Биолог сидит рядом с Волдайским. Соседи Шадрова - Егоркин и химик. Напротив кого сидит историк?

            Буду премного благодарна!
              огромнейшее человеческое спасибо)))
                Здравствуйте, никак не получается объединить 2 списка и найти и удалить максимальный элемент из него.
                Помогите пожалуйста.


                ExpandedWrap disabled
                  Domains
                      type=integer
                      list=type*
                  Predicates
                      append(list,list,list)
                          nondeterm max(list,integer)
                  Clauses
                      append([],L,L):-!.
                      append([H|T],P,[H|Y]):-append(T,P,Y).
                          max([X],X).
                          max([H|Tail],H):-max(Tail,M),H>M,!.
                          max([_|Tail],M):-max(Tail,M).


                совсем неправильно делаю? поправьте пожалуйста.
                  Crazy_meat, всё правильно, только предикат max детерминированный.
                  max([X],X):-!.
                  max([H|Tail],H):-max(Tail,M),H>M,!.
                  max([_|Tail],M):-max(Tail,M).

                  И удаление не сделано. Щас свою программку напишу.

                  Добавлено
                  ExpandedWrap disabled
                    domains
                    list = integer*
                     
                    predicates
                    conc(list,list,list)
                    max(list,integer)
                    del_max(list,list)
                     
                    goal
                     L1=[1,2,30], L2=[4,5,6],
                     conc(L1,L2,L),
                     del_max(L,P),write(P),nl.
                     
                    clauses
                    conc([],L,L):-!.
                    conc([H|T],L,[H|T1]):-
                      conc(T,L,T1).
                      
                    max([X],X):-!.
                    max([H|T],H):-
                      max(T,X),
                      H>=X,!.
                    max([H|T],X):-
                      max(T,X).
                     
                    del_max([_],[]):-!.
                    del_max([H|T],T):-
                      max([H|T],H),!.
                    del_max([H|T],[H|T1]):-
                      del_max(T,T1).
                    Swetlana,
                    Огромное Спасибо)
                      Цитата Ryslanka @
                      огромнейшее человеческое спасибо)))

                      Неправильно решила, сори. Только половину условий перечислила, т.к. тут симметрия.
                      То есть пишу, что напротив Козыря сидит филолог
                      sosed_naprotiv("kozir",Y2,X2,"filolog")
                      и тут же надо симметрично записать, что напротив филолога сидит Козырь
                      sosed_naprotiv(X1,"filolog",'kozir",Y2)
                      Можно, конечно, и пооптимальней написать, но уже правильно работает, выдаёт единственное решение
                      Волдайский химик

                      ExpandedWrap disabled
                        domains
                          list = symbol*
                         
                        predicates
                        member(symbol,list)
                        check(symbol,symbol,symbol,symbol)
                        sosed_naprotiv1(symbol,symbol,symbol,symbol)
                        sosed_naprotiv11(symbol,symbol,symbol,symbol)
                        sosed_naprotiv2(symbol,symbol,symbol,symbol)
                        sosed_naprotiv22(symbol,symbol,symbol,symbol)
                        sosed_naprotiv3(symbol,symbol,symbol,symbol)
                        sosed_naprotiv33(symbol,symbol,symbol,symbol)
                        sosed_naprotiv4(symbol,symbol,symbol,symbol)
                        sosed_naprotiv44(symbol,symbol,symbol,symbol)
                        sosed_naprotiv5(symbol,symbol,symbol,symbol)
                         
                        clauses
                        sosed_naprotiv1("kozir",Y1,X2,"filolog"):-
                          Y1<>"filolog", Y1<>"istorik".
                        sosed_naprotiv1(X1,Y1,X2,Y2):-
                          X1<>"kozir".
                          
                        sosed_naprotiv11(X1,"filolog","kozir",Y2):-
                          Y2<>"filolog", Y2<>"istorik".
                        sosed_naprotiv11(X1,Y1,X2,Y2):-
                          X2<>"kozir".
                         
                        sosed_naprotiv5(X1,"filolog",X2,Y2):-
                          Y2<>"istorik".
                        sosed_naprotiv5(X1,Y1,X2,Y2):-
                          Y1<>"filolog".  
                              
                        sosed_naprotiv2("voldajsky",Y1,X2,Y2):-
                          Y2<>"biolog", Y1<>"biolog".
                        sosed_naprotiv2(X1,Y1,X2,Y2):-
                          X1<>"voldajsky".
                         
                        sosed_naprotiv22(X1,Y1,"voldajsky",Y2):-
                          Y2<>"biolog", Y1<>"biolog".
                        sosed_naprotiv22(X1,Y1,X2,Y2):-
                          X2<>"voldajsky".
                          
                        sosed_naprotiv3("shadrov",Y1,X2,Y2):-
                          Y2<>"himik", Y1<>"himik", X2<>"egorkin".
                        sosed_naprotiv3(X1,Y1,X2,Y2):-
                          X1<>"shadrov".
                          
                        sosed_naprotiv33(X1,Y1,"shadrov",Y2):-
                          Y2<>"himik", Y1<>"himik", X1<>"egorkin".
                        sosed_naprotiv33(X1,Y1,X2,Y2):-
                          X2<>"shadrov".
                         
                        sosed_naprotiv4("egorkin",Y1,X2,"himik"):-  
                          Y1<>"himik", X2<>"shadrov".  
                        sosed_naprotiv4(X1,Y1,X2,Y2):-
                          X1<>"egorkin".
                          
                        sosed_naprotiv44(X1,"himik","egorkin",Y2):-  
                          Y2<>"himik", X1<>"shadrov".  
                        sosed_naprotiv44(X1,Y1,X2,Y2):-
                          X2<>"egorkin".  
                         
                        check(X1,Y1,X2,Y2):-
                           sosed_naprotiv1(X1,Y1,X2,Y2),
                           sosed_naprotiv11(X1,Y1,X2,Y2),
                           sosed_naprotiv5(X1,Y1,X2,Y2),
                           sosed_naprotiv2(X1,Y1,X2,Y2),
                           sosed_naprotiv22(X1,Y1,X2,Y2),
                           sosed_naprotiv3(X1,Y1,X2,Y2),
                           sosed_naprotiv33(X1,Y1,X2,Y2),
                           sosed_naprotiv4(X1,Y1,X2,Y2),
                           sosed_naprotiv44(X1,Y1,X2,Y2).
                          
                        member(H,[H|T]).
                        member(X,[_|T]):-
                          member(X,T).      
                         
                        goal
                        clearwindow,
                        member(X1,["kozir","voldajsky","shadrov","egorkin"]),
                        member(X2,["kozir","voldajsky","shadrov","egorkin"]),
                        X1<>X2,
                        member(Y1,["filolog","biolog","himik"]),
                        check(X1,Y1,X2,"istorik"),
                        write(X1,'-',Y1," ",X2,"-","istorik"),nl.
                        Друзья, прошу помощи в решении задач:
                        Задание 1

                        Вычислить сумму кодов символов, вводимых с клавиатуры, до
                        ввода символа "К". Результат показать в другом окне.


                        Лабораторная работа 2

                        Определение породы собак. Экспертная система.

                        Используются следующие характеристики:

                        1. Короткая шерсть
                        2. Длинная шерсть
                        3. Рост меньше 65 см.
                        4. Рост меньше 80 см.
                        5. Низко посаженный хвост
                        6. Длинные уши
                        7. Хороший характер
                        8. Вес больше 5 кг.

                        Для каждой породы свойственны различные характеристики

                        1. Английский бульдог 1,3,5,7
                        2. Гончая 1,3,6,7
                        3. Дог 1,4,6,7,8
                        4. Американский фокстерьер 1,5,6,7
                        5. Коккер-спаниель 2,3,5,6,7
                        6. Ирландский сеттер 2,4,6
                        7. Колли 2,4,5,7
                        8. Сенбернар 2,5,7,8
                          Приветствую всех участников форума! Очень надеюсь на вашу помощь:
                          Написал программу а она выводит много решений при подстановке
                          ExpandedWrap disabled
                            fail
                          после вывода ответа!

                          Помогите разобраться. Мне сказали что надо списки поправить в задаче.
                          Вот она собственно:
                          ExpandedWrap disabled
                            domains
                            person=p(string,string,string)
                            persons=person*
                             
                            predicates
                            member(person,persons)
                            flower(string)
                            dom(string)
                            name(string)
                            solve
                             
                            clauses
                            member(H,[H|_]):-!.
                            member(X,[_|T]):-
                            member(X,T).
                             
                            flower("Rosy").
                            flower("Romash").
                            flower("Tulp").
                            name("Nif").
                            name("Nuf").
                            name("Naf").
                            dom("Solom").
                            dom("Derev").
                            dom("Kirp").
                            solve:-
                            dom(NifD),
                            flower(NifF),
                            NifD<>"Solom",
                            dom(NafD),
                            flower(NafF),
                            NafF<>NifF,
                            NafF<>"Tulp",
                            NafF<>"Romash",
                            NafD<>"Derev", NafD<>NifD,
                            dom(NufD),
                            flower(NufF),
                            NufF<>NafF,NufF<>NifF,
                            NufD<>NafD, NufD<>NifD,
                             
                             
                            Prs=[p(NifD,NifF,"Nif"),
                                p(NafD,NafF,"Naf"),
                                p(NufD,NufF,"Nuf")],
                                
                            member(p("Derev","Romash",_),Prs),
                            member(p("Solom",_,_),Prs),
                            member(p(_,"Rosy",_),Prs),
                             
                            write(NifD,NifF,"Nif"),nl,
                            write(NafD,NafF,"Naf"),nl,
                            write(NufD,NufF,"Nuf"),nl,fail.
                             
                             
                            goal
                            solve.


                          Условия:
                          Имеем три поросенка одноименных, три их домика из соломы, дерева и кирпича, и цветы около домиков: розы, ромашки, тюльпаны!

                          Знаем: Ниф не в соломенном,
                          Наф не в деревянном,
                          Возле соломеннго дома не розы,
                          Возле деревянного растут ромашки,
                          У Нафа не тюльпаны около дома.

                          Ну и соответственно надо вывести кто где живет и какие цветы выращивает.

                          В общем в приведенной задаче выводится много ответов, думаю список или предикат member не так задал...
                            Цитата night_amir @
                            Лабораторная работа 2

                            Определение породы собак. Экспертная система.

                            Используются следующие характеристики:

                            1. Короткая шерсть
                            2. Длинная шерсть
                            3. Рост меньше 65 см.
                            4. Рост меньше 80 см.
                            5. Низко посаженный хвост
                            6. Длинные уши
                            7. Хороший характер
                            8. Вес больше 5 кг.

                            Для каждой породы свойственны различные характеристики

                            1. Английский бульдог 1,3,5,7
                            2. Гончая 1,3,6,7
                            3. Дог 1,4,6,7,8
                            4. Американский фокстерьер 1,5,6,7
                            5. Коккер-спаниель 2,3,5,6,7
                            6. Ирландский сеттер 2,4,6
                            7. Колли 2,4,5,7
                            8. Сенбернар 2,5,7,8

                            ExpandedWrap disabled
                               
                                     /* Џа®Ја ¬¬ : ќЄбЇҐав Ї® Ї®а®¤ ¬ б®Ў Є  ” ©«:dog.pro    */
                                     /* Ќ §­ зҐ­ЁҐ. „Ґ¬®­бва жЁп а Ў®вл нЄбЇҐав­®© бЁб⥬л,  */
                                     /* Ў §Ёаго饩бп ­  «®ЈЁЄҐ                               */
                                     /* ‡ ¬Ґз ­ЁҐ: нв® бЁб⥬  ¤«п Ё¤Ґ­вЁдЁЄ жЁЁ Ї®а®¤л. Ћ­  */
                                     /* б®бв®Ёв Ё§ Ў §л §­ ­Ё© (Ѓ‡), ¬Ґе ­Ё§¬  ўлў®¤  (Њ‚)   */
                                     /* Ё бЁбвҐ¬л Ї®«м§®ў вҐ«мбЄ®Ј® Ё­вҐадҐ©б  (‘Џ€).        */
                                     /* Ѓ §  §­ ­Ё© а бЇ®« Ј Ґвбп ў ®ЇҐа вЁў­®© Ї ¬пвЁ       */
                               
                               
                                          domains
                               
                                               CONDITIONS      = BNO *
                                               HISTORY         = RNO *
                                               RNO, BNO        = INTEGER
                                               CATEGORY        = SYMBOL
                               
                               
                                          database
                               
                                          /* ЏаҐ¤ЁЄ вл Ў §л ¤ ­­ле                */
                               
                                               rule(RNO, CATEGORY, CATEGORY, CONDITIONS)
                                               cond(BNO, STRING)
                                               yes(BNO)
                                               no(BNO)
                                               topic(string)
                               
                                          predicates
                               
                                          /* ЏаҐ¤ЁЄ вл бЁбвҐ¬л Ї®«м§®ў вҐ«мбЄ®Ј® Ё­вҐадҐ©б   */
                               
                               
                                          do_expert_job
                                          show_menu
                                          do_consulting
                                          process(integer)
                                          info(CATEGORY)
                                          goes(CATEGORY)
                                          listopt
                                          clear
                                          eval_reply(HISTORY,char)
                                          printr(HISTORY)
                                          printc(CONDITIONS)
                                          /* ЏаҐ¤ЁЄ вл ¬Ґе ­Ё§¬  ўлў®¤                */
                               
                                          go(HISTORY, CATEGORY)
                                          check(RNO, HISTORY, CONDITIONS)
                                          inpq(HISTORY, RNO, BNO, STRING)
                                          do_answer(HISTORY, RNO, STRING, BNO, INTEGER)
                               
                                          goal
                                               clear,
                                               do_expert_job.
                                              
                               
                                          clauses
                               
                                          /* Ѓ §  §­ ­Ё© (Ѓ‡)                             */
                               
                                          topic("dog").
                                          topic("Є®а®вЄ®иҐабв­ п б®Ў Є ").
                                          topic("¤«Ё­­®иҐабв­ п б®Ў Є ").
                               
                                          rule(1, "dog", "Є®а®вЄ®иҐабв­ п б®Ў Є ", [1] ).
                                          rule(2, "dog", "¤«Ё­­®иҐабв­ п б®Ў Є ", [2]  ).
                                          rule(3, "Є®а®вЄ®иҐабв­ п б®Ў Є "," ­Ј«Ё©бЄЁ© Ўг«м¤®Ј",[3,5,7]).
                                          rule(4, "Є®а®вЄ®иҐабв­ п б®Ў Є ","Ј®­з п",[3,6,7]).
                                          rule(5, "Є®а®вЄ®иҐабв­ п б®Ў Є ","¤ вбЄЁ© ¤®Ј", [5,6,7,8] ).
                                          rule(6, "Є®а®вЄ®иҐабв­ п б®Ў Є "," ¬ҐаЁЄ ­бЄЁ© д®ЄбвҐамҐа",[4,6,7]   ).
                                          rule(7, "¤«Ё­­®иҐабв­ п б®Ў Є ", "Є®ЄЄҐа-бЇ ­Ён«м", [3,5,6,7] ).
                                          rule(8, "¤«Ё­­®иҐабв­ п б®Ў Є ", "Ёа« ­¤бЄЁ© бҐввҐа", [4,6]     ).
                                          rule(9, "¤«Ё­­®иҐабв­ п б®Ў Є ", "Є®««Ё", [4,5,7] ).
                                          rule(10, "¤«Ё­­®иҐабв­ п б®Ў Є ", "ᥭЎҐа­ а", [5,7,8]   ).
                               
                               
                                          cond(1,    "Є®а®вЄ®иҐабв­ п б®Ў Є "       ).
                                          cond(2,    "¤«Ё­­®иҐабв­ п б®Ў Є "        ).
                                          cond(3,    "а®бв ¬Ґ­ҐҐ 22 ¤о©¬®ў"         ).
                                          cond(4,    "а®бв ¬Ґ­ҐҐ 30 ¤о©¬®ў"         ).
                                          cond(5,    "­Ё§Є®Ї®б ¦Ґ­­л© ўЁбпзЁ© еў®бв").
                                          cond(6,    "¤«Ё­­лҐ гиЁ"                  ).
                                          cond(7,    "¤®Ўа®¤ги­л© е а ЄвҐа"         ).
                                          cond(8,    "ўҐб Ў®«ҐҐ 100 дг­в®ў"         ).
                               
                                          /* ‘Ёб⥬  Ї®«м§®ў вҐ«мбЄ®Ј® Ё­вҐадҐ©б             */
                               
                                          do_expert_job :-
                                               makewindow(1,63,7," DOG EXPERT SYSTEM ",0,0,25,80),
                                               show_menu,
                                               nl,write(" Ќ ¦¬ЁвҐ Їа®ЎҐ«. "),
                                               readchar(_),
                                               save("dog.dat"),
                                               exit.
                               
                                          show_menu :-
                                              write("                                       "),nl,
                                              write(" * * * * * * * * * * * * * * * * *  *  "),nl,
                                              write(" *          DOG EXPERT              *  "),nl,
                                              write(" *                                  *  "),nl,
                                              write(" *    1. Љ®­бг«мв жЁп               *  "),nl,
                                              write(" *                                  *  "),nl,
                                              write(" *                                  *  "),nl,
                                              write(" *    2. ‚л室 Ё§ бЁбвҐ¬л           *  "),nl,
                                              write(" *                                  *  "),nl,
                                              write(" * * * * * * * * * * * * * * * * *  *  "),nl,
                                              write("                                       "),nl,
                                              write("‚ и ўлЎ®а - 1 or 2 : "),nl,
                                              readint(Choice),
                                              process (Choice).
                               
                                          process(1) :-
                                               do_consulting,clear.
                                          process(2) :-
                                               removewindow,
                                               clear,
                                               exit.
                               
                                          do_consulting :-
                                               goes(Mygoal),
                                               go([],Mygoal),
                                               !.
                                          do_consulting :-
                                               nl, write(" ‘®¦ «Ґо, ­Ґ ¬®Јг ‚ ¬ Ї®¬®зм.").
                               
                                          goes(Mygoal) :-
                                               clear,
                                               clearwindow,
                                               nl,nl,
                                               write("                                      "),nl,
                                               write("   WELCOME TO THE DOG EXPERT SYSTEM   "),nl,
                                               write("                                      "),nl,
                                               write("  ќв® - Є« ббЁдЁЄ жЁ®­­ п ќ‘.         "),nl,
                                               write("  „«п § ЇгбЄ  Їа®жҐбб  ўлЎ®а  б®Ў ЄЁ  "),nl,
                                               write(" ­ ЎҐаЁвҐ б«®ў® dog. …б«Ё ‚л ¦Ґ« ҐвҐ  "),nl,
                                               write(" гўЁ¤Ґвм ¤®ЇгбвЁ¬лҐ Ї®а®¤л б®Ў Є,     "),nl,
                                               write(" ­ ЎҐаЁвҐ §­ Є ў®Їа®б  ?.             "),nl,
                                               write("                                      "),nl,
                                               readln(Mygoal),
                                               info(Mygoal),!.
                               
                                          info("?") :-!,
                                               clearwindow,
                                               listopt,
                                               nl,write("Ќ ¦¬ЁвҐ Їа®ЎҐ«. "),
                                               readchar(_),
                                               clearwindow,
                                               exit.
                               
                                          info("dog") :-!.
                                          
                                          info(_) :-
                                              write("‘®¦ «Ґо, ­® в Є®© вҐ¬л ­Ґв. "),
                                              nl,write("Ќ ¦¬ЁвҐ Їа®ЎҐ«. "),
                                              readchar(_),
                                              clearwindow,
                                              exit.
                               
                                          listopt :-
                                              write("Џ®а®¤л б®Ў Є : "),nl,nl,
                                              rule(N,_,Dog,_),
                                              N>=3,
                                              write("      ",Dog),nl,
                                              fail.
                                          listopt.
                               
                                          inpq(HISTORY,RNO,BNO,TEXT) :-
                                               write("‚®Їа®б :- ",TEXT," ? "),
                                               makewindow(2,7,7,"Response",10,54,9,24),
                                               write("‚ўҐ¤ЁвҐ 1, Ґб«Ё '¤ ' ,"),nl,
                                               write("‚ўҐ¤ЁвҐ 2, Ґб«Ё '­Ґв' : "),nl,
                                               readint(RESPONSE),
                                               clearwindow,
                                               shiftwindow(1),
                                               do_answer(HISTORY,RNO,TEXT,BNO,RESPONSE).
                               
                                          eval_reply(HISTORY,'1') :-
                                             printr(HISTORY),!.
                                          eval_reply(_,_).
                                    
                                          printr([]):-!.
                                          printr([RNO|REST]):-
                                               rule(RNO,_,_,LIST),
                                               printc(LIST),
                                               printr(REST).
                                          
                                          printc([]):-!.
                                          printc([BNO|REST]):-
                                               cond(BNO,X),
                                               write(X),nl,
                                               printc(REST).
                               
                              /*               ЊҐе ­Ё§¬ ўлў®¤                        */
                               
                                          go(HISTORY,Mygoal) :-
                                               not(rule(_,Mygoal,_,_)),!,
                                               nl,write(" ќвЁ¬ Є зҐбвў ¬ ᮮ⢥вбвўгҐв Ї®а®¤  ", Mygoal,"."),nl,
                                               write("‚ ¬ е®вҐ«®бм Ўл г§­ вм, Є Є Ўл« Ї®«г祭 §в®в ўлў®¤ ?(1/2)"),
                                               nl,readchar(R),
                                               eval_reply(HISTORY,R).
                               
                                          go(HISTORY, Mygoal) :-
                                               rule(RNO,Mygoal,NY,COND),
                                               check(RNO,HISTORY,COND),
                                               go([RNO|HISTORY],NY).
                               
                                          check(RNO,HISTORY,[BNO|REST]) :-
                                               yes(BNO),!,
                                               check(RNO,HISTORY,REST).
                               
                                          check(_,_,[BNO|_]) :- no(BNO),!,fail.
                               
                                          check(RNO,HISTORY,[BNO|REST]) :-
                                               cond(BNO,TEXT),
                                               inpq(HISTORY,RNO,BNO,TEXT),!,
                                               check(RNO,HISTORY,REST).
                               
                                          check(_,_,[]).
                                          
                                          do_answer(_,_,_,BNO,1) :-
                                               assert(yes(BNO)),
                                               shiftwindow(1),
                                               write(yes),nl.
                                          do_answer(_,_,_,BNO,2) :-
                                               assert(no(BNO)),
                                               write(no),nl,
                                               fail.
                               
                                          clear :- retract(yes(_)),fail.
                                          clear :- retract(no(_)),fail.
                                          clear.
                               
                                     /*                 Љ®­Ґж Їа®Ја ¬¬л                   */
                              Помогите пжл с эт ой задачкой.
                              Построить семантическую модель (сеть) представления знаний в предметной области "Туристическое агенство" (работа с клиентами)
                                Здравствуйте. Помогите с задачей на Турбо Прологе: Создать предикат, через рекурсию, вычисляющий по натуральному числу N, сумму его нечетных чисел которая не превышает само N т.е. задаем N=10, ответ 9. Причем необходима проверка на нечетность (N-1). Паскаль почему то мне легче дался, чем Пролог. Заранее благодарен.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


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