快速业务通道

冒号课堂§4.2:逻辑范式 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
  {      if (other == null || this == other) return null;      if (parent == other) return isMale ? "son" : "daughter";      if (other.parent == this) return isMale ? "father" : "mother";      if (parent == null) // this是老祖宗      {        if (other.parent == null) return null;        if (other.parent.parent == this) return isMale ? "grandfather" : "grandmother";        return null;      }      if (other.parent == null) // other是老祖宗      {        if (parent.parent == other) return isMale ? "grandson" : "granddaughter";        return null;      }      // 非直系      if (isSibling(other)) return isMale ? "brother" : "sister";      if (parent.isSibling(other.parent)) return "cousin";      if (parent.isSibling(other)) return isMale ? "nephew" : "niece";      if (isSibling(other.parent)) return isMale ? "uncle" : "aunt";      return null;    }    public static void main(String[] args)    {      Person a = new Person(null, true);      Person b = new Person(a, true);      Person c = new Person(a, true);      Person d = new Person(a, false);      Person e = new Person(b, false);      Person f = new Person(b, true);      Person g = new Person(c, false);      Person h = new Person(d, true);      Person i = new Person(d, false);      Person j = new Person(d, true);      // 以下省略。。。    } }

冒号课堂§4.2:逻辑范式(3)

时间:2011-06-27 BlogJava xyz98

“这段代码很平凡,毋需多言。再来看看逻辑式语言的做法。”冒号不愿过多地纠缠于细节,随即又换成了Prolog代码——

/* 规则 */ /* 上下两代直系关系 */ father(X,Y)    :- parent(X,Y), male(X). mother(X,Y)    :- parent(X,Y), female(X). child(X,Y)     :- parent(Y,X). son(X,Y)      :- parent(Y,X), male(X). daughter(X,Y)   :- parent(Y,X), female(X). /* 祖孙关系 */ grandparent(X,Y)  :- parent(X,Z), parent(Z,Y). grandfather(X,Y)  :- grandparent(X,Y), male(X). grandmother(X,Y)  :- grandparent(X,Y), female(X). grandchild(X,Y)  :- grandparent(Y,X). grandson(X,Y)   :- grandparent(Y,X), male(X). granddaughter(X,Y) :- grandparent(Y,X), female(X). /* 平辈关系 */ /* 若X与Y有相同的父辈Z,且X不是Y,则X与Y是同胞*/ sibling(X,Y)    :- parent(Z,X), parent(Z,Y), X"==Y. brother(X,Y)    :- sibling(X,Y), male(X). sister(X,Y)    :- sibling(X,Y), female(X). cousin(X,Y)    :- parent(Z,X), parent(W,Y), sibling(Z,W). /* 上下两代旁系关系 */ uncle(X,Y)     :- parent(Z,Y), brother(X,Z). aunt(X,Y)     :- parent(Z,Y), sister(X,Z). nephew(X,Y)    :- parent(Z,X), sibling(Z,Y), male(X). niece(X,Y)     :- parent(Z,X), sibling(Z,Y), female(X). /* 定义一个普适关系relation,方便查询 */ relation(R, X, Y)    :-relations(Rs), member(R,Rs), Q =..[R,X,Y], call(Q). /* 事实

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号