prolog吧
关注: 813 贴子: 2,617

prolog是经典的逻辑式编程语言

  • 目录:
  • 程序设计及人工智能
  • 1
    前言 Prolog内置了不少有用的谓词,得知一些,可以提升编程效率。《Programming In Prolog》(https://tieba.baidu.com/p/7964297542)的第6章总结了一些内置谓词,里面有几个我之前不怎么了解,读完后有一定收获。特别是第5节的内容,functor、=..等谓词甚至感觉有些元编程的味道。书中也提到了一些误区并进行了阐述,解答了我之前的一些困惑。我就在此把相关内容整理出来,但愿对后来人是有益的。如果只需要看最最基本的操作,可以看看之前写过的几篇教程
    丁兔 12-23
  • 2
    最近了解到了Prolog,发现它很适合解决我遇到的实际生产中的一个问题。 但是实际生产中面对的数据量比较大,我看到的示例中,Prolog的数据又是一条条存在文件中的,那么对于这种情况是否适合使用Prolog呢?希望有大佬解答一下。
    假如 4-10
  • 20
    Prolog是个很特别的语言。用Prolog时,不禁思考,那些常规语言用多了,我们的思维会不会也有了定式。看到Prolog独特的解决问题的思想,令人耳目一新,有种我能打破常规的错觉。Prolog是第2门让我感到惊艳的编程语言。 几年前通过《七周七语言》《用Prolog和Turbo Prolog语言开发专家系统》学习过Prolog,但内容都不够多,只讲了最基础的语法。后来试图用它真正解决问题时,却又从最开始的惊艳,也渐渐感受到了它的弱点,有时产生了它不过是玩具而已
    端点市 3-11
  • 5
    快考试了,求大佬指导。。 都是基础的
    timeqsz 2-9
  • 1
    刚开始学习prolog语言,很有趣但是遇到了一个问题,想请教吧内各位大佬。 要完成一个给化学方程式配平的程序,例如: balance([A-[al-1],B-[o-2]],[C-[al-2,o-3]]). A = 4, B = 3, C = 2. 或者: balance([A-[li-1,fe-1,o-2],B-[h-2,s-1,o-4]], [C-[fe-1,s-1,o-4],D-[li-2,s-1,o-4],E-[h-2,o-1],F-[o-2]]). A = 4, B= 6, C= 4, D = 2, E = 6, F = 1. 还有: balance([A-[li-1,fe-1,o-2],B-[h-1,cl-1]], [C-[fe-1,cl-2],D-[li-1,cl-1],E-[h-2,o-1],F-[o-2]]). A = 4, B= 12, C= 4, D = 4, E = 6, F = 1. 这些通过我的代码都可以验证,但是当我想要验证这下面
    端点市 1-26
  • 1
    SWI-Prolog的吉祥物是个智慧的猫头鹰,来历还与Prolog的语法相关。 不少编程语言都有自己的吉祥物,像Python的蟒蛇、PHP的大象、Perl的骆驼、Go的地鼠、Rust的螃蟹、Swift的雨燕……(什么编程语言动物园)而它们也都有着自己的寓意。之前很好奇SWI-Prolog的猫头鹰的寓意和来历,但没搜到什么结果。 后来我就直接在SWI-Prolog的论坛上问。有资深的开发者说,猫头鹰是基于一个样式设计的, 而这个样式就是Prolog中用来定义谓词的语法(:-)的翻转。
    丁兔 10-2
  • 1
    vs可以吗?搜扩展没有找到任何东西啊
    端点市 8-13
  • 28
    感觉吧里的人气不高,想通过建立报道帖和水楼的方式提高活跃度。
    端点市 7-29
  • 2
    @傻傻De站着Xiao 你的第二个问题可以说得到了解决。 昨天在思考你的问题时,试了多次,还是没解决。决定网上找找思路。发现了一篇文章(http://www.cpp.edu/~jrfisher/www/prolog_tutorial/2_15.html),它所讲的就是这种问题,图中是一些相连接、互通的点,求两点间的距离;而且它的更进一步,并要推导出路径。 试了下,你的问题可以套用那个代码。看完了文章,发现自己原先的思路有问题,感觉这道题比第一道要难不少。 它的问题中,两点之间的距离还不等
    端点市 5-16
  • 2
    :- use_module(library(lists)). :- use_module(library(clpfd)). fruit(1,apple). fruit(1,orange). fruit(1,grape). fruit(2,banana). fruit(2,strawberry). fruit(2,tomato). fruitsCount(Xa,Xs,Xn):-fruit(Xa,_),findall(X,fruit(Xa,X),Xs),length(Xs,Xn). fruitsGroupingCount:-setof([Xa,Xs,Xn],fruitsCount(Xa,Xs,Xn),Lasn). 请问还有什么更简单的方式可以一步到位不,类似SQL的 create table fruit(Xa,X); select contact(',',X),count(X) from fruit group by Xa的效果。 附加问题1:repeapt有没有用法实力呢? 附加问题2:集合中数据过滤该怎么做?
    端点市 4-6
  • 1
    这个第一题是让干嘛
    丁兔 3-1
  • 0
    有时,我们需要将列表中的元素进行排序。SWI-Prolog内置了sort/2谓词用于排序,它用的是自然归并排序算法(natural merge sort),但那个谓词并不是用Prolog编写的,而是用的C,可能是出于运行效率的考虑。 在这里将展示4种Prolog的排序程序:朴素排序、插入排序、冒泡排序、快速排序。我们首先用“<”“@<”等符号设定排列次序,如设定语句order(X, Y) :- X < Y.进行升序排列。 朴素排序 朴素排序(naive sort),首先生成对象的排列,然后测试生成的列
    端点市 2-4
  • 2
    像图里的用火柴摆出来的等式,问最少要移动几根火柴,才能使等式成立?这个问题能用Prolog解决吗?再发散一下,对任意一个火柴等式,用程序判断能否通过移动N根火柴,使新等式成立,并输出新等式。
    丁兔 1-8
  • 6
    有没有大神可以帮忙看一下,是一道用Prolog解密码谜题,题目就是 TWO +TWO ———— FOUR 新手小白,想请教大神帮忙解答或者改正,还需不需要在最后写solution这类的呢?下面是我写的代码, 但是报错 syntax error: . or operator expected after expression1 error(s)compilation failed 求解!! solution (T, W, O, F, U, R) :- select(T, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], L1), select(W, L1, L2), select(O, L2, L3), select(F, L3, L4), select(U, L4, L5), member(R,15), FOUR is F * 1000 + O * 100 + U * 10 + R, TWO is T * 100 + W * 10 + o, FOUR
    丁兔 1-4
  • 9
    由阿兰·科莫饶尔(Alain Colmerauer)创立的Prolog语言已经到了50岁。 这个是庆祝Prolog年的网页:prologyear.logicprogramming.org。上面有庆祝的活动及一些提议:颁发Prolog奖项、研讨会(11月10日)、Prolog教育计划等等。 还有在筹备中的Prolog公交车:prologyear.logicprogramming.org/PrologBus.html Prolog遗产协会发布了一个纪录片《ALAIN COLMERAUER L'AVENTURE PROLOG》。该视频回顾了阿兰·科莫饶尔在1970 年代初期在马赛创建Prolog的历史,以及此后语言的各种发展。
    端点市 20:16
  • 2
    《Programming In Prolog》的第4.4章节,截断的问题(Problems with the Cut)里,作者讲解了利用截断机制时可能会出的状况。内容很基础,但之前没太留意这个,只是把求解问题就得了,没考虑太多设计之外的情况。书中给出了两个示例: 示例一:将第2个列表附加到第1个列表之后,形成新的列表的代码: append([], X, X) :- !. append([A|B], C, [A|D]) :- append(B, C, D). 然后进行3个询问: ?- append([a,b,c],[d,e], X). ?- append([a,b,c], X, Y). ?- append(X, Y, [a,b,c]). 前2个的结果没什么问题
    端点市 12-4
  • 3
    有3个箱子:一个箱子有两个金币, 一个箱子有一枚金币一枚银币,一个箱子有两枚银币。现在随机选择一个箱子,如果第一枚是金币,那么第二枚也是金币的概率。
    端点市 11-20
  • 1
    有的问题用别的语言写,可能会稍花一些时间,却很适合用Prolog来解决。如Advent of Code的2020年度的第1道问题(https://adventofcode.com/2020/day/1),这个问题本身不难,但用Prolog的话,完全不需要考虑算法。当初用Prolog完成时,感觉自己像是在抖机灵。 题目大意是,从给出一堆数字,找出相加等于2020的2个(第2小问为3个),然后再求出那些加数的乘积。 我直接把那堆数字复制到Vim上,用Vim可以轻易在这个行列前面和后面统一加上内容。然后写好相关谓词,
    丁兔 11-8
  • 0
    之前发现一个关于Prolog的网站,感觉还不错。 http://www.nct9.ne.jp/m_hiroi/prolog/index.html 重要的内容也都讲了,但也不会像手册、书那样巨细无遗,这个网站不会为了体系的完备,讲那些平日用得很少的东西。后面也大多是问题导向的,读起来可能更有兴趣一些。里面还有“又是一个谜题”的章节,比较有意思。
    端点市 10-23
  • 5
    我在几年前写过一系列Prolog教程。当时因为发现在百度经验上可以写文章赚钱,就一直用那个平台进行创作。结果并没有赚多少,还没法提现。😓让各位见笑了。百度经验这种平台写技术类文章体验也不好,早知道当时在博客上创作了。 因为百度经验现在取消了经验杂志这种汇总整理的功能,对连续阅读还是不太方便的。因此我把这些链接汇总到一个博文上,以便大家浏览。其中也夹带了些对Prolog比较主观的感想(大家无视好了)。 由于我不是什么
    地狱星 9-21
  • 1
    《Programming In Prolog》是本Prolog经典入门书籍。它初版发布于1981年,有些年头了,好在后面再版过多次。这次分享的是第5版的。语言是英语。文件是pdf格式,非扫描版。文字可以选定,使用起来就比较舒服。 pan.baidu.com/s/15i6WxAqe2xOzAP-51BszFw?pwd=bebd 提取码: bebd
  • 19
    用Turbo prolog修改一个书上的例子程序。 寻找John的朋友: 条件是这个人喜欢音乐,以及阅读或运动。代码如下: 运行代码,提示我错误光标在hobby实例化
    端点市 7-31
  • 8
    《The Craft of Prolog》这本书写的不错。但正如作者在序言中所说的,它应当作为第3本学习Prolog的书。书是有点老了,但仍有很多非常有价值的内容。 是扫描版的、英语的。 pan.baidu.com/s/1O3JPVmMFr418NQddCxSM4Q 提取码: f5eu
    端点市 6-19
  • 16
    做了个Prolog的递归测试,用Python、Ruby作为对照,让各编程语言计算阶乘。左上角是Python,左下角是Ruby,右边是Prolog。 Python在997以上,就进行不了了,会报错,提示递归得太深;而Ruby能进行到10061;而Prolog到2000000还没问题,似乎还能继续进行更大的。在让Prolog进行运算的时候,电脑轰鸣,执行了10多分钟,得到了结果!那个结果很大,看看上方窗口的滚动条。之前在网上还看到有人说Prolog不适合数学计算呢。看看这,不得不赞叹Prolog的递归和对大数字
    端点市 4-15
  • 3
    Prolog中,小写开头的名字表示对象名、谓词等等,而大写开头的名字表示未知数、变量。没想到还适用于俄语字母,以前以为它只对英文字母有效。 记得几年前SWI-Prolog中,是不能把中文当作对象名的,非要用,还得加个引号括起来。但现在可以了。但中文又没字母大小写的说法,现在中文名称是没法直接当变量了。
    端点市 3-27
  • 8
    如题,我的一个练习是需要制作一个大学的课程表,其中我需要从文件里读取这学期的课程和对应的班级后自动为其分配时间,但是我写出来以后运行得到的结果很奇怪,源代码,问题,和文件截图如下:
  • 2
    发现了一个Prolog教程网站。有次在搜索时,无意发现了这个网站,还有中文。它的内容比较全面。但感觉它是机翻,凑合着看吧。将这个网站加入到吧链接了。 riptutorial.com/zh-CN/prolog/
    端点市 4-10
  • 3
    求教,在SWI-Prolog里,单个_表示的匿名变量和以_开头的变量(例如_G之类的)两者之间区别是什么?
    端点市 12-28
  • 5
    老师让我们在prolog里运行一下就会知道答案,可根本不会用呀
    端点市 12-16
  • 1
    打开SWI-Prolog,输入“X.”,会得到“结果”:42。42是宇宙的终极答案。
  • 0
    为什么domains会报错
  • 7
    2. 自编以下语句程序: 事实: 张磊爱王晴 张磊爱周灵 王晴爱白杨 周灵爱张磊 白杨爱王晴 白杨爱周灵 朱力爱周灵 规则: 情侣 ( 某人甲 , 某人乙 ):- 爱 ( 某人甲 , 某人乙 ), 爱 ( 某人乙 , 某人甲 ). X和Y是情敌:X 喜欢 Z( 代表某个人 ) ,Z 不喜欢 X ,Z喜欢Y 。 询问: 张磊爱王晴么? 张磊都喜欢哪些人? 谁爱周灵? 找出系统中所有的恋人 找出系统中所有的情敌 情敌这个实在是不会,求大佬帮忙一下
    端点市 11-1
  • 22
    Prolog和人工智能 编译:Hyry 整理:丁兔   在我的大学的图书馆里有许多计算机的书籍,可惜它们都非常的老,动不动就是八几年的出版的书,不过由于对计算机的强烈爱好,这种书我也借了许多。大部分都是过时的,不过我偶然一次发现了一种非常特别的计算机语言——Prolog。它的编程思路和我原来所学习的完全不同,非常的简洁,我产生了极大的兴趣,可惜找不到它的解释器,只有看看书过干瘾了。   后来上了网,偶然查到了介绍Prolog的网站
    aibaou 10-25
  • 1
    原文链接:https://xueqiu.com/3993902801/87980147 日本曾试图用Prolog开发第五代计算机,但最终失败了。从研发第五代计算机一事中,除了能了解到Prolog的发展,也能窥见当时的许多科技、政治、文化的风向,对现在同样有借鉴意义。 这篇文章出自尼克的《人工智能简史》,很不错的一本书。
    端点市 10-17
  • 0
    亲爱的prolog吧的吧友们:大家好! “端点市”为本吧吧主候选人得票最多者,共计1张真实票数,根据竞选规则,官方最终批准@端点市,为本吧正式吧主。公示期三天。 吧主上任后,请严格遵守吧主协议 https://tieba.baidu.com/mo/q/newapply/rule?from=task,履行吧主义务,积极投身本吧的发展建设,也请广大吧友进行监督。如出现违规问题,请至贴吧反馈中心进行反馈或者投诉http://tieba.baidu.com/pmc/reportBazhu
  • 39
    http://fengdidi.github.io/blog/archives/ 前言 我一直以来想写一部帮助想学Prolog的朋友学习Prolog的教程,因为我在学习Prolog的过程中,发现有关Prolog的教学文档很少很少,中文的文档更是几乎没有。这给我学习Prolog带来很大的困难,基本上都是在一边摸索一边学习的。所以我幻想着有一天能够写一篇Prolog的入门教程,来帮助其他想学Prolog的朋友对其有一个初步的了解。 这个想法在我心里存在了很久了,但是一直却没有付诸实施。其原因一是我没有太多的时间
    ForkKILLET 7-30
  • 2
    转载自:https://mp.weixin.qq.com/s/4nZfuQpYqOer76xvXjyriw 过去的教训 与许多其他编程语言相比,Prolog很难学习。 部分原因是内在的:Prolog比许多其他编程语言更简单,功能更强大,因此,如果您更熟悉低级语言,则需要更长的时间来习惯于此。 但是,在现有教材的局限性中发现了一个更为重要的原因:在许多情况下,Prolog的教学方式与1980年代和1990年代的教学方式完全相同。过时的教材会导致误解:使用低级和不纯的语言特征会使Prolog程序复杂化或无法进行
    端点市 7-4
  • 6
    谁能告诉我这个语言用什么运行,属于什么平台,百度上根本没有啊,求大神告知,能给我直接发一份完
    端点市 4-24
  • 9
    Visual Prolog 7.3 build7301 http://pan.baidu.com/share/link?shareid=252798&uk=1342525738 visual prolog7.1简体中文手册 http://pan.baidu.c
    傻x啦吧 4-18
  • 4
    为什么这个吧有些冷清? 难道Swiprolog真的在将来的AI应用中会被淘汰吗? 一直在犹豫,是否要花更多的时间来熟悉Swiprolog。 有时觉得逻辑编程很有特点,有时觉得其开放性及三方包的调用兼容性不够, 挺矛盾的.... 有什么建议? 谢谢
    端点市 4-4
  • 4
    See core relations and search (section A.9.9) for usage advice.
    端点市 3-21
  • 3
    @>= 在prolog语言中是什么意思,求大神解答
    望星不锈 12-22
  • 1
    昨天碰到了个Prolog问题,题目是,给出一组随机长度的整数列表,将其偶数移除。 题目最后是解决了,但发现了新的问题。有些询问后的结果,明明按“;”再次询问,显示“false.”,再没有解了,为什么之前的结果出来后不直接结束?而有些询问后,就直接结束了。 代码如下: deleteEven([], []). %递归停止 deleteEven([H|T], L):- %处理偶数 Mod is H mod 2, isEven(Mod), deleteEven(T, L). deleteEven([H|T], [H|L]):- %处理奇数 Mod is H mod 2, \+isEven(Mod), deleteEven(T, L). isEven(0). %判断奇
  • 1
    Visual Prolog 8打开就报错退出,求解决方案
    端点市 9-27

  • 发贴红色标题
  • 显示红名
  • 签到六倍经验

赠送补签卡1张,获得[经验书购买权]

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!