【SICP练习】141 练习3.72

练习3-72

原文

Exercise 3.72. In a similar way to exercise 3.71 generate a stream of all numbers that can be written as the sum of two squares in three different ways (showing how they can be so written).

代码

 (define (square x) (* x x))
 (define (sum-square x) (+ (square (car x)) (square (cadr x))))
 (define (squaresn s)
         (define (stream-cadr s) (stream-car (stream-cdr s)))
         (define (stream-caddr s) (stream-cadr (stream-cdr s)))
         (let ((scar (stream-car s))
                   (scadr (stream-cadr s))
                   (scaddr (stream-caddr s)))
                 (if (= (sum-square scar) (sum-square scadr) (sum-square scaddr))
                         (cons-stream (list (sum-square scar) scar scadr scaddr)
                                                  (squaresn (stream-cdr (stream-cdr (stream-cdr s)))))
                         (squaresn (stream-cdr s)))))
 (define square-numbers
         (squaresn (weighted-pairs integers integers sum-square))) 
时间: 2024-11-10 07:16:18

【SICP练习】141 练习3.72的相关文章

[逆向]0ctf2015-slimming

slimming是一个64位的ELF文件.由于是逆向题,拿到文件后首先想到用IDA进行静态代码分析,但是发现该程序是静态链接的,其中含有大量的库函数代码,在无法进行符号解析的情况下,对其进行静态代码分析是不太可能的,因此转而进行动态分析. 0x01 初步分析 这个题目的名称slimming字面意思是"减肥",猜测应该是一个与压缩解压缩有关的题目.运行elf后,构造一些输入,观察输出结果: [email protected]:/home/ctf/0ctf2015/slimming# py

GPS坐标互转:WGS-84(GPS)、GCJ-02(Google地图)、BD-09(百度地图)

WGS-84:是国际标准,GPS坐标(Google Earth使用.或者GPS模块)GCJ-02:中国坐标偏移标准,Google Map.高德.腾讯使用BD-09:百度坐标偏移标准,Baidu Map使用 //WGS-84 to GCJ-02GPS.gcj_encrypt(); //GCJ-02 to WGS-84 粗略GPS.gcj_decrypt(); //GCJ-02 to WGS-84 精确(二分极限法)// var threshold = 0.000000001; 目前设置的是精确到小

SVG:中国地图

中国地图 <svg height="578" version="1.1" width="718" xmlns="http://www.w3.org/2000/svg" style="overflow: hidden; position: relative;"><desc style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);&q

私募股权投资基金投资者风险评级分析

背景 根据基金业协会的相关规定,在投资者投资之前需要对其进行风险评价,基金业协会给了个人和机构版本的测评问卷,http://www.amac.org.cn/xhgg/tzgg/392058.shtml. 但是没有给分数,需要基金管理公司根据自身实际情况来设置分值,进而对投资者进行分级. 具体分级情况如下表 分值 风险偏好 0-20 C1 20-40 C2 40-60 C3 60-80 C4 80-100 C5 过程 思路 自己首先根据基金业协会个人版本的测评问卷情况进行了分值设定,具体分值设定如

SICP 习题 (2.17)解题总结:列表的遍历

SICP 习题 2.17 要求我们定义出过程last-pair,它返回只包含给定表里之后一个元素的表. 比如 (last-pair (list 23 72 149 34))的结果应该是(34) 当你开始做这道题的时候你应该已经看完书中有关list操作的内容了,你应该明白car和cdr分别是什么意思,也应该知道如何通过递归调用遍历一个list. 有了以上基础的话完成习题2.17就是小菜一碟啦,基本思路就是不断对目标list进行cdr操作,直到最后一个元素为止. 在递归实现上的基本思路就是看目标li

72&gt;&gt;Windows 网络编程

1 网络编程 API 2 3 4 int WSAStartup( WORD wVersionRequested, LPWSADATA lpWSAData ); lpWSAData 是一个返回值:成功返回 0,失败返回 -1,错误代码 WSASYSNOTREADY 表示基础网络子系统没有准备好网络通行,WSAVERNOTSUPPORTED 表示 Socket 版本不支持,WSAEINPROGRESS 表示一个阻塞的 Sockets 操作在进程中,WSAEPROCLIM 表示 Sockets 支持的

SICP 锻炼 (1.40)解决摘要

SICP 锻炼1.40 是一个休闲的工作非常easy,但它看起来很复杂,单的一道题. 题目原题例如以下: 请定义一个过程cubic, 它和newtons-method过程一起使用在以下形式的表达式里: (newtons-method (cubic a b c) 1) 能逼进三次方程 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2V5Ym9hcmRPVEE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/d

JAVA入门到精通-第72讲-学生管理系统4-model 2模式(1)

删除.查询.添加.修改: -修改: 每个字段都可能修改: //给?赋值 //在prepareStatement语句后面赋值才好用 //修改完了,更新数据 目前为止,已经完成了增删改查-Model1模式 最大特点: 界面和业务逻辑操作是放在一起的: 优点:简单,开发方便: 缺点:代码复用性不高: 中大型项目可读性差,可维护性不高: 前台后端混杂在一起的: 比如:"数据库密码换了, 所有涉及到数据库的地方都需要发生变化" =================================

SICP 习题 (1.46)解题总结

SICP 习题 1.46 要求我们写一个过程iterative-improve,它以两个过程为参数,其中一个参数用来检测猜测是否足够好,另一个参数用来改进猜测.过程iterative-improve应该返回另一个过程,所返回的过程接收一个参数作为初始猜测,然后不断改进猜测直到结果足够好.题目还要求我们使用iterative-improve重写1.1.7的sqrt过程和1.3.3节的fixed-point过程. 因为涉及到高阶函数,所以整个题目理解起来有一点点费劲.不过这道题作为第一章的收官题确实