Библиотека knigago >> Компьютеры и Интернет >> Учебники и самоучители по компьютеру >> Visual Prolog 7.1 для начинающих


СЛУЧАЙНЫЙ КОММЕНТАРИЙ

# 2242, книга: Глоток свободы
автор: Николай Андреев

Книга Николая Андреева "Глоток свободы" принадлежит к жанру боевой фантастики и представляет собой захватывающую историю о человеке, борющемся за выживание и свободу в постапокалиптическом мире. Действие разворачивается в недалеком будущем после глобальной катастрофы, которая уничтожила большую часть населения Земли. Главный герой, Дмитрий, просыпается из криосна и обнаруживает себя в мире, опустошенном болезнью и войной. Он присоединяется к группе выживших, ищущих безопасное убежище...

СЛУЧАЙНАЯ КНИГА

Эдуардо Коста - Visual Prolog 7.1 для начинающих

Visual Prolog 7.1 для начинающих
Книга - Visual Prolog 7.1 для начинающих.  Эдуардо Коста  - прочитать полностью в библиотеке КнигаГо
Название:
Visual Prolog 7.1 для начинающих
Эдуардо Коста

Жанр:

Учебники и самоучители по компьютеру, Современные российские издания, Литература ХXI века (эпоха Глобализации экономики), Windows, Искусственный интеллект, Prolog

Изадано в серии:

неизвестно

Издательство:

неизвестно

Год издания:

ISBN:

неизвестно

Отзывы:

Комментировать

Рейтинг:

Поделись книгой с друзьями!

Помощь сайту: донат на оплату сервера

Краткое содержание книги "Visual Prolog 7.1 для начинающих"

Предисловие Эта книга начиналась как личный проект. Моим намерением было просто написать руководство по логическому программированию для моего сына. Однако успех книги был огромным, и я получил множество предложений по улучшению текста или кода, а также пожеланий продолжать работу. Письма приходили из Саудовской Аравии, Китая, России, Испании, Франции, Бразилии, Канады и множества других мест. Я благодарен всем, кто проявил интерес к моей работе, особенно же мне хотелось бы поблагодарить следующих людей:

Читаем онлайн "Visual Prolog 7.1 для начинающих". [Страница - 48]

integer, integer, integer,
mv::board, integer, mv::board, integer)
procedure (i, i, i, i, i, i, o, o).
alphaPruning:( mv::board*, integer, integer, integer,
mv::board, integer, mv::board, integer)
procedure (i, i, i, i, i, i, o, o).
clauses
maxeval(Pos, LookAhead, Alpha, Beta, Mov, Val) :LookAhead > 0,
Lcs = [P || play(Pos, P)],
bestMax(Lcs, LookAhead - 1, Alpha, Beta, Mov, Val), ! ;
stateval(Pos, Val), Mov= none.
bestMax([Lnc|Lncs], LookAhead, Alpha, Beta, BestMove, BestVal) :!,
mineval(Lnc, LookAhead, Alpha, Beta, _, Val),
betaPruning(Lncs, LookAhead, Alpha, Beta, Lnc, Val, BestMove, B
estVal).
betaPruning([], _, _, _, Lnc, Val, Lnc, Val) :- !.
betaPruning(_, _, _Alpha, Beta, Lnc, Val, Lnc, Val) :Val > Beta, !.
betaPruning(Lncs, LookAhead, Alpha, Beta, Lnc, Val, MLnc, MVal) :if Val > Alpha then NewAlpha= Val
else NewAlpha= Alpha end if,
if bestMax(Lncs, LookAhead, NewAlpha, Beta, Lnc1, Val1),
Val1 > Val then MLnc= Lnc1, MVal= Val1
else MLnc= Lnc, MVal= Val end if.

205

mineval(Pos, LookAhead, Alpha, Beta, Mov, Val) :LookAhead > 0,
Lcs = [P || play(Pos, P)],
bestMin(Lcs, LookAhead - 1, Alpha, Beta, Mov, Val), ! ;
stateval(Pos, Val), Mov= none.
bestMin([Lnc|Lncs], LookAhead, Alpha, Beta, BestMove, BestVal) :!,
maxeval(Lnc, LookAhead, Alpha, Beta, _, Val),
alphaPruning(Lncs, LookAhead, Alpha, Beta, Lnc, Val, BestMove,
BestVal).
alphaPruning([], _, _, _, Lnc, Val, Lnc, Val) :- !.
alphaPruning(_, _, Alpha, _Beta, Lnc, Val, Lnc, Val) :Val < Alpha, !.
alphaPruning(Lncs, LookAhead, Alpha, Beta, Lnc, Val, MLnc, MVal) :if Val < Beta then NewBeta= Val
else NewBeta= Beta end if,
if bestMin(Lncs, LookAhead, Alpha, NewBeta, Lnc1, Val1),
Val1 < Val then MLnc= Lnc1, MVal= Val1
else MLnc= Lnc, MVal= Val end if.
class predicates
readMove:(board, board) procedure (i, o).
legalMove:(core::positive, board) determ.
game:(board, integer) procedure (i, i).
endGame:(board) determ (i).
announceWinner:(integer) procedure (i).
clauses
legalMove(I, t(a, _LM, _P1, _P2, X)) :I >= 0, I < 4,
list::nth(I, X) > 0.
readMove(Pos, ReadPos) :stdio::write("Present situation: "), stdio::nl,
prtBoard(Pos),
%stdio::write("Your move: "),
SR= stdio::readLine(),
trap(I1= toTerm(SR), _, fail),
stdio::nl,
legalMove(I1, Pos),
sow(I1, Pos, ReadPos),
prtBoard(ReadPos), !.
readMove(Pos, ReadPos) :stdio::write("Something failed"), stdio::nl,
readMove(Pos, ReadPos).
endGame(X) :- stateval(X, V), math::abs(V) > 10, !.
endGame(t(a, _LM, _P1, _P2, [I0, I1, I2, I3|_])) :I0 < 1, I1 < 1, I2 < 1, I3 < 1, !.
endGame(t(b, _LM, _P1, _P2, [_I0, _I1, _I2, _I3, I4, I5, I6, I7]))

206

:I4 < 1, I5 < 1, I6 < 1, I7 < 1, !.
game(X, _Val) :- endGame(X), !, stateval(X, V),
prtBoard(X),
announceWinner(V).
game(none, Val) :- stdio::write("End game: ", Val),
announceWinner(Val), !.
game(Pos, _Val) :-readMove(Pos, NewPos),
maxeval(NewPos, 10, -10, 10, BestMove, BestVal), !,
game(BestMove, BestVal).
announceWinner(Val) :- Val > 0,
stdio::write("\n I won!\n", Val), !.
announceWinner(Val) :- Val < 0,
stdio::write("\n You won!\n", Val), !.
announceWinner(_Val) :- stdio::write("\n It is a draw!\n").
run():- console::init(),
newboard(a, B),
stateval(B, Val),
game(B, Val).
end implement main /* kalahGame */
goal mainExe::run(main::run).

Как и Эраст Фандорин, я не люблю игры. Кроме того, я не обладаю его удачей, что
означает, что я всегда проигрываю. Однако я всё же поставил свой ум против
компьютера и, разумеется, проиграл. Вот начало игры:
Present situation:
Move: -1
6
6
6
6
0
6
6
6
6

0

a

0

b

0

a

0

b

0
Move: 0
7

7

7

0

7

7

7

6

0

Present situation:
Move: 7
8
8
8
0
8
8
7
1

1
0

Move: 1
9

9

1

0

9

9

8

1

2

Present situation:
Move: 4

207

10

10

0

1

1

11

9

0

2

4

a

208

Библиография
[Abramson/Dahl]

Harvey Abramson and Veronica Dahl, "Logic Grammars",
Springer Verlag, 1989.

[Cedric et all]

de Carvalho, C. L., Costa Pereira, A. E. and da Silva Julia, R.
M. "Data-flow Synthesis for Logic Programs". In: System
Analysis Modeling Simulation, Vol 36, pp. 349-366, 1999.

[Warren]

David S. Warren. "Computing With Logic: Logic Programming With Prolog". Addison-Wesley / January 1988.

[Lewis Caroll]

Lewis Caroll. The Game of Logic. Hard Press, 2006.

[Sterling and Shapiro]

Sterling and Shapiro. "The Art of Prolog". MIT Press / January 1986.
(имеется русский перевод: Стерлинг Л., Шапиро Э.
«Искусство программирования на языке Пролог». М.:
Мир, 1990.)

[Coelho/Cotta]

Coelho, H. and Cotta, J. "Prolog by Example". (1988) Berlin:
Springer-Verlag.

[HowToSolveItWithПролог+

Helder Coelho, Carlos Cotta, Luis Moniz Pereira. "How To
Solve It With Prolog". Ministerio do Equipamento Social.
Laboratorio Nacional de Engenharia Civil.

[Pereira/Shieber]

F.C.N. Pereira and S.M. Shieber. "Prolog and NaturalLanguage Analysis". CSLI Publications, 1987.

[Gazdar/Mellish]

Gazdar, G., and C.S. Mellish. "Natural Language Processing
in Prolog". Addison-Wesley.

[John Hudges]

John Hughes. Why Functional Programming Matters. Computer Journal, vol. 32, number 2, pages 98-107, 1989.

209

Рисунок
0.2 Настройки
проекта

[Wadler & Bird]

Richard Bird and Philip Wadler. Introduction to Functional
Programming. Prentice Hall (1988).

[John Backus]

John Backus. Can Programming be Liberated from the Von
Newman Style? Communications of the ACM, 21(8):613641, August 1978.

[Gries]

David Gries. The Science of programming – New York :
Springer-Verlag, cop.1981.- X,366p.

[Dijkstra]

E. Dijkstra, W. Feijen: A Method of Programming, AddisonWesley Publishing Company.

[Cohn]

Cohn, P. G. Logic Programming, Expressivity versus Efficiency. State University of Campinas. 1991.

[Yamaki]

Kimie Yamaki. Combining partial evaluation and automatic
control insertion to increase the efficiency of Prolog programs. State University of Campinas. 1990.

[Gentzen]

Gerhard Karl Erich Gentzen. "Die Widerspruchsfreiheit der
reinen Zahlentheorie",Mathematische Annalen, 112: 493565.(1936)

[Robinson]

Robinson, J. A. Theorem Proving on the Computer. Journal
of the Association for Computing Machinery. Vol. 10, N. 12,
pp 163-174.

[William Stearn]

William T Stearn. Botanical Latin. Timber Press. Paperback
edition, 2004.

210

--">

Оставить комментарий:


Ваш e-mail является приватным и не будет опубликован в комментарии.