- 浏览: 222033 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
andy1015:
请教下楼主rtx问题 ,可以么
用HttpClient实现同步RTX -
cgp17:
请教:Chukwa支持Push数据吗?目前看到的都是Polli ...
基于Hadoo的日志收集框架---Chukwa的源码分析(适配器、代理) -
jimmee:
尼玛, 现在iteye的质量下降到何种水准了.
Mahout协同过滤框架Taste的源码分析 -
aubdiy:
aubdiy 写道我擦。。。。 这你叫分析才看到, 还有个 “ ...
Mahout协同过滤框架Taste的源码分析 -
aubdiy:
我擦。。。。 这你叫分析
Mahout协同过滤框架Taste的源码分析
练习2.2
(define (make-point x y) (cons x y)) (define (x-point p) (car p)) (define (y-point p) (cdr p)) (define (make-segment m n) (cons m n)) (define (start-segment s) (car s)) (define (end-segment s) (cdr s)) (define (midpoint-segment s) (make-point (/ (+ (x-point (start-segment s)) (x-point (end-segment s))) 2.0) (/ (+ (y-point (start-segment s)) (y-point (end-segment s))) 2.0))) 1 ]=> (print-point (midpoint-segment (make-segment (make-point 1 3) (make-point 3 5)))) (2,4)
练习2.3
;; 平面矩形的构造函数和选择函数 ;; 构造函数, 使用两条线段构造平面矩形 (make-rectangle segment1 segment2) ;; 返回平面矩形相邻两边中左边的线段 (left-segment-rectangle rectangle) ;; 返回平面矩形相邻两边中右边的线段 (right-segment-rectangle rectangle) ;; 根据构造函数和选择函数实现计算平面矩形周长的过程 ;; 首先实现计算线段长度的过程, 这里借用2.2中的关于线段和点的过程 (define (segment-length segment) (point-length (start-segment segment) (end-segment segment))) (define (point-length start end) (sqrt (+ (square (- (x-point start) (x-point end))) (square (- (y-point start) (y-point end)))))) ;; 然后实现计算平面矩形周长的过程 (define (perimeter-rectangle rectangle) (+ (* 2 (segment-length (left-segment-rectangle rectangle))) (* 2 (segment-length (right-segment-rectangle rectangle))))) ;; 对构造函数和选择函数做两种实现 ;; 平面矩形可以由相对(不在同一条直线上)的两个长度相同的平行线段构成, 这里没有对是否平行校验 (define (make-rectangle segment1 segment2) (cons segment1 segment2)) (define (left-segment-rectangle rectangle) (car rectangle)) (define (right-segment-rectangle rectangle) (make-segment (start-segment (car rectangle)) (start-segment (cdr rectangle)))) ;; 验证 (perimeter-rectangle (make-rectangle (make-segment (make-point 0 0) (make-point 3 0)) (make-segment (make-point 3 4) (make-point 6 4)))) ;Value: 16 ;; 平面矩形可以由相交(起点相同且不在同一条直线上)的的两条线段构成, 这里没有对十分在同一条直线校验 (define (make-rectangle segment1 segment2) (cons segment1 segment2)) (define (left-segment-rectangle rectangle) (car rectangle)) (define (right-segment-rectangle rectangle) (cdr rectangle)) ;; 验证 (perimeter-rectangle (make-rectangle (make-segment (make-point 0 0) (make-point 3 0)) (make-segment (make-point 0 0) (make-point 3 4)))) ;Value: 16 ;; 对于平面矩形的面积 ;; 首先实现点到直线距离的过程 ;; 点(x0, y0)到直线Ax+By+C=0的距离公式为|Ax0+By0+C|/√A^2+B^2 ;; 将直线方程变换为y=kx+b形式,得到距离公式为|kx0-y0+b|/√k^2+1 (define (point-to-segment point segment) (let ((fun (get-k-b segment))) (/ (abs (+ (* (car fun) (car point)) (- (cdr point)) (cdr fun))) (sqrt (+ (square (car fun)) 1))))) ;; k = (y1-y2)/(x1-x2) ;; b = y1-x1*k (define (get-k-b segment) (let ((k (/ (- (cdr (start-segment segment)) (cdr (end-segment segment))) (- (car (start-segment segment)) (car (end-segment segment)))))) (cons k (- (cdr (start-segment segment)) (* k (car (start-segment segment))))))) ;; 由此实现计算平面矩形面积的过程 (define (area-rectangle rectangle) (* (segment-length (left-segment-rectangle rectangle)) (point-to-segment (end-segment (right-segment-rectangle rectangle)) (left-segment-rectangle rectangle)))) ;; 由平行线段构造平面矩形验证计算面积的过程 (define (right-segment-rectangle rectangle) (make-segment (start-segment (car rectangle)) (start-segment (cdr rectangle)))) (area-rectangle (make-rectangle (make-segment (make-point 0 0) (make-point 3 0)) (make-segment (make-point 3 4) (make-point 6 4)))) ;Value: 12 ;; 由相交线段构造平面矩形验证计算面积的过程 (define (right-segment-rectangle rectangle) (cdr rectangle)) (area-rectangle (make-rectangle (make-segment (make-point 0 0) (make-point 3 0)) (make-segment (make-point 3 0) (make-point 6 4)))) ;Value: 12 ;; 这里将平面矩形理解成了平行四边形,-_-!,不过尝试 (area-rectangle (make-rectangle (make-segment (make-point 0 0) (make-point 3 0)) (make-segment (make-point 3 0) (make-point 3 4)))) ;; 也可以得到正确结果
发表评论
-
SICP学习笔记 2.3.2 实例:符号求导
2012-12-12 09:59 1370练习2.56 (define (deriv ... -
SICP学习笔记 2.2.4 实例:一个图形语言
2012-12-11 21:49 1360练习2.44 (define (up-spl ... -
SICP学习笔记 2.2.3 序列作为一种约定的接口
2012-09-14 17:48 1106练习2.33 ;; map过程即为使用过程p ... -
SICP学习笔记 2.2.2 层次性结构
2012-09-05 15:54 1289练习2.24 ;; 嵌套结构的list 1 ... -
SICP学习笔记 2.2.1 序列的表示
2012-08-31 17:31 1226练习2.17 ;; 直接利用已经实现的lis ... -
SICP学习笔记 2.1.4 扩展练习:区间算术
2012-08-28 17:12 1386练习2.7 ;; 抽象对象"区间& ... -
SICP学习笔记 2.1.3 数据意味着什么
2012-08-26 11:07 1146练习2.4 (define (new-con ... -
SICP学习笔记 2.1.1 实例: 有理数的算术运算
2012-08-18 21:44 919练习 2.1 (define (make-r ... -
SICP学习笔记 1.3.4 过程作为返回值
2012-08-12 11:44 1035练习 1.40 (define (cubic ... -
SICP学习笔记 1.3.3 过程作为一般性的方法
2012-08-12 11:38 913练习 1.35 φ^2 = φ+1 == ... -
SICP学习笔记 1.3.2 用lambda构造过程
2012-07-13 08:50 802练习 1.34 > (d ... -
SICP学习笔记 1.3.1 过程作为参数
2012-07-13 08:44 976练习1.29 (define (sum ... -
SICP学习笔记 1.2.6 实例:素数检测
2012-06-04 11:08 1089练习1.22 ;; runtime函数在stk、ra ... -
SICP学习笔记 1.2.5 最大公约数
2012-05-17 17:35 867练习 1.20 (define (gcd a ... -
SICP学习笔记 1.2.4 求幂
2012-05-11 18:03 927练习1.16 根 ... -
SICP学习笔记 1.2.3 增长的阶
2012-05-09 21:06 1517练习1.14 (define (count-chan ... -
SICP学习笔记 1.1.7 实例:使用牛顿法求平方根
2012-04-25 18:02 1341练习1.6 应用序会对 (def ... -
SICP学习笔记 1.2.2 树形递归
2012-04-25 18:18 962练习1.11 递归过程 (defin ... -
SICP学习笔记 1.2.1 线性的递归和迭代
2012-04-24 17:22 893练习1.9 对于过程 (define ... -
SICP学习笔记 1.1.6 条件表达式和谓词
2012-04-24 17:18 862练习1.1 10 12 8 3 6 ...
相关推荐
- **2.1.2 抽象屏障**: 讨论数据抽象的边界问题。 - **2.1.3 数据的本质**: 深入探讨数据的概念。 - **2.1.4 扩展练习:区间算术**: 通过一个具体的案例来巩固所学知识。 - **2.2 层次数据与闭包属性** - **...
在Python中实现SICP的挑战在于,Python的语法和Lisp有很大区别,但这也为学习者提供了思考不同编程范式的机会。例如,Python的面向对象特性可以用来模拟SICP中的一些过程抽象,而Lisp中的动态作用域在Python中需要...
7. **模块化与系统构造**:如何组织和构建大型系统是SICP的一个重要方面,读者将学习如何使用组合和抽象来构建模块化的软件。 8. **复杂数学应用**:SICP中的一些习题涉及到数学概念,如傅里叶变换、数字信号处理等...
- **抽象屏障 (Abstraction Barriers)**:强调了通过抽象屏障隔离实现细节的重要性。 - **何谓数据 (What Is Meant by Data?)**:探讨了数据的含义以及数据类型的重要性。 - **扩展练习:区间算术 (Extended ...
《SICP笔记和练习》是一份详尽的资源,主要涵盖了由MIT教授们编写的经典计算机科学教材《Structure and Interpretation of Computer Programs》(简称SICP)的学习笔记和练习解答。这份资料以HTML格式呈现,便于在线...
sicp in python 中文版 sicp in python 中文版 sicp in python 中文版 !!!download>>>https://github.com/wizardforcel/sicp-py-zh
在这一章,读者会学习如何用基本的几何形状构建出复杂的图形,并理解如何通过组合和抽象来实现图形变换。这些变换包括平移、旋转、缩放等,它们都是通过定义和应用函数来实现的。这不仅揭示了函数式编程的优雅,也...
Python SICP epub版本,很适合学习抽象的思想,用Python版本比lisp更实用
3. 计算机科学的基础概念:《计算机科学的构造与解释》(SICP)一书涵盖了计算机科学的基础概念,例如程序的解释、计算过程和数据抽象。这些概念是构建更高级抽象和理解计算机如何操作数据的基石。 4. 使用函数构建...
SICP中文第二版SICP中文第二版SICP中文第二版SICP中文第二版SICP中文第二版
本资料集包含了对SICP第一章习题的解答,旨在帮助学习者巩固基础,深化对函数式编程的理解。 首先,让我们关注一下习题解答中的几个关键部分: 1. **1.6.ss**: 这部分可能涉及到函数定义、递归和过程抽象。SICP的...
3. **抽象**:SICP提倡通过创建抽象层来提高代码的可读性和复用性。通过定义新类型和操作,读者可以学习如何构建模块化的程序。 4. **数据结构**:书中的例子涵盖了各种数据结构,如列表、队列、栈和树。这些结构在...
SICP不仅在MIT内部被广泛用作教学材料,而且在全球范围内也享有极高的声誉,被视为学习计算机科学理论基础的必读之作。 #### 二、书籍内容概览 SICP的内容涵盖了程序设计的基本概念、过程抽象、数据抽象、模块化...
4. **数据结构和抽象**:SICP介绍了各种数据结构,如列表、树和队列,以及如何使用递归和高阶函数来操作它们。此外,还讨论了如何通过抽象隐藏实现细节,提高代码的复用性和可维护性。 5. **控制结构和计算的表示**...
《计算机程序的构造和解释》(SICP)是一本极具影响力的计算机科学教材,由Harold Abelson和Gerald Jay Sussman所著,MIT出版社出版。这本书以其深入探讨编程概念、程序设计方法以及计算机系统的工作原理而闻名。1-3...
- **2.1.2 抽象屏障**:探讨抽象屏障的概念,即如何通过封装来隐藏数据的实现细节。 - **2.1.3 数据的含义是什么?**:深入讨论数据的本质及其在计算机科学中的作用。 - **2.1.4 扩展练习:区间算术**:通过区间...
通过学习SICP,学生将能够理解如何设计、分析和实现复杂的程序系统,培养出强大的抽象思维能力。 课程内容涵盖了以下几个关键知识点: 1. **基本编程概念**:包括变量、数据结构(如列表、树)、控制结构(条件...
SICP-Python版本
《学习SICP:探索Racket编程的艺术》 SICP,全称为《Structure and Interpretation of Computer Programs》(计算机程序的结构与解释),是一本经典的计算机科学教材,由Harold Abelson和Gerald Jay Sussman合著,...