逻辑学与Prolog学习笔记
int a = 3 + 5; 很自然。如果Matrix a, b要加呢?没有运算符重载,a + b是不行的,只能add(a, b). int a = add(3, 5)也行。如果函数名可以用+呢?+(a, b); +(3, 5). 如果括号和逗号是多余的呢?3 + 5叫中缀表达式,+35叫前缀表达式或波兰式,还有35+后缀/逆波兰式。前缀的好处之一是没有歧义,例如+3*25和+32*5分别相当于中缀的3+2*5和(3+2)*5。中缀要规定运算符优先级,前后缀不需要,为啥我没明白,和“结合律”有关?add是个操作/动作,想到动词verb,动词有宾语,不止一个。is和give也是动词。tom is cat (不聊英语语法),give man horse, give horse man. 动词做谓语,谓词。
Prolog是个好语言,可我咋觉得发明者和写例子的人的英语都诡异呢? cat(tom), friend(sheldon, kripie). 没有catize(猫化)这个词,有befriend这个词。is是动词,除了描述动作,还有/更多陈述事实/命题。有多元谓词。
推理即搜索?
Tom BE Cat
Cat HAVE Leg
>>>Tom HAVE Leg
yes
Penny, Leonard, Raj BE Person
Penny LIKE Leonard; Leonard LIKE Penny; Raj LIKE Penny
this BE_GOOD_COUPLE that IF this LIKE that AND that LIKE this
>>>Penny BE_GOOD_COUPLE Raj
no
Kitchen CONNECTED_TO Hall; Hall CONNECTED_TO Bedroom
Robot AT Kitchen
DEFINE here GOTO there AS NOLONGER AT here and AT there IF AT here AND here CONNECTED_TO there
>>>Robot GOTO Bedroom
no
>>>why
Bedroom no CONNECTED_TO Kitchen
>>>try harder
yes
1, 2, 3 IN A; 2, 4 IN B
%%
a INTERSECT b IS FOREACH x IF x IN a AND x IN b
Prolog一会listing,一会write。不至于不支持\n的写法吧,换个行还得来个nl子句。C++的endl也没啥意思,有flush啊,\n自动flush呗。"%9.2f %7.3f" 用stream的format来写非常啰嗦。
组合爆炸。2个不同的台球,上面分别印着1, 2。从里面取0到2个,组合数=C(2,0) + C(2,1) + C(2,2) = 4 = 2**2. 想象一个机器,每个球下面有个铁片挡着,搬动开关,铁片打开球落下,记为取出。开关从都不按到都按有00 01 10 11四种。2,3,4共4-2+1=3个,3-0+1=4. 背包问题不用写递归。
2>1: 真命题; 3<2: 假命题。>: 关系。(2>1) > (3>2): 不是命题。汪曾祺书里提到某君垂直于黑板。(苹果 比 桔子 好吃) 比 (桔子 比 葡萄 好吃) 好吃。
逻辑学里都是公理吧。
sort是个操作/过程。C里多个procedure 保留字(reserved word)不好吗?python里sorted是个被sort了的对象。def只说了要define,没说定义过程还是函数。for (i = 13; i < 42; i = i + 2) formidable_algorithm(important_data). for为啥是key word? 可能做编译器的人扫描输入,look for for. 我做编译器的,我哪知道你data important不。
class Cat;
tom = Cat();
tom.have_property('leg')
person = { 'Penny', 'Leonard', 'Raj' }
penny.likes = { 'Leonard', 'Raj' }
a = {1, 2, 3}
2 in a
也许能用python的exec()和eval()搞点好玩的:exec('leonard = Person()'); exec('penny.likes += leonard'); 好像也是个费时间换费空间。搜索不需要堆栈吗?
搞个图,节点放Tom, Penny, Lenord,有向的边放谓词(二元)?推理图,推背图。:-)
逻辑学与Prolog学习笔记的更多相关文章
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- seaJs学习笔记2 – seaJs组建库的使用
原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...
- CSS学习笔记
CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...
- HTML学习笔记
HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...
- DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记
今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...
随机推荐
- 数组中只出现过一次的数字 牛客网 剑指Offer
数组中只出现过一次的数字 牛客网 剑指Offer 题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了偶数次.请写程序找出这两个只出现一次的数字. def FindNumsAppearOnce ...
- Codeforces Round #736 (Div. 2)
A,B,C就不说了,又被D题卡住了..... 感觉怎么说呢,就是题解中的三个提示都已经想到了,就是不知道该怎么解决.... D. Integers Have Friends 简述题意:题目要求你找一个 ...
- 如何抓取直播源及视频URL地址-疯狂URL(教程)
直播源介绍 首先,我们来快速了解一下什么是直播源,所谓的直播源,其实就说推流地址,推流地址可能你也不知道是什么,那么我再简单说一下,推流地址就是,当某个直播开播的时候,需要将自己的直播状态实时的展示给 ...
- Git 图形化客户端--Sourcetree
1.图形化客户端: sourcetre下载:https://www.sourcetreeapp.com/ 2.接着并执行SourceTreeSetup-3.1.3.exe,会进入登录或注册bitbuc ...
- APP 自动化之appium元素定位(三)
APP自动化测试关键环节--元素定位,以下我们来了解appium提供的元素定位方法! 1. id定位,id一个控件的唯一标识,由开发人员在项目中指定,如果一个元素有对应的resource-id,我们就 ...
- VSCode PHP 开发环境配置 详细教程
VSCode PHP 开发环境配置 详细教程 这篇文章主要介绍了VScode+PHPstudy配置PHP开发环境的步骤,整理了官方以及优秀第三方的内容,对于学习和工作有一定借鉴意义. 配置过程 第一步 ...
- maven中的distributionManagement的作用
mvn install 会将项目生成的构件安装到本地Maven仓库,mvn deploy 用来将项目生成的构件分发到远程Maven仓库. 本地Maven仓库的构件只能供当前用户使用,在分发到远程Ma ...
- 生产者消费者模型及Golang简单实现
简介:介绍生产者消费者模型,及go简单实现的demo. 一.生产者消费者模型 生产者消费者模型:某个模块(函数等〉负责产生数据,这些数据由另一个模块来负责处理(此处的模块是广义的,可以是类.函数.协程 ...
- [loj2863]组合动作
先用两次猜出第一个字符,后面就不会出现这个字符了 (我们假设这个字符是c0,其余三种字符分别是c1.c2和c3) ,然后考虑已知s的前i个字符(不妨就s),来推出后面的字符 询问:s+c1和s+c2, ...
- [bzoj1105]石头花园
首先$C/2=x_{max}+y_{max}-x_{min}-y_{min}=max(x_{max},y_{max})-min(x_{min},y_{min})+min(x_{max},y_{max} ...