Skip to content

Commit e4408f9

Browse files
committed
Add note about graphic language in chapter2
1 parent 756dcf4 commit e4408f9

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

README.org

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,55 @@
3232
raco test chapter1/exercise1-10.scm
3333
#+end_src
3434
* 笔记
35+
** chapter2
36+
*** 图形语言
37+
racket的 =sicp= package 包含了一个画图工具,可以画出类似书中的效果
38+
39+
#+begin_src scheme
40+
#lang racket
41+
(require sicp-pict)
42+
(define (flipped-pairs painter)
43+
(let ((painter2 (beside painter (flip-vert painter))))
44+
(below painter2 painter2)))
45+
46+
(define (right-split painter n)
47+
(if (= n 0)
48+
painter
49+
(let ((smaller (right-split painter (- n 1))))
50+
(beside painter (below smaller smaller)))))
51+
52+
(define (up-split painter n)
53+
(if (= n 0)
54+
painter
55+
(let ((smaller (up-split painter (- n 1))))
56+
(below painter (beside smaller smaller)))))
57+
58+
(define (corner-split painter n)
59+
(if (= n 0)
60+
painter
61+
(let ((up (up-split painter (- n 1)))
62+
(right (right-split painter (- n 1))))
63+
(let ((top-left (beside up up))
64+
(bottom-right (below right right))
65+
(corner (corner-split painter (- n 1))))
66+
(beside (below painter top-left)
67+
(below bottom-right corner))))))
68+
69+
(define (square-limit painter n)
70+
(let ((quarter (corner-split painter n)))
71+
(let ((half (beside (flip-horiz quarter) quarter)))
72+
(below (flip-vert half) half))))
73+
74+
(paint (square-limit einstein 6))
75+
#+end_src
76+
77+
在 =DrRacket= 的运行效果(只能在DrRacket 运行,在终端无法展示图片):
78+
79+
[[file:img/chapter2/square-limit-einstein.png]]
80+
81+
配合 [[file:chapter2/exercise2-49.org][wave的实现]],画出来的效果:
82+
83+
[[file:img/chapter2/wave-square-limit.png]]
3584
** chapter3
3685
*** 蒙特卡罗模拟步骤来计算 π
3786
3.1 赋值与局部变量, 155 页
@@ -88,3 +137,4 @@
88137
#+end_src
89138

90139
这里的蒙特卡罗实现真的是优雅
140+

0 commit comments

Comments
 (0)