Показать сообщение отдельно
  (#1 (permalink)) Старый
Sasha_Sasha Sasha_Sasha вне форума
Новичок
 
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.12.2015
По умолчанию из turbo prolog в visual prolog - где будут отличия в коде? - 21.12.2015, 20:37

я попыталась перевести из турбо пролога в пролог 7,5.. но куча ошибок появляется.. (пролог очень плохо знаю). скоро сдавать,а ничего не выходит :((

prolog Код:
% Copyright

implement main
    open core, console, string

domains
list = integer*.
class predicates
start: ()nondeterm anyflow.
choice: (integer)nondeterm anyflow.

create_kod: (list, integer)nondeterm anyflow.
dif: (list, list, integer, integer)nondeterm anyflow.
game_1: (list)nondeterm anyflow.
analiz_1: (string, list, list, integer, integer, integer)nondeterm anyflow.
compare: (integer, list, integer, integer, integer, integer, integer, integer)nondeterm anyflow.

start2: ()nondeterm anyflow.
game2: (integer, integer)nondeterm anyflow.

game_2_1: (list, list, list, list, integer, integer, integer)nondeterm anyflow.
new_list: (list, list, integer, list, integer)nondeterm anyflow.
analiz_2_1: (list, list, list, list, list, integer, integer, integer, integer, integer)nondeterm anyflow.

game_2_2:(list, integer, integer, integer, list)nondeterm anyflow.
analiz_2_2:(list , list, integer, integer, integer, integer, list)nondeterm anyflow.
change: (list, integer, integer, list)nondeterm anyflow.
change1:(integer, integer, integer, integer)nondeterm anyflow.
change2: (list, list, list, integer, integer, integer, integer, integer, list)nondeterm anyflow.

random_no_List_N: (list, list, integer, integer)nondeterm anyflow.
dif2: (list, list, list, list, integer, integer, integer)nondeterm anyflow.

add_list: (list, integer, list)nondeterm anyflow.
del_list: (list, list)nondeterm anyflow.
write_list: (list)nondeterm anyflow.
%end: (integer) nondeterm anyflow.
endd: (char) nondeterm anyflow.

/* начало программы */

clauses
start () :- (" Выдающийся ум"),
write("              Правила иры:       "), nl,nl,
write("Один игрок загадал число из 5 цифр, другой должен его отгадать."),nl,
write("После ввода очередного числа сообщается: сколько цифр угадано"),nl,
write("¬но стоят не на своих местах ( коровы ), и сколько цифр угадано,"),nl,
write("которые находятся на своих местах ( быки )"),nl,nl,nl,
    write("Выбор игрока:"), nl,nl,
         write("'k' - Компьютер"),nl,
         write(" P.S.:Для просмотра введите f3"), nl,nl,
         write("'v' - Вы"),nl,
         N = readChar (),
         choice (N).

choice('k') :- create_kod([],5).
choice('v') :- start2.
choice(_) :- write ("Попробуйте ещё раз!"),
         start.
 /* создание числового кода */
 create_kod(List, N) :- N=0, game_1(List).
create_kod (List, N) :- X = math::random(),
                    Ch = 9*X,
                    dif (List, List, Ch, N).

dif([], List, Ch, N) :- N1 = N-1,
                        create_kod ([Ch|List], N1).

dif([Ch|_], List, Ch, N) :- create_kod (List, N).

dif ([_|R],List, Ch, N) :- dif (R, List, Ch, N).

/* начало игры, где игрок - человек*/

game_1 (List) :- Str=readline(), analiz_1(Str, _, List, 5, 0, 0 ).

analiz_1("f3", [], List, _, _, _) :- write_list (List), nl,
                    write ("Сыграем ещё ? "),nl,
                                    write ("y - Да"), nl,
                                    write ("n – Нет, выйти"), nl,
                                    X= readChar (),
                                    endd (X).


analiz_1 (_,[], _, N, K, B) :- N=0, B = 5,
                               write ("Количество коров = ", K),nl,
                               write ("Количество быков = ", B),nl,
                               write(" Вы угадали число !!! "), nl,
                               write(" Сыграем ещё ? "),nl,
                               write("y - Да"), nl,
                               write("n – Нет, выйти"),nl,
                               X = readchar (),
                               endd (X).

analiz_1 (_,[], List, N, K, B) :- N=0,
                           write ("Количество коров = ", K),nl,
                           write ("Количество быков = ", B),nl,
                           game_1 (List) .

analiz_1 (Str, [X|R], List, N, K, B) :-  frontstr (1, Str, S, Rest),
                                       str_int (S,X),
                                       compare (X, List, N, 5, 0, 0, K1, B1),
                                       N1 = N-1,
                                       K2 = K + K1,
                                       B2 = B + B1,
                                       analiz_1(Rest, R, List, N1, K2, B2).

compare (_, [], _, _, K, B, K1, B1) :- K1 = K, B1 = B.
compare (X, [X|R], N, N1, K, B, K1, B1) :- N = N1, B2 = B + 1, N2 = N1-1, compare (X, R, N, N2, K, B2, K1, B1).
compare (X, [X|R], N, N1, K, B, K1, B1) :- K2 = K + 1, N2 = N1-1, compare (X, R, N, N2, K2, B, K1, B1).
compare (X, [_|R], N, N1, K, B, K1, B1) :- N2 = N1-1, compare (X, R, N, N2, K, B, K1, B1).

endd('y') :- start.
endd('n') :- exit.
endd(_) :- write("Вы угадали число"),
      write("Сыграем ещё ? "),nl,
          write("y - Да"), nl,
          write("n - Нет, выйти"),nl,
          N = readchar (),
          endd (N).

Последний раз редактировалось Sasha_Sasha; 21.12.2015 в 20:40
Ответить с цитированием
Ads