Skip to content

Instantly share code, notes, and snippets.

@ruandao
ruandao / 2.66.rkt
Created November 30, 2015 13:43
2.66
;#lang planet neil/sicp
#lang racket
(require (planet soegaard/sicp:2:1/sicp))
(define wave einstein)
(define (lookup key bt-data)
(cond ((empty? bt-data) false)
((> key (key-of-root bt-data)) (lookup key (right-branch bt-data)))
((= key (key-of-root bt-data)) (entry-of-root bt-data))
((< key (key-of-root bt-data)) (lookup key (left-branch bt-data)))))
@ruandao
ruandao / decoding.rkt
Created November 30, 2015 13:59
The decoding procedure
;#lang planet neil/sicp
#lang racket
(require (planet soegaard/sicp:2:1/sicp))
(define wave einstein)
(define (make-code-tree left right)
(list left
right
(append (symbols left) (symbols right))
(+ (weight left) (weight right))))
@ruandao
ruandao / 2.67.rkt
Created November 30, 2015 22:12
2.67
;#lang planet neil/sicp
#lang racket
(require (planet soegaard/sicp:2:1/sicp))
(define wave einstein)
(define (make-leaf symbol weight)
(list 'leaf symbol weight))
(define (leaf? obj)
@ruandao
ruandao / 2.68.rkt
Created November 30, 2015 22:57
2.68 编码
;#lang planet neil/sicp
#lang racket
(require (planet soegaard/sicp:2:1/sicp))
(define wave einstein)
(define (make-leaf symbol weight)
(list 'leaf symbol weight))
(define (leaf? obj)
@ruandao
ruandao / 2.69.rkt
Created November 30, 2015 23:29
2.69
;#lang planet neil/sicp
#lang racket
(require (planet soegaard/sicp:2:1/sicp))
(define wave einstein)
(define (make-leaf symbol weight)
(list 'leaf symbol weight))
(define (leaf? obj)
@ruandao
ruandao / 2.70.rkt
Created December 1, 2015 00:21
2.70 编码1970的摇滚乐
;#lang planet neil/sicp
#lang racket
(require (planet soegaard/sicp:2:1/sicp))
(define wave einstein)
(define (make-leaf symbol weight)
(list 'leaf symbol weight))
(define (leaf? obj)
@ruandao
ruandao / 2.71.rkt
Created December 1, 2015 00:51
2.71 生成 n 序列的哈夫曼树
;#lang planet neil/sicp
#lang racket
(require (planet soegaard/sicp:2:1/sicp))
(define wave einstein)
(define (make-leaf symbol weight)
(list 'leaf symbol weight))
(define (leaf? obj)
@ruandao
ruandao / 2.73.b.rkt
Created December 1, 2015 22:32
2.73.b data-directed derivative system
;#lang planet neil/sicp
#lang racket
(require (planet soegaard/sicp:2:1/sicp))
(define wave einstein)
(define (deriv exp var)
(cond ((number? exp) 0)
((variable? exp) (if (same-variable? exp var) 1 0))
(else ((get 'deriv (operator exp)) (operands exp) var))))
(define (operator exp) (car exp))
@ruandao
ruandao / 2.73.c.rkt
Created December 2, 2015 03:48
2.73.c
;#lang planet neil/sicp
#lang racket
(require (planet soegaard/sicp:2:1/sicp))
(define wave einstein)
(define (deriv exp var)
(cond ((number? exp) 0)
((variable? exp) (if (same-variable? exp var) 1 0))
(else ((get 'deriv (operator exp)) (operands exp) var))))
(define (operator exp) (car exp))
@ruandao
ruandao / 2.74.rkt
Created December 2, 2015 23:38
2.74
;#lang planet neil/sicp
#lang racket
(require (planet soegaard/sicp:2:1/sicp))
(define wave einstein)
;; how division's file should structured
;;a '((name1 . rest-of-record) (name2 . rest-of-record) ...)
(define (get-record name file)
(define (read-file-as-list file)
;; 没有io操作的具体信息, 先这样