VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: VBProFan

用情侣和情敌的例子向大家介绍 Prolog 语言

[复制链接]
发表于 2010-8-9 14:31:06 | 显示全部楼层
泡饭你是不是想把你的AI象棋升级成Prolog版?
回复 支持 反对

使用道具 举报

发表于 2010-8-9 14:41:56 | 显示全部楼层
本帖最后由 Igawk 于 2010-8-9 14:43 编辑

Prolog版 99瓶啤酒
例一

  1. /*******************************************************
  2. * 99 Bottles of Beer
  3. * Paul J. DeMarco  9/20/2002
  4. * beer.pro
  5. * To execute start gprolog (others may work)
  6. * consult('beer.pro').
  7. * drink(beer,99).
  8. *******************************************************/
  9. english(beer,0):-
  10.                         write('no more bottle of beer').
  11. english(beer,1):-
  12.                         write('1 bottle of beer').
  13. english(beer,X):-
  14.                         X >= 2,
  15.                         write( X ) ,
  16.                         write(' bottles of beer').

  17. drink(beer,X):- X >= 1,
  18.                         english(beer,X),
  19.                         write(' on the wall, '),
  20.                         english(beer,X),
  21.                         write(', take one down, pass it around\n'),
  22.                         X1 is X - 1,
  23.                         english(beer,X1),
  24.                         write(' on the wall.\n'),
  25.                         drink(beer, X1).
复制代码


例二

  1. % 99 bottles of beer song implemented in Prolog
  2. % Released into the public domain in 2006 by Brent Spillner

  3. wall_capacity(99).

  4. wait(_) :- true.

  5. report_bottles(0) :- write('no more bottles of beer'), !.
  6. report_bottles(X) :- write(X), write(' bottle'),
  7.                      (X = 1 -> true ; write('s')),
  8.                      write(' of beer').

  9. report_wall(0, FirstLine) :-
  10.                   (FirstLine = true -> write('No ') ; write('no ')),
  11.                   report_bottles('more'), write(' on the wall'), !.
  12. report_wall(X, _) :- report_bottles(X), write(' on the wall').

  13. sing_verse(0) :- !, report_wall('No more', true), write(', '),
  14.                  report_bottles('no more'), write('.'),
  15.                  nl, write('Go to the store and buy some more, '),
  16.                  wall_capacity(NewBottles), report_wall(NewBottles, false),
  17.                  write('.'), nl.

  18. sing_verse(X) :- report_wall(X, true), write(', '),
  19.                  report_bottles(X), write('.'), nl,
  20.                  write('Take one down and pass it around, '),
  21.                  Y is X - 1, report_wall(Y, false), write('.'), nl, nl,
  22.                  wait(5), sing_verse(Y).

  23. :- wall_capacity(Bottles), sing_verse(Bottles).
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

文字版|手机版|小黑屋|VBGood  

GMT+8, 2023-3-22 04:23

VB爱好者乐园(VBGood)
快速回复 返回顶部 返回列表