xiaochen2009 / my-sicp-answers

☯️ SICP 书上的练习题

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

MY SICP ANSWERS

SICP 全称计算机程序的构造和解释,书上主要介绍了程序如何构造,以及程序是如何运行的,全书分 5 章,各章有不同的主题。

我的 SICP 习题册, 有些难的可能还没写出来 ^ ^ ,还要再推敲推敲, 本册子也可能随时弃坑。。。

刷题 Checklist

  1. 偏数学的习题可以试着解一下,实在弄不来就先跳过(数学差,我恨)
  2. 尽量独立得出结果,得出结果后我会去 https://sicp.readthedocs.io/en/latest/index.html 对一下答案看看是否一致 (目前发现几处地方我写的比较简洁 233)
  3. 欢迎交流 ♂ 学习

使用说明

We no longer support OS/2, DOS, or Windows.

此外,MIT/Scheme 目前不再支持 windows 了,在这里我用 racket 的 sicp 包来写书上的习题。关于 racket/sicp 可以参考:https://docs.racket-lang.org/sicp-manual/index.html

安装好 Racket 以及 sicp 包之后,还得设置一下系统 path 以确保命令行工具的使用。

全部都搞好以后可以用命令行工具运行本仓库的 1 + 1 例子:

$ racket ./1+1.rkt

目录

第 1 章 构造过程抽象 (共 33 题)

习题 1.1, 习题 1.2, 习题 1.3, 习题 1.4, 习题 1.5

习题 1.16, 习题 1.17, 习题 1.18, 习题 1.19

习题 1.22, 习题 1.23, 习题 1.24, 1-22 ~ 1-24 中关于时间复杂度的思考, 习题 1.25, 习题 1.26

习题 1.29, 习题 1.30, 习题 1.31, 习题 1.32, 习题 1.33

习题 1.34

习题 1.35, 习题 1.36, 习题 1.37, 习题 1.38, 习题 1.39

习题 1.40, 习题 1.41, 习题 1.42, 习题 1.43, 习题 1.44, 习题 1.45, 习题 1.46

第 2 章 构造数据抽象 (共 46 题)

习题 2.1

习题 2.2, 习题 2.3

习题 2.4, 习题 2.5, 习题 2.6, 对 Church Number 的定义的思考

习题 2.7, 习题 2.8, 习题 2.9, 习题 2.10, 习题 2.11, 习题 2.12, 习题 2.13, 习题 2.15, 习题 2.16 (警告:这个问题非常难)

习题 2.17, 习题 2.18, 习题 2.19, 习题 2.20, 习题 2.21, 习题 2.22, 习题 2.23

习题 2.24, 习题 2.25, 习题 2.26, 习题 2.27, 习题 2.28, 习题 2.29, 习题 2.30, 习题 2.31, 习题 2.32

习题 2.33, 习题 2.34, 习题 2.35, 习题 2.36, 习题 2.37, 习题 2.38, 习题 2.39, 习题 2.40, 习题 2.41, 习题 2.42

习题 2.53, 习题 2.54, 习题 2.55

2.3.2 符号求导

make README.md

$ npm run make 

如何参与编辑

如果你觉得你习题 x.xx 解法更好,想提 PR,请在习题 x.xx 所在的 README.md 中的 # 习题 x.xx 段落之后之后写:

... 其他内容

# 习题 x.xx
原本的解法

# 习题 x.xx @your_name
你的解法

修改完之后,请运行:

$ npm i 
$ npm run make 

当然,也可以直接提 issues。

License

MIT

About

☯️ SICP 书上的练习题

License:MIT License


Languages

Language:Racket 93.3%Language:JavaScript 5.8%Language:TypeScript 1.0%