摘要:
曼德勃罗特集是人类有史以来做出的最奇异,最瑰丽的几何图形.曾被称为“上帝的指纹”。 这个点集均出自公式:Zn+1=(Zn)^2+C。(此处Z、C均为复数)所有使得该公式无限迭代后的结果能保持有限数值的复数C的集合,构成曼德勃罗集。 曼德勃罗集: 看起来十分美丽和神秘,接下来就让我们用程序来绘制它。
阅读全文
posted @ 2017-05-11 13:03
CknightX
阅读(1736)
推荐(0)
摘要:
``` (define (make leaf symbol weight) (list 'leaf symbol weight)) (define (leaf? object) (eq? (car object) 'leaf)) (define (symbol leaf x) (cadr x)) (
阅读全文
posted @ 2017-05-06 12:17
CknightX
阅读(173)
推荐(0)
摘要:
思路: 1. 定义一个求导算法, 令其在抽象对象上执行求导操作。 可以由以下规约规则完成: dc/dx=0 dx/dx=1 d(u+v)/dx=du/dx+dv/dx d(uv)/dx=u(dv/dx)+v(du/dx) 2. 对抽象对象进行具体表示。 实现: 首先,让我们假定现在已经有了一些过程,
阅读全文
posted @ 2017-05-04 14:58
CknightX
阅读(426)
推荐(0)
摘要:
将表作为序列的表示方式,可以推广到元素本身也是序列的序列。例如,我们可以认为对象((1 2) 3 4)是通过(cons (list 1 2) (list 3 4))构造出来的。 这个表包含三个项,其中第一项本身又是一个表(1 2)。因此可以将其看做一个树形结构:根为((1 2) 3 4),有3个子树
阅读全文
posted @ 2017-05-03 16:39
CknightX
阅读(321)
推荐(0)
摘要:
1.序列的表示 序列 序列(表)是由一个个序对组合而成的,具体来说就是让每个序对的car部分对应这个链的条目,cdr部分则是下一个序对。 对于1 2 3 4这个序列我们可以表示为: 为了方便,上面的序列也可以通过 产生。 表操作 返回表中第n项: n=0,返回表的char n 0,返回表的cdr的第
阅读全文
posted @ 2017-05-03 09:31
CknightX
阅读(313)
推荐(0)
摘要:
(cons x y)实际返回的是一个过程,即内部定义的dispatch,它接收一个参数0或1分别返回x和y。因此,如果z是由(cons x y)产生的过程,(z 0)相当于把0传递给dispatch,就会得到x。(z 1)同理得到y。 (cons x y)返回一个lambda函数,此函数接收一个过程
阅读全文
posted @ 2017-05-02 12:14
CknightX
阅读(669)
推荐(0)
摘要:
new operator new operator即是c++中的关键字new。比如A = new A; 中的new就是new operator。 它执行了三个步骤: 1. 分配内存空间 事实上,分配内存这一操作就是由operator new(size_t)来完成的,如果类A重载了operator n
阅读全文
posted @ 2017-04-24 20:11
CknightX
阅读(184)
推荐(0)
摘要:
第一级配置器是对C的内存分配函数malloc,free,realloc的简单封装,用来分配大于128bytes的区块。 第二级配置器管理16个free-lists链表,各自管理8-128bytes的小额区块。 链表节点结构如下: 当一个区块未被使用时,其前端sizeof(obj)的空间用于存放uni
阅读全文
posted @ 2017-04-24 19:54
CknightX
阅读(199)
推荐(0)
摘要:
《现代操作系统》 《深入理解Linux内核》 《Linux内核设计与实现》 《深度探索c++对象模型》 《计算机程序的构造和解释》 《编程珠玑》
阅读全文
posted @ 2017-04-24 12:20
CknightX
阅读(123)
推荐(0)
摘要:
最近参照一些资料实现了一个非常简易的正则表达式引擎,支持基本的正则语法 | + ()等。 实现思路是最基本的:正则式 AST NFA DFA。 以下是具体步骤: 一. 正则式 AST: 这一步没什么好说的,因为正则表达式的语法较为简单,使用编译原理中的递归下降的方法, 可以很容易的构造出一个语法分析
阅读全文
posted @ 2017-04-22 11:45
CknightX
阅读(1159)
推荐(0)