Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Prolog
Перезагрузить страницу Нужна помощь с задачкой
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
staff staff вне форума
Member
 
Сообщений: 15
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 29.09.2011
По умолчанию Нужна помощь с задачкой - 20.11.2011, 22:16

Всем привет,

у нас есть вот такая задачка

Код:
Predicates
z(integer, integer, symbol)
predicates pictre
move(integer, symbol, symbol)
block(symbol, symbol)
than(integer, symbol)
ANSP(symbol, symbol)
goal
write("Who goes first? (1 - a man, 0 - computer)",
readint(player), write("What? (1 - crosses, 0 - null)"),
readint(N, than(N,I1), ANSP(I1,I2), move(player, I1,I2),!,nl, nl; write("The rules violated."), nl.
clauses
z(1,1,"-"). z(1,2,"-"). z(1,3,"-"). z(2,1,"-"). z(2,2,"-").
z(2,3,"-"). z(3,1,"-"). z(3,2,"-"). z(3,3,"-").
than(1,x), than(0,o), ANSP(x,o), ANSP(o,x).
move(0,S,_):- block(S,S),!,image,write("nComputer win!").
move(0,S,C):- block(S,C),!image,move(1,C,S).
move(0,S,C):- retract(z(2,2,"-")),!assert(z(2,2,S)),
image,move(1,C,S).
move(0,S,C): -z(R,St,"-"),(R+St) mod 2=0, retract(z(R,St,"-")),!,
assert(z(R,St,S)), image, move(1,C,S).
move(0,S,C):- retract(z(R,St,"-")),!assert(z(R,St,S)),
image,move(1,C,S).
move(1,C,S):- z(_,_,"-"), write("Walk:", "stroka(1-3)-"),
readint(R,R>0,R<4,write("stolbec(1-3)-"),
readint(St),St>0,St<4,retract(z(R,St,"-")),!,
readint(St,St>0,St<4, retract(z(R,St,"-")),!,
assert(z(R,St,C)),move(0,S,C).
move(_,_,_):- not(z(_,_,"-")), nl, write("Draw!").
block(S,C)- z(N1,St,C),z(N2,St,C),N1<>N2,
retract(z(N3,St,"-")),!assert(z(N3,St,S));
z(R,N1,C),z(R,N2,C),N1<>N2,retract(z(R,N3,"-")),!,
assert(z(R,N3,S));
z(I,I1,C),I=I1,z(J,J1,C),J=J1,I<>J,z(K,K1,"-"),K=K1,
retract(z(K,K1,"-")),!,assert(z(K,K1,S));
z(I,J,C),I+J=4,z(N,K,C),N<>I,N+K=4,z(M,L,"-"),M+L=4,
retract(z(M,L,"-")),!,assert(z(M,L,S)).
image:- z(1,1,S1),z(1,2,S2),z(1,3,S3),z(2,1,S4),z(2,2,S5),
z(2,3,S6),z(3,1,S7),z(3,2,S8),z(3,3,S9),!,
write("nNow play computer."),nl,nl,
writef("t%t%t%nt%t%t%nt%t%t%",
S1,S2,S3,S4,S5,S6,S7,S8,S9),nl,nl.
Сама задачка
Код:
Игра "Крестики-нолики"
Дана NxM игральная доска. Найти как "нолики" двумя ходами выигрывают против "крестиков"
Может кто видит тут ошибку :(
может есть какое другое решение этой задачки на swiprolog
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь k.o.m.p. Любые вопросы от новичков 2 14.11.2011 06:26
нужна помощь sergo555 C++ Builder 1 14.11.2011 03:34
Нужна помощь GooDMaster С/С++ 2 25.10.2011 14:18
Нужна помощь fonx Delphi 5 21.10.2011 15:53
Нужна помощь=) пРоГрАмКа PHP 2 18.10.2011 15:36
Нужна помощь! NataliyA85 Любые вопросы от новичков 21 06.10.2011 21:45
Нужна помощь Сергей 1 Любые вопросы от новичков 4 28.09.2011 11:00
Нужна помощь с задачкой на Java DmiTry2010 Задания за деньги 1 25.05.2010 23:09
нужна помощь! очень нужна! ulana999i999 Prolog 0 17.04.2010 14:13
Нужна помощь yKyLLIy Материнские платы 3 14.11.2009 01:00
Очень нужна нужна помощь в решении задачи NecroDevil Prolog 18 16.01.2009 14:22



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов