02 2015 档案

摘要:练习2.53这些题都比较简单,我就直接贴出结果了。(ab c)( (george))((y1 y2) )(y1y2)#f#f(readshoed blue socks) 版权声明:本文为 NoMasp柯于旺 原创文章,如需转载请联系... 阅读全文
posted @ 2015-02-22 14:06 nomasp 阅读(108) 评论(0) 推荐(0)
摘要:练习2.52在这道题上面的文字中就说到了用segments->painter提供线段表,这里的a小题的代码如下:(segments->painter (list(make-segment (make-vect 0.0 0.0)(make-vect 1.0 1.0))(make-segment .... 阅读全文
posted @ 2015-02-22 14:06 nomasp 阅读(133) 评论(0) 推荐(0)
摘要: 练习2.51通过书中前面的内容,我们知道below中来将框架分成上下两部分,而beside将框架分成左右两部分。因此,below定义如下:(define (below painter1 painter2)(let ((split-point (make-vect 0.0 0.5)))(l... 阅读全文
posted @ 2015-02-22 14:05 nomasp 阅读(162) 评论(0) 推荐(0)
摘要:练习2.50先来定义一个在水平方向上反转画家的函数。(define (flip-horiz painter)(transform-painter painter(make-vect 1.0 0.0)(make-vect 0.0 0.0)(make-vect 1.0 1.0)))(define (... 阅读全文
posted @ 2015-02-22 14:05 nomasp 阅读(123) 评论(0) 推荐(0)
摘要:练习2.48(define (make-segment start end)(list start end))(define (start-segment s)(car s))(define (end-segment s)(cadr s))练习2.49待填充 ... 阅读全文
posted @ 2015-02-22 14:04 nomasp 阅读(134) 评论(0) 推荐(0)
摘要:练习2.47这道题重点就是要理清楚list和cons的关系了。我们依次来写出过程函数。(define (make-frame origin edge1 edge2)(list origin edge1 edge2))(define (origin-frame f) (car f))(define... 阅读全文
posted @ 2015-02-22 14:04 nomasp 阅读(137) 评论(0) 推荐(0)
摘要:练习2.46这道题就是彻头彻尾的”构造”了。直接上代码吧。(define (make-vect xcor ycor) (listxcor ycor))(define (xcor-vect v) (car v))(define (ycor-vect v) (cdr v))(define (add-... 阅读全文
posted @ 2015-02-22 14:03 nomasp 阅读(127) 评论(0) 推荐(0)
摘要:练习2.45我们先将right-split和up-split抽象出一个split来。(define (split big-combinersmall-combiner)(lambda (painter n)(if (= n 0)painter(let ((smaller ((split big-... 阅读全文
posted @ 2015-02-22 14:03 nomasp 阅读(128) 评论(0) 推荐(0)
摘要:练习2.44这一小节的内容真是太抽象了。这道题就是要我们来类比前面的right-split函数了。(define (up-split painter n)(if (= n 0)painter(let ((smaller (up-split painter (- n 1))))(below pai... 阅读全文
posted @ 2015-02-22 14:02 nomasp 阅读(117) 评论(0) 推荐(0)
摘要:练习2.43因为对于(enumerate-interval 1 board-size),Louis的过程会产生(queen-cols (- k 1))个棋盘,而上一练习中给出的代码则只产生board-size个棋盘。上一练习中,如果board-size为8,则会产生行列均为1、2……8的8个棋盘... 阅读全文
posted @ 2015-02-22 14:02 nomasp 阅读(174) 评论(0) 推荐(0)
摘要:练习2.42这道题曾经在C#中写过,但是写出来的代码却没有Lisp中的朴素。用了一大堆的数组和for循环。但是在这里,用car、cdr来构造就行了。我们按书中给出的步骤来一步一步求解这个问题。首先是棋局,就按书上的示意图,从上往下的来排皇后的位置。诸如此时书中皇后的位置为:’(6 3 1 7 5... 阅读全文
posted @ 2015-02-22 14:01 nomasp 阅读(163) 评论(0) 推荐(0)
摘要:练习2.41这道题其实就是书中素数示例的变种,其本质是一样的。因此我们也按照同样的次序来完成这个过程。首先第一步,我们来完成生成3个相异整数构成的三元组。但在上一题中我们已经写出了能够产生2个相异整数构成的二元组了。因此我们只要多产生一个i,让其与产生的二元组结合,便能产生三元组了。那么,开工吧... 阅读全文
posted @ 2015-02-22 14:00 nomasp 阅读(178) 评论(0) 推荐(0)
摘要:练习2.40这道题要我们写一个传入一个整数n然后返回一个序对(i, j)的过程unique-pairs,然后用于上一页的prime-sum-pairs的定义。此时我们要注意在prime-sum-pairs中哪一段代码表达的是这个意思。没错,是flatmap函数。因此我们将其写入到unique-p... 阅读全文
posted @ 2015-02-22 14:00 nomasp 阅读(131) 评论(0) 推荐(0)
摘要:练习2.39通过前一习题的类比相信已经知道了fold-left和fold-right的内在意义,本题中要求的逆序数可以用cons来构造。具体为,先将list的第一个元素取出用(cons (car list) ‘() )构造,接着第二个、第三个……用(cons…… (cons (car (car ... 阅读全文
posted @ 2015-02-22 13:59 nomasp 阅读(162) 评论(0) 推荐(0)
摘要:练习2.38这道题比较有意思了,我们先来将fold-left和accumulate类比,accumulate是递归,而fold-left是迭代。前者通过不断地将(op result (car rest)变换成initial,通过将(cdr rest)变换成sequence,而rest一开始其实就... 阅读全文
posted @ 2015-02-22 13:59 nomasp 阅读(118) 评论(0) 推荐(0)
摘要:练习2.37这道题花了我太长的时间了,一开始我就把题目中的m看成了w。然后题中给出的dot-product的两个参数我还以为一个是向量另一个是矩阵。怎么算都算不出来,直到看到“返回求和...”里的w只有一个i而没有j。好了,那么开始按照题目的要求来做题了。既然发现了自己的错误,那么就知道了dot... 阅读全文
posted @ 2015-02-22 13:58 nomasp 阅读(188) 评论(0) 推荐(0)
摘要:练习2.36虽然accumulate正在变得越来越复杂,但我还并未完全领悟到它的深刻意义。不过直觉告诉对于序列的序列,我们要做的是依次取出它每个序列的第一个元素。此方法来源于网络,我一直都是想着用lambda来写,最后感觉太复杂了。没想到一个map就解决了问题。Lisp中的高阶函数果然不仅仅是函... 阅读全文
posted @ 2015-02-22 13:58 nomasp 阅读(191) 评论(0) 推荐(0)
摘要:练习2.35这道题中已经给定了accumulate和map,根据accumulate的参数可以很容易的知道题目中的2处需要我们补充的:(accumulate + 0 (map ...... 因为我们是要累加所有的树叶,这里就需要在map里有一个lambda来讲t中的树叶全部遍历出来,map的第二... 阅读全文
posted @ 2015-02-22 13:57 nomasp 阅读(171) 评论(0) 推荐(0)
摘要:练习2.34书中一开始有2个式子,一个是原式,一个根据Horner规则构造出的式子。而我们同样也可以将待求得式子写成这种方式,而且可以更进一步——那就是写成Lisp的前序表示:(+ 1 (* x (+ 3 (* x (+ 0 (* x (+ 5 (* x(+ 0 x) ) ) ) ) ) ) )... 阅读全文
posted @ 2015-02-22 13:57 nomasp 阅读(137) 评论(0) 推荐(0)
摘要:练习2.33既然要用到accumulate,那么我们先来回顾一下这个函数好了。其有三个参数,一个操作符,一个用来作为初始化的值,一个是需要运算的序列。题目中的map已有的定义如下:(define (map p sequence)(accumulate (lambda (x y) )nilsequ... 阅读全文
posted @ 2015-02-22 13:56 nomasp 阅读(144) 评论(0) 推荐(0)
摘要:练习2.31我想说我已经越来越喜欢抽象了,将上一题中的map版本的square-tree抽象的方法是添加一个参数f,f是一个函数,因此将square替换成f即可。如下。(define (map-tree f tree)(map (lambda (sub-tree)(if (pair? sub-t... 阅读全文
posted @ 2015-02-22 13:55 nomasp 阅读(126) 评论(0) 推荐(0)
摘要:练习2.30如果这道题感觉有点难度的话,可以回过头来看看75页定义的两个scale-tree。我的定义如下:(define (square-tree tree)(cond ((null? tree) ‘())((not (pair? tree)) (square tree))(else (con... 阅读全文
posted @ 2015-02-22 13:53 nomasp 阅读(124) 评论(0) 推荐(0)
摘要:练习2.29这种题,还有之前的那个rectangle的题目,对于变量、函数等的命名简直要让人疯掉。先来写出题目中的left-branch和right-branch吧。(define (left-branch mobile)(car mobile))(define (right-branch mo... 阅读全文
posted @ 2015-02-22 13:52 nomasp 阅读(132) 评论(0) 推荐(0)
摘要:练习2.28这道题是要我们找出树的所有树叶,参考第73页下面的count-leaves,当遍历这个树的时候也会有这三种情况:元素为空,元素不成对,以及元素成对。根据这个关系可以写出fringe如下:(define (fringe tree)(cond ((null? tree) ‘())((no... 阅读全文
posted @ 2015-02-22 13:52 nomasp 阅读(130) 评论(0) 推荐(0)
摘要:练习2.27又是修改程序的题目,要求我们写出的deep-reverse函数要将表中的元素也反转过来,这其中应该要用到递归来实现吧。(define (deep-reverse tree)(cond ((null? tree) ‘())((not (pair? tree)) tree)(else (... 阅读全文
posted @ 2015-02-22 13:51 nomasp 阅读(153) 评论(0) 推荐(0)
摘要:练习2.24其打印结果为:(1 (2 (3 4)))练习2.25(define x ‘(1 3 (5 7) 9))(cadr (caddr x));Value: 7(define y ‘((7)))(caar y);Value: 7(define z ‘(1 (2 (3 (4 (5 (6 7))... 阅读全文
posted @ 2015-02-22 13:50 nomasp 阅读(111) 评论(0) 推荐(0)
摘要:练习2.23这道题就有小小的难度了。(define (for-each f lst)(cond ((not (null? lst))(f (car lst))(for-each f (cdr lst)))))如果用上前面经常用到的begin和if,这里还有另一种for-each实现。(defin... 阅读全文
posted @ 2015-02-22 13:50 nomasp 阅读(111) 评论(0) 推荐(0)
摘要:练习2.22题目中Louis的第一个程序将items中的元素一个一个的取出来然后平方然后”推“到answer中。而我们在上一题中则是迭代结构,是将元素平方后”推“到一个大盒子中,而大盒子里又有一个元素被平方然后被”推“到另一个稍微小点的大盒子中去。而修改后的程序看似解决了问题,其实错得更加离谱了... 阅读全文
posted @ 2015-02-22 13:49 nomasp 阅读(131) 评论(0) 推荐(0)
摘要:练习2.21如果在看SICP这本书之前做过其他准备工作,或者看过我的【Scheme归纳】那几篇文章,那这些题都是小case了。(define (square-list items)(if(null? items)‘()(cons (square (car items)) (square-list... 阅读全文
posted @ 2015-02-22 13:48 nomasp 阅读(88) 评论(0) 推荐(0)
摘要:练习2.20如果读懂了题目的意思这道题也是不难的,重点就是带点尾部记法形式的define。下面我们就来写出same-parity过程。(define (same-parity fist . other)(filter (if (even? fist) even?odd?)(cons first ... 阅读全文
posted @ 2015-02-22 13:48 nomasp 阅读(129) 评论(0) 推荐(0)
摘要:练习2.19这道题的题目比较长,但是难度却不大的。无非就是用cons、car、cdr等等,就像前面的矩形啊点啊什么的。(define (first-denominationcoin-values)(car coin-values))(define (except-first-denominati... 阅读全文
posted @ 2015-02-22 13:47 nomasp 阅读(129) 评论(0) 推荐(0)
摘要:练习2.18这道题也不难,通过迭代来完成。不过我想整个过程,无论是两个define还是一个define,都只用一个参数,但还为完成,希望有谁会的在博文下面评论咯。(define (reverse list)(reverse-iter list ‘()))(define (reverse-iter... 阅读全文
posted @ 2015-02-22 13:47 nomasp 阅读(142) 评论(0) 推荐(0)
摘要:练习2.17这道题就比较简单了,直接可以写出如下:(define (last-pair list)(if (null? (cdr list))list(last-pair (cdr list)))) 版权声明:本文为 NoMasp柯... 阅读全文
posted @ 2015-02-22 13:46 nomasp 阅读(95) 评论(0) 推荐(0)
摘要:待添加 版权声明:本文为 NoMasp柯于旺 原创文章,如需转载请联系本人。 阅读全文
posted @ 2015-02-22 13:45 nomasp 阅读(135) 评论(0) 推荐(0)
摘要:练习2.6如果这道题还没有做的请务必要先自己思考并检验。如果没有能够求出来,也可以在看完我推导的one之后自己再来推导two。一开始我也不懂题目中的两个式子是什么意思,甚至连怎么用都不知道。但我猜测到是不是可以用这两个式子来构造出one,以及two,还有后面的无数多个。既然有了想法,那么就开工吧。我... 阅读全文
posted @ 2015-02-22 13:44 nomasp 阅读(151) 评论(0) 推荐(0)
摘要:练习2.5这道题的意思是有一个新的cons,其接受两个参数a、b,并且返回(2^a)*(3^b)。这个比较容易实现了。(define (cons a b)(* (expt 2 a) (expt 3 b)))(cons 2 2);Value: 36根据题中的意思,并将其与car和cdr类比,得知c... 阅读全文
posted @ 2015-02-17 20:10 nomasp 阅读(92) 评论(0) 推荐(0)
摘要:练习2.4直接运用对比的技巧就可以猜测出相应的cdr表示如下:(define (cdr z)(z (lambda (p q) q)))但我们还是要按照题中要求用代换模型来检验。先来检验car的。(car (cons 0 1))(car (lambda (m) (0 1)))((lambda (z... 阅读全文
posted @ 2015-02-17 20:09 nomasp 阅读(159) 评论(0) 推荐(0)
摘要:练习2.3我们并不必急于写出点什么,先来回过头看看书吧。第56页说到了一种称为按愿望思维的强有力的综合策略。在这道题里,我们就可以假设已经写好了能够表示矩形的代码,以及能够求矩形长和宽的函数。于是像先定义出add-rat一样,我们先定义出求矩形的周长和面机的函数。(define(get-peri... 阅读全文
posted @ 2015-02-17 20:09 nomasp 阅读(150) 评论(0) 推荐(0)
摘要:练习2.2(define(make-segment start-point end-point)(cons start-point end-point))(define(start-segment seg)(car seg))(define(start-segment seg)(cdr seg)... 阅读全文
posted @ 2015-02-17 20:08 nomasp 阅读(96) 评论(0) 推荐(0)
摘要:练习2.1我们已经进入了新的一章,这本书还是蛮会循序渐进的嘛,第一题挺简单的。(define(make-rat n d)(let ((g (gcd n d)))(if (< d 0)(cons (- (/ n g)) (- (/ d g)))(cons n d)))) ... 阅读全文
posted @ 2015-02-17 20:08 nomasp 阅读(78) 评论(0) 推荐(0)
摘要:练习1.46这道题要求我们写一个过程iterative-improve,其接受两个过程为参数,一个是判断检测是否足够好的good-enough?和另一个改进猜测的improve。其有一个猜测的数字作为参数,然后返回的是一个过程。我们先来写出这个iterative-improve过程。(defin... 阅读全文
posted @ 2015-02-17 20:06 nomasp 阅读(109) 评论(0) 推荐(0)
摘要:练习1.45如果看到前面的文章,应该知道我喜欢将某个变量n先设成一个固定的数比如3、4什么的。这里我们依旧如此,先来看看如何写出开四次方根的过程。这道题的目的旨在让我们好好回顾前面的内容,毕竟只剩下一道题我们就完完全全的解决了第一章。下面我来带大家一起回顾一下。fixed-point是以1个函数... 阅读全文
posted @ 2015-02-17 20:06 nomasp 阅读(150) 评论(0) 推荐(0)
摘要:练习1.44相信如果大家认真做了前面的几道习题,这一题就比较简单了。smooth过程几乎可以直接写出:(define smooth(lambda (f)(lambda (x)(/ (+ (f (- x dx))(f x)(f (+ x dx)))3))))当然,在这之前应该先将dx关联一个数值,... 阅读全文
posted @ 2015-02-17 20:05 nomasp 阅读(144) 评论(0) 推荐(0)
摘要:练习1.43我不想一开始就将结果贴出啦,而是通过叙述自己的思考来完成这篇博客。上一题中我在纸上写下“传入2个过程并返回1个过程”,事实证明挺有效的,于是这次我也依旧这么做了。repeated需要传入一个过程和一个数字,这个数字决定了这个过程的执行次数。repeated还要返回1个过程,而这个过程... 阅读全文
posted @ 2015-02-17 20:04 nomasp 阅读(158) 评论(0) 推荐(0)
摘要:练习1.42这道题让我彻底爱上了lambda。复合这一概念早在数学中便已经学过了,我们先来根据题目的意思写出能够平方和能够加一这两个过程。可能是因为我看书不认真吧,写了很多次才完成这两个过程。一开始我都是以(define (inc f)......)来开始的,但是每次都没有返回结果。终于醒悟了,... 阅读全文
posted @ 2015-02-17 20:03 nomasp 阅读(171) 评论(0) 推荐(0)
摘要:练习1.41对于一个接受单个参数x的函数f来说,要将它应用多一次的办法是执行以下表达式:(f (f a))由此可得相应的double函数,它接受一个函数f,并且返回一个能将f应用两次的过程:(define (double f)(lambda (x)(f (f x))))(让f作为一个过程)(((... 阅读全文
posted @ 2015-02-17 20:02 nomasp 阅读(207) 评论(0) 推荐(0)
摘要:练习1.39没想到最后一道题如此简单,n和d的过程可以如下定义:(define (n i)(if (= i 1)i(- (* i i))))(define (d i)(- (* 2 i) 1))这里我们就不再重复写成块结构了。(define (tan-cf x k)(cont-frac n d ... 阅读全文
posted @ 2015-02-17 20:01 nomasp 阅读(105) 评论(0) 推荐(0)
摘要:练习1.40首先根据公式x^3+ax^2+bx+c写出相应的cubic过程,它的返回值是一个接受参数x的过程:(define (cubic a b c)(lambda (x)(+ (cube x)(* a (square x))(* b x)c)))(newtons-method (cubic ... 阅读全文
posted @ 2015-02-17 20:01 nomasp 阅读(108) 评论(0) 推荐(0)
摘要:练习1.38我最喜欢做数学上的观察题了,这里也有一个Di,其依次为1,2,1,1,4,1,1,6,1,1,8……我最先看到的是除了一开始的2个之外,每三个数字的规律是前面是两个1,后面是个递增的偶数。于是我们便可轻而易举的写出这个函数了。(define (d i)(if (= (remainde... 阅读全文
posted @ 2015-02-17 20:00 nomasp 阅读(122) 评论(0) 推荐(0)
摘要:练习1.37根据题目中的意思通过观察得到k项有项连分式的一种表达方式:f=N1/(D1+(N2/(…+Nk/Dk)))这个式子可以不断展开,但如果我们把每一个”+”后面的式子记作T(i)。不对,我们应该将每一个N/D记作T(i),因为这组式起始于N/D,且中止与N/D。计N1/D1为T(1),N... 阅读全文
posted @ 2015-02-17 19:59 nomasp 阅读(111) 评论(0) 推荐(0)
摘要:练习1.36这道题要求我们根据书上的newline和display来完成一个新版本的fixed-point。根据题目内容我们分为如下步骤:1、写出能够打印出计算中产生的近似值序列的函数。2、将第一步中的函数写入fixed-point中。3、根据题中的映射关系写出对应函数。4、根据下一节的内容写出... 阅读全文
posted @ 2015-02-17 19:59 nomasp 阅读(173) 评论(0) 推荐(0)
摘要:练习1.35依旧是每一小节中比较简单的第一题,计算黄金分割率的过程如下:(define get-golden-ratio(fixed-point (lambda (x) (+ 1 (/ 1 x))) 1.0))虽然比较简单,但我们还是测试一下:get-golden-ratio;Value: 1.... 阅读全文
posted @ 2015-02-17 19:58 nomasp 阅读(106) 评论(0) 推荐(0)
摘要:练习1.34这道题我一开始不用Edwin的时候觉得是会陷入无限循环之中。后来在Edwin上试了一下才发现会报错,输出如下:(f f);The object 2 is notapplicable.;To continue, call RESTARTwith an option number:;(R... 阅读全文
posted @ 2015-02-07 13:51 nomasp 阅读(107) 评论(0) 推荐(0)
摘要:sealed关键字如果我们将类标记为sealed,编译器将不会允许我们从这个类型派生。(C#结构总是隐式密封的。因此,我们永远不可以从结构继承结构,从类继承结构或从结构继承类。结构只能用于建模独立的、用户定义的数据类型。如果希望是is-a关系,就必须使用类。)使用base关键字控制基类的创建pr... 阅读全文
posted @ 2015-02-07 13:24 nomasp 阅读(166) 评论(0) 推荐(0)
摘要:C#文件属性什么是文件属性文件属性可以用来指示项目系统对应文件执行的操作。具体的操作见下文。Visual Basic和Visual C#的文件都具有4个属性:“FileName”、“BuildAcition”、“CustomTool”、”CustomToolNamespace“。 C... 阅读全文
posted @ 2015-02-07 13:22 nomasp 阅读(376) 评论(0) 推荐(0)
摘要:A Pythagorean triplet is a set of three natural numbers, a < b < c, for which,a2 + b2 = c2For example, 32 + 42 = 9 + 16 = 25 = 52.There exists exact... 阅读全文
posted @ 2015-02-07 12:26 nomasp 阅读(182) 评论(0) 推荐(0)
摘要:A Pythagorean triplet is a set of three natural numbers, a < b < c, for which,a2 + b2 = c2For example, 32 + 42 = 9 + 16 = 25 = 52.There exists exact... 阅读全文
posted @ 2015-02-07 12:26 nomasp 阅读(123) 评论(0) 推荐(0)
摘要://By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13.//What is the 10 001st prime number?static voi... 阅读全文
posted @ 2015-02-07 12:25 nomasp 阅读(130) 评论(0) 推荐(0)
摘要://2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder.//What is the smallest positive number t... 阅读全文
posted @ 2015-02-07 12:24 nomasp 阅读(115) 评论(0) 推荐(0)
摘要://The sum of the squares of the first ten natural numbers is, //12 + 22 + ... + 102 = 385 //The square of the sum of the first ten natural numbers i... 阅读全文
posted @ 2015-02-07 12:24 nomasp 阅读(97) 评论(0) 推荐(0)
摘要://A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 × 99.//Find the la... 阅读全文
posted @ 2015-02-07 12:23 nomasp 阅读(133) 评论(0) 推荐(0)
摘要://The prime factors of 13195 are 5, 7, 13 and 29. //What is the largest prime factor of the number 600851475143 ? static void Main(string[] args) { ... 阅读全文
posted @ 2015-02-07 12:21 nomasp 阅读(108) 评论(0) 推荐(0)
摘要://Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be://1, 2... 阅读全文
posted @ 2015-02-07 12:20 nomasp 阅读(119) 评论(0) 推荐(0)
摘要://If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.//Find the sum of... 阅读全文
posted @ 2015-02-07 12:19 nomasp 阅读(110) 评论(0) 推荐(0)
摘要:一、综述本节我们将来探讨关于图像处理方面的诸多技术和应用。在学完了第一个常用的工具包之后,学习这一节将更加轻松。废话不多说,切入正题。二、平滑处理和图像形态学1、滤波器"平滑处理“或者也称为”模糊处理“,英文名为blurring。对于平滑处理,我们先来介绍一个重要的函数,所有的操作都由这个函数来... 阅读全文
posted @ 2015-02-07 12:17 nomasp 阅读(219) 评论(0) 推荐(0)
摘要:通过HighGUI(high-level graphical user interface)可以实现打开窗口、显示图像、读出和写入图像文件,处理鼠标、光标、键盘事件。而HighGUI主要分成“视频输入/输出”、“图像输入/输出”和“GUI工具”,分别在cacap*、grfmt*和window*源... 阅读全文
posted @ 2015-02-07 12:11 nomasp 阅读(301) 评论(0) 推荐(0)
摘要:实例一int main(){IplImage* img = cvLoadImage("6085.jpg", 1);IplImage* red = cvCreateImage(cvGetSize(img), img->depth, 1);IplImage* green = cvCreateImag... 阅读全文
posted @ 2015-02-07 12:10 nomasp 阅读(240) 评论(0) 推荐(0)
摘要:除了读入图片之外,读写视频也足够简单易学,下面来看看如何读写视频吧。播放硬盘中的视频:#include "highgui.h"int main(int argc,char** argv){ cvNamedWindow("Test2",CV_WINDOW_AUTOSIZE); CvCap... 阅读全文
posted @ 2015-02-07 10:55 nomasp 阅读(299) 评论(0) 推荐(0)
摘要:#include "highgui.h"int main(int argc,char** argv){ IplImage* img=cvLoadImage(argv[1]); cvNamedWindow("Test1",CV_WINDOW_AUTOSIZE); cvShowI... 阅读全文
posted @ 2015-02-07 10:53 nomasp 阅读(123) 评论(0) 推荐(0)
摘要:练习1.33题目第二行描述,只组合起由给定范围得到的项里的那些满足特定条件的项,因此我们需要在这一版本的accumulate中添加一个need-filter?,这个新的谓词可以用来传递下面就要用到的prime?。(define (filtered-accumulateneed-filter? c... 阅读全文
posted @ 2015-02-07 10:37 nomasp 阅读(127) 评论(0) 推荐(0)
摘要:练习1.32因为递归比迭代要更容易实现,因此我先考虑的递归。先将sum和product都列出来。(define (sum term a next b)(if(> a b)0(+(term a)(sum term (next a) next b))))(define (product term a... 阅读全文
posted @ 2015-02-07 10:36 nomasp 阅读(78) 评论(0) 推荐(0)
摘要:练习1.31题目中已经说的很清楚了,product用来返回在给定范围中各点的某个函数值的乘积。我们惊奇的发现这和前面的sum有着很大的相似,无非是将加法换成了乘法:(define (product term a next b)(if(> a b)1(* (term a)(product term... 阅读全文
posted @ 2015-02-07 10:35 nomasp 阅读(158) 评论(0) 推荐(0)
摘要:练习1.30这道题要求将一个递归的规程改成是迭代的,通过对递归版本的sum的观察得出以下变换形式:a—(next a)other—(+ (term a) other)博主英文不太好实在想不出什么好词语了。变换成迭代通俗点讲就是要将sum中最后一行的加号去掉,因为这个是消耗大量空间的根源。如果我们... 阅读全文
posted @ 2015-02-07 10:34 nomasp 阅读(77) 评论(0) 推荐(0)
摘要:练习1.29这道题的数学气息比较浓厚。像变量h和函数y在书中已经有了定义,并且n是偶数。另外通过观察我们发现当k等于0或者n时,y的系数为1;当k为偶数时,y的系数为2;当k为奇数时(在函数中直接用else也可以),y的系数为4。根据书中前面的讲解,需要有一个term作用在a上,还要有一个nex... 阅读全文
posted @ 2015-02-07 10:33 nomasp 阅读(104) 评论(0) 推荐(0)
摘要:练习1.28这道题主要分为三个部分:1、非平凡平方根,并添加到expmod函数中2、类似于fermat-test的过程3、通过已知的素数和非素数来检验下面我们首先来写出能够在遇到非平凡平方根的时候报错的函数,在这个函数中:当x不等于1,x不等于(n-1),并且x的平方对n取余等于1,这三个条件都... 阅读全文
posted @ 2015-02-07 10:31 nomasp 阅读(192) 评论(0) 推荐(0)
摘要:练习1.26这本书的练习好像很多都和某个人有关,不愧是一本经典著作,通过MIT大量的修修补补。下面我们进入正题吧,Louis的问题就在于计算了2次(expmod base (/ exp 2) m),如果是用的square,则只会计算一次。更何况在这多余的一次里,又是一个漫长的迭代。Lisp最吸引... 阅读全文
posted @ 2015-02-07 10:30 nomasp 阅读(128) 评论(0) 推荐(0)
摘要:练习1.27这道题的场景是在注释47中,博主更关心的问题是:(第三行)撞上能欺骗费马检查的值的概率有多少,居然会比什么宇宙射线造成计算机出差。后者个人感觉是永远不会发生的,前者倒是还有可能发生。希望把前者的概率算出来的童鞋将过程列出来啦!言归正传,题目的意思就是要去验算注释47中的那几个Carm... 阅读全文
posted @ 2015-02-07 10:30 nomasp 阅读(98) 评论(0) 推荐(0)
摘要:练习1.25这道题由Alyssa的一个另一版本的expmod来引出,这个expmod的功能和之前的一样的。但是之前版本的expmod每次都有一个remainder来讲乘幂控制在一个不大的范围内,这样通过不断的迭代,将很大的数字分解开来得以加快计算速度。而题目中这一版本的expmod则只通过了一次... 阅读全文
posted @ 2015-02-07 10:29 nomasp 阅读(130) 评论(0) 推荐(0)
摘要:练习1.23首先我们按照题目要求来写出相应的next函数,然后再修改find-divisor函数。(define (next x)(if(= x 2)3(+ n 2)))(define(find-divisor ntest-divisor)(cond((> (square test-diviso... 阅读全文
posted @ 2015-02-07 10:28 nomasp 阅读(87) 评论(0) 推荐(0)
摘要:练习1.24我们先将书中已给出的代码写入Edwin中。(define (fermat-test n)(define (try-it a)(= (expmod a n n) a))(try-it (+ 1 (random (- n 1)))))(define (fast-prime? n time... 阅读全文
posted @ 2015-02-07 10:28 nomasp 阅读(126) 评论(0) 推荐(0)
摘要:练习1.22这道题中需要判断素数的部分书中都已经列出来了,但要求是要找出多个素数,因此我们要有一个能够不断求素数的函数。在C等语言中我们可以通过一个for循环来轻易地求出来,在Scheme中我们完全可以用迭代来实现这一功能。另外因为是要的素数,因此完全不用考虑偶数了。于是我们先来写一个不断求奇数... 阅读全文
posted @ 2015-02-07 10:26 nomasp 阅读(124) 评论(0) 推荐(0)
摘要:练习1.21这道题几乎没有难度,除非在把书中函数写入到Edwin中时输入错误。(smallest-divisor 199);Value: 199(smallest-divisor 1999);Value: 1999(smallest-divisor 19999);Value: 19999 ... 阅读全文
posted @ 2015-02-07 10:26 nomasp 阅读(89) 评论(0) 推荐(0)
摘要:练习1.20 这道题要求我们分别在正则序和应用序的情况下来研究书中的gcd函数,并且还要算出实际执行remainder运算的次数。题目中先问的正则序后问的应用序,但由于应用序比较简单,我们先来看看应用序: (gcd 206 40) (gcd 40 6) (gcd 6 4) (gcd ... 阅读全文
posted @ 2015-02-06 12:22 nomasp 阅读(153) 评论(0) 推荐(0)
摘要:练习1.19题目中说道斐波那契数中将变换T的n次方应用于对偶(1,0)而产生出来,而现在将T看作T(pq)中p=0和q=1的特俗情况。因此对于对偶(a,b)来说,a—bq+a(p+q),b—bp+aq。而对于T(pq)的平方也就是(T(pq))^2,就像之前的a中往b乘以q和往a乘以(p+q),... 阅读全文
posted @ 2015-02-05 19:20 nomasp 阅读(244) 评论(0) 推荐(0)
摘要:练习1.8和前两题一样,依旧是只能用对数步数。而且这个迭代过程要基于加、加倍和折半运算。这一个习题要用到前面的函数,因此最好的做法是,每次都将写好的代码保存起来。(load“Test1.18.scm”)这行代码可以用来加载代码。而保存可以用C-X,C-W。以下是该题的代码,这次我们写成块结构:(... 阅读全文
posted @ 2015-02-05 19:15 nomasp 阅读(115) 评论(0) 推荐(0)
摘要:练习1.17这道题中有2个需要我们自己先写出来的函数double和halve,当然了,这都非常容易实现:(define(double x)(+ x x))(define(halve x)(/ x 2))题目中要求我们设计一个类似于fast-expt的求乘积的过程,并且只用对数的步数。(defin... 阅读全文
posted @ 2015-02-05 19:14 nomasp 阅读(159) 评论(0) 推荐(0)
摘要:练习1.16这道题题目特别长,说的无非就是要用一个不变量记录中间结果,然后写出对数步数内的通过迭代来计算幂的函数,当然了还要用到题目中括号内的那个关系。下面就直接上代码了:(define(fast-expt b n)(fast-expt-iter 1 b n))(define(fast-expt... 阅读全文
posted @ 2015-02-05 19:13 nomasp 阅读(145) 评论(0) 推荐(0)
摘要:(define(cube x) (* x x x))(define(p x) (- (* 3 x) (* 4 (cube x))))(define(sine angle)(if (not (> (abs angle) 0.1))angle(p (sine (/ angle 3.0)))))大家自... 阅读全文
posted @ 2015-02-05 16:23 nomasp 阅读(173) 评论(0) 推荐(0)
摘要:这道练习的翻译有误。原文是:Write a procedure that computes elements of Pascal’s triangle bymeans of a recursive process.正确的翻译应该是计算帕斯卡三角形的各个元素。y :0111121213133 14... 阅读全文
posted @ 2015-02-05 15:55 nomasp 阅读(174) 评论(0) 推荐(0)
摘要:这种题目太像是数学题目了,不过拿到编程上又有一些的难度。我们先根据题目中的条件,写出类似于第25页最下面的变换规则。我们先列出如下内容:a-- f(n-1)f(2)f(3) f(4)f(5)b-- f(n-2)f(1)f(2) f(3)f(4)c—f(n-3)f(0)f(1) f(2)f(3)于... 阅读全文
posted @ 2015-02-05 15:53 nomasp 阅读(122) 评论(0) 推荐(0)
摘要:我们先将Ackermann函数写入Edwin中,当然了,再获取结果之前应该先自己用笔算算。结果如下:(A 1 10);Value: 1024(A 2 4);Value: 65536(A 3 3);Value: 65536其中65536也就是16的四次方。接下来通过连续的n值来观察题目中随后给出的... 阅读全文
posted @ 2015-02-05 13:19 nomasp 阅读(126) 评论(0) 推荐(0)
摘要:以下是第一个加起两个正整数的方法,其中inc将参数加1,dec将参数减1。(define (+ a b)(if(= a 0) b (inc (+ (dec a) b))))用代换模型展示(+ 4 5)如下:(+ 4 5)(inc (+ 3 5))(inc (inc (+ 2 5)))(inc (... 阅读全文
posted @ 2015-02-05 12:56 nomasp 阅读(130) 评论(0) 推荐(0)
摘要:如果对前面的内容理解透彻了,看到这个表达式就知道直接将y换成guess即可。(define (improve guess x)(/(+ (* guess guess)) (* 2 guess)) 3))但是如果中写到这里就认为完成了那就错了,如果还是用书中的good-enough?的话,那也应该... 阅读全文
posted @ 2015-02-05 12:00 nomasp 阅读(131) 评论(0) 推荐(0)
摘要:练习1.7这道题回应了第15页所说的good-enough?并不是一个很好的检测方法。我们首先来按照题目要求用4组最大或最小的数来检测原文中的good-enough?(sqrt-iter 1.0 0.00000081)0.0009;Value: 0.3125863108711088(sqrt-i... 阅读全文
posted @ 2015-02-05 11:10 nomasp 阅读(143) 评论(0) 推荐(0)
摘要:练习1.6这道题通过由一个新版本的if来引出,主要讨论的还是应用序和正则序的问题。我看到“将if提供为一种特殊形式”时还满头雾水,并不太清楚什么特殊形式。当再返回看if的语法时才发现,这在第12页if的一般表达式下面一段。如果得到真值,解释器就去求值并返回其值。注意,在此处已经返回其值了,并没有... 阅读全文
posted @ 2015-02-05 11:08 nomasp 阅读(138) 评论(0) 推荐(0)