自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

nomasp

風立ちぬ、いざ生きめやも」

  • 博客(97)
  • 资源 (19)
  • 收藏
  • 关注

原创 【SICP练习】81 练习2.53

练习2.53这些题都比较简单,我就直接贴出结果了。(ab c)( (george))((y1 y2) )(y1y2)#f#f(readshoed blue socks)

2015-02-22 14:06:50 1828

原创 【SICP练习】80 练习2.52

练习2.52在这道题上面的文字中就说到了用segments->painter提供线段表,这里的a小题的代码如下:(segments->painter (list(make-segment (make-vect 0.0 0.0)                                      (make-vect 1.0 1.0))

2015-02-22 14:06:24 1371

原创 【SICP练习】79 练习2.51

练习2.51通过书中前面的内容,我们知道below中来将框架分成上下两部分,而beside将框架分成左右两部分。因此,below定义如下:(define (below painter1 painter2)  (let ((split-point (make-vect 0.0 0.5)))     (let ((paint-top (transform-p

2015-02-22 14:05:56 2695

原创 【SICP练习】78 练习2.50

练习2.50先来定义一个在水平方向上反转画家的函数。(define (flip-horiz painter)  (transform-painter painter                    (make-vect 1.0 0.0)                    (make-vect 0.0 0.0)

2015-02-22 14:05:36 2115

原创 【SICP练习】77 练习2.48-2.49

练习2.48(define (make-segment start end)   (list start end))(define (start-segment s)   (car s))(define (end-segment s)   (cadr s)) 练习2.49待填充

2015-02-22 14:04:49 2073

原创 【SICP练习】76 练习2.47

练习2.47这道题重点就是要理清楚list和cons的关系了。我们依次来写出过程函数。(define (make-frame origin edge1 edge2)   (list origin edge1 edge2))(define (origin-frame f) (car f))(define (edge1-frame f) (cadr

2015-02-22 14:04:11 2059

原创 【SICP练习】75 练习2.46

练习2.46这道题就是彻头彻尾的”构造”了。直接上代码吧。(define (make-vect xcor ycor) (listxcor ycor))(define (xcor-vect v) (car v))(define (ycor-vect v) (cdr v))(define (add-vect first-vectsecond-vect

2015-02-22 14:03:36 2454

原创 【SICP练习】74 练习2.45

练习2.45我们先将right-split和up-split抽象出一个split来。(define (split big-combinersmall-combiner)   (lambda (painter n)       (if (= n 0)          painter          (let ((smaller

2015-02-22 14:03:22 2074

原创 【SICP练习】73 练习2.44

练习2.44这一小节的内容真是太抽象了。这道题就是要我们来类比前面的right-split函数了。(define (up-split painter n)    (if (= n 0)       painter        (let ((smaller (up-split painter (- n 1))))

2015-02-22 14:02:35 2474

原创 【SICP练习】72 练习2.43

练习2.43因为对于(enumerate-interval 1 board-size),Louis的过程会产生(queen-cols (- k 1))个棋盘,而上一练习中给出的代码则只产生board-size个棋盘。上一练习中,如果board-size为8,则会产生行列均为1、2……8的8个棋盘。

2015-02-22 14:02:10 1991

原创 【SICP练习】71 练习2.42

练习2.42这道题曾经在C#中写过,但是写出来的代码却没有Lisp中的朴素。用了一大堆的数组和for循环。但是在这里,用car、cdr来构造就行了。我们按书中给出的步骤来一步一步求解这个问题。首先是棋局,就按书上的示意图,从上往下的来排皇后的位置。诸如此时书中皇后的位置为:’(6 3 1 7 5 8 2 4)。然后就是过程adjoin-position。rest

2015-02-22 14:01:26 2150

原创 【SICP练习】70 练习2.41

练习2.41这道题其实就是书中素数示例的变种,其本质是一样的。因此我们也按照同样的次序来完成这个过程。首先第一步,我们来完成生成3个相异整数构成的三元组。但在上一题中我们已经写出了能够产生2个相异整数构成的二元组了。因此我们只要多产生一个i,让其与产生的二元组结合,便能产生三元组了。那么,开工吧。(define (unique-triples n)   (fla

2015-02-22 14:00:41 2015

原创 【SICP练习】69 练习2.40

练习2.40这道题要我们写一个传入一个整数n然后返回一个序对(i, j)的过程unique-pairs,然后用于上一页的prime-sum-pairs的定义。此时我们要注意在prime-sum-pairs中哪一段代码表达的是这个意思。没错,是flatmap函数。因此我们将其写入到unique-pairs中。(define (unique-pairs n)   (

2015-02-22 14:00:03 1880

原创 【SICP练习】68 练习2.39

练习2.39通过前一习题的类比相信已经知道了fold-left和fold-right的内在意义,本题中要求的逆序数可以用cons来构造。具体为,先将list的第一个元素取出用(cons (car list) ‘() )构造,接着第二个、第三个……用(cons…… (cons (car (car list) ) (cons (carlist) ‘())))。当然了,在这个

2015-02-22 13:59:37 1642

原创 【SICP练习】67 练习2.38

练习2.38这道题比较有意思了,我们先来将fold-left和accumulate类比,accumulate是递归,而fold-left是迭代。前者通过不断地将(op result (car rest)变换成initial,通过将(cdr rest)变换成sequence,而rest一开始其实就是sequence,result一开始则是initial。result—

2015-02-22 13:59:27 1513

原创 【SICP练习】66 练习2.37

练习2.37这道题花了我太长的时间了,一开始我就把题目中的m看成了w。然后题中给出的dot-product的两个参数我还以为一个是向量另一个是矩阵。怎么算都算不出来,直到看到“返回求和...”里的w只有一个i而没有j。好了,那么开始按照题目的要求来做题了。既然发现了自己的错误,那么就知道了dot-product是干嘛的了,它可以用来求一个矩阵中的一列和一个向量的积。因此

2015-02-22 13:58:38 1490

原创 【SICP练习】65 练习2.36

练习2.36虽然accumulate正在变得越来越复杂,但我还并未完全领悟到它的深刻意义。不过直觉告诉对于序列的序列,我们要做的是依次取出它每个序列的第一个元素。此方法来源于网络,我一直都是想着用lambda来写,最后感觉太复杂了。没想到一个map就解决了问题。Lisp中的高阶函数果然不仅仅是函数那么简单,它能做的真是太多了。抽象也不是一般的抽象。简简单单的一个(map

2015-02-22 13:58:05 1882

原创 【SICP练习】64 练习2.35

练习2.35这道题中已经给定了accumulate和map,根据accumulate的参数可以很容易的知道题目中的2处需要我们补充的:(accumulate + 0 (map ...... 因为我们是要累加所有的树叶,这里就需要在map里有一个lambda来讲t中的树叶全部遍历出来,map的第二个参数自然就是t了。而遍历t的过程中,遇到的节点有可能只是一片树叶,但也

2015-02-22 13:57:27 1471

原创 【SICP练习】63 练习2.34

练习2.34书中一开始有2个式子,一个是原式,一个根据Horner规则构造出的式子。而我们同样也可以将待求得式子写成这种方式,而且可以更进一步——那就是写成Lisp的前序表示:(+ 1 (* x (+ 3 (* x (+ 0 (* x (+ 5 (* x(+ 0 x) ) ) ) ) ) ) ) )由此可以观察得出lambda表达式里要做的是:(+ th

2015-02-22 13:57:14 1890

原创 【SICP练习】62 练习2.33

练习2.33既然要用到accumulate,那么我们先来回顾一下这个函数好了。其有三个参数,一个操作符,一个用来作为初始化的值,一个是需要运算的序列。题目中的map已有的定义如下:(define (map p sequence)   (accumulate (lambda (x y) )                nil

2015-02-22 13:56:24 1596

原创 【SICP练习】61 练习2.31-2.32

练习2.31我想说我已经越来越喜欢抽象了,将上一题中的map版本的square-tree抽象的方法是添加一个参数f,f是一个函数,因此将square替换成f即可。如下。(define (map-tree f tree)   (map (lambda (sub-tree)           (if (pair? sub-tree)      

2015-02-22 13:55:59 1310

原创 【SICP练习】60 练习2.30

练习2.30如果这道题感觉有点难度的话,可以回过头来看看75页定义的两个scale-tree。我的定义如下:(define (square-tree tree)   (cond ((null? tree) ‘())         ((not (pair? tree)) (square tree))            (else (c

2015-02-22 13:53:36 1268

原创 【SICP练习】59 练习2.29

练习2.29这种题,还有之前的那个rectangle的题目,对于变量、函数等的命名简直要让人疯掉。先来写出题目中的left-branch和right-branch吧。(define (left-branch mobile)   (car mobile))(define (right-branch mobile)   (cadr mobile))

2015-02-22 13:52:44 1445

原创 【SICP练习】58 练习2.28

练习2.28这道题是要我们找出树的所有树叶,参考第73页下面的count-leaves,当遍历这个树的时候也会有这三种情况:元素为空,元素不成对,以及元素成对。根据这个关系可以写出fringe如下:(define (fringe tree)   (cond ((null? tree) ‘())         ((not (pair? tree))

2015-02-22 13:52:20 1706

原创 【SICP练习】57 练习2.27

练习2.27又是修改程序的题目,要求我们写出的deep-reverse函数要将表中的元素也反转过来,这其中应该要用到递归来实现吧。(define (deep-reverse tree)   (cond ((null? tree) ‘())         ((not (pair? tree)) tree)         (else (r

2015-02-22 13:51:13 1818

原创 【SICP练习】56 练习2.24-2.26

练习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)))))))

2015-02-22 13:50:32 1543

原创 【SICP练习】55 练习2.23

练习2.23这道题就有小小的难度了。(define (for-each f lst)   (cond ((not (null? lst))          (f (car lst))          (for-each f (cdr lst)))))如果用上前面经常用到的begin和if,这里还有另一种for-each实现。(

2015-02-22 13:50:10 2645

原创 【SICP练习】54 练习2.22

练习2.22题目中Louis的第一个程序将items中的元素一个一个的取出来然后平方然后”推“到answer中。而我们在上一题中则是迭代结构,是将元素平方后”推“到一个大盒子中,而大盒子里又有一个元素被平方然后被”推“到另一个稍微小点的大盒子中去。而修改后的程序看似解决了问题,其实错得更加离谱了。比如用(list 1 2 3 4 5)作为items一开始传入,程序先将1

2015-02-22 13:49:27 1969

原创 【SICP练习】53 练习2.21

练习2.21如果在看SICP这本书之前做过其他准备工作,或者看过我的【Scheme归纳】那几篇文章,那这些题都是小case了。(define (square-list items)      (if(null? items)      ‘()      (cons (square (car items)) (square-list (cdr

2015-02-22 13:48:59 1509

原创 【SICP练习】52 练习2.20

练习2.20如果读懂了题目的意思这道题也是不难的,重点就是带点尾部记法形式的define。下面我们就来写出same-parity过程。(define (same-parity fist . other)   (filter (if (even? fist)               even?            odd?) 

2015-02-22 13:48:06 1831

原创 【SICP练习】51 练习2.19

练习2.19这道题的题目比较长,但是难度却不大的。无非就是用cons、car、cdr等等,就像前面的矩形啊点啊什么的。(define (first-denominationcoin-values)   (car coin-values))(define (except-first-denominationcoin-values)   (cdr c

2015-02-22 13:47:33 1758

原创 【SICP练习】50 练习2.18

练习2.18这道题也不难,通过迭代来完成。不过我想整个过程,无论是两个define还是一个define,都只用一个参数,但还为完成,希望有谁会的在博文下面评论咯。(define (reverse list)   (reverse-iter list ‘()))(define (reverse-iter list other)   (if (nul

2015-02-22 13:47:14 2602

原创 【SICP练习】49 练习2.17

练习2.17这道题就比较简单了,直接可以写出如下:(define (last-pair list)   (if (null? (cdr list))      list      (last-pair (cdr list))))

2015-02-22 13:46:25 1972

原创 【SICP练习】48 练习:2.7-2.16【待添加】

待添加

2015-02-22 13:45:47 1637

原创 【SICP练习】47 练习2.6

练习2.6如果这道题还没有做的请务必要先自己思考并检验。如果没有能够求出来,也可以在看完我推导的one之后自己再来推导two。一开始我也不懂题目中的两个式子是什么意思,甚至连怎么用都不知道。但我猜测到是不是可以用这两个式子来构造出one,以及two,还有后面的无数多个。。。既然有了想法,那么就开工吧。我把在Edwin中写的截图下来,因为Edwin会自动缩进比较直观,比w

2015-02-22 13:44:36 4232

原创 【SICP练习】46 练习2.5

练习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类比,得知car是要分离出2^a,cdr是要分离出

2015-02-17 20:10:57 2949

原创 【SICP练习】45 练习2.4

练习2.4直接运用对比的技巧就可以猜测出相应的cdr表示如下:(define (cdr z)   (z (lambda (p q) q)))但我们还是要按照题中要求用代换模型来检验。先来检验car的。(car (cons 0 1))(car (lambda (m) (0 1)))((lambda (z) (z (lambda (p

2015-02-17 20:09:53 2446

原创 【SICP练习】44 练习2.3

练习2.3我们并不必急于写出点什么,先来回过头看看书吧。第56页说到了一种称为按愿望思维的强有力的综合策略。在这道题里,我们就可以假设已经写好了能够表示矩形的代码,以及能够求矩形长和宽的函数。于是像先定义出add-rat一样,我们先定义出求矩形的周长和面机的函数。(define(get-perimeter x)(let ((length (rectang

2015-02-17 20:09:32 2155

原创 【SICP练习】43 练习2.2

练习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))(define(mak

2015-02-17 20:08:36 2211

原创 【SICP练习】42 练习2.1

练习2.1我们已经进入了新的一章,这本书还是蛮会循序渐进的嘛,第一题挺简单的。(define(make-rat n d)  (let ((g (gcd n d)))     (if (       (cons (- (/ n g)) (- (/ d g)))       (cons n d))))

2015-02-17 20:08:09 2324

ELF文件系统格式

ELF文件系统格式。ELF文件系统格式。ELF文件系统格式。

2018-03-16

rubyinstaller

ruby rubyinstaller-1.9.3-p551.exe

2015-12-04

SenchaCmd-4.0.5.87

SenchaCmd-4.0.5.87

2015-12-04

sencha-touch-2.4.2

sencha-touch-2.4.2

2015-12-04

微信多图片选择器

微信多图片选择器,微信多图片选择器,无需积分。

2015-11-05

Windows App 应用开发教程

Windows App 应用开发教程,CSDN博客专家、C#论坛版主所写,为广大微软技术爱好者入门Windows App提供帮助。

2015-09-15

Windows Phone Recovery Tool

Windows Phone Recovery Tool

2015-06-04

Toast通知源码

Toast通知,windows app很常用的一项技术。源码……

2015-05-17

共享目标源码

共享目标源码,和”搜索集成、粘贴板、共享源(http://download.csdn.net/detail/nomasp/8709317)“配套使用。

2015-05-17

搜索集成、粘贴板、共享源

搜索集成、粘贴板、共享源,windows app 应用源码。

2015-05-17

flux小工具

小工具一个,强烈推荐搞计算机的使用……保护视力…… f.lux创意十足很贴心的一款自动屏幕亮度色彩调节,创意在于会根据时间变化,自动调节电脑屏幕的亮度、色彩,让电脑屏幕始终适合保持在适合阅读的状态。f.lux 会据此判断日出、日落时间,分析出特定时间的光照强度,并以此为依据调节屏幕。

2015-05-06

10000的阶层

你想知道10000的阶层是多少吗?答案就在这里……

2015-05-04

unlocker203——VMware安装OS X必备

unlocker203——VMware安装OS X必备

2015-05-03

控制台绘制正弦曲线和余弦曲线同时显示

控制台绘制正弦/余弦曲线,C/C++语言

2015-04-30

控制台绘制正弦/余弦曲线

控制台绘制正弦/余弦曲线,C/C++语言,带注释

2015-04-30

钢琴小程序

钢琴小程序钢琴小程序钢琴小程序钢琴小程序钢琴小程序

2015-03-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除