Skip to content

Commit dd3076c

Browse files
committed
uploaded homework1~8(2017)
Most of these code is shortest in scoreboard
1 parent a7791d3 commit dd3076c

File tree

126 files changed

+26349
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

126 files changed

+26349
-0
lines changed

2015final/combine-f1-f2-n.scm

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#lang racket
2+
3+
(define (square x) (* x x))
4+
(define (inc x) (+ x 1))
5+
(define (db x) (* x 2))
6+
7+
(define (combine f1 f2 n)
8+
;MY CODE BEGIN
9+
(define (combine2 g1 g2) (lambda (x) (g1 (g2 x))))
10+
(foldl combine2 values (build-list n (lambda (i) (combine2 f1 f2)))))
11+
;MY CODE END
12+
((combine square inc 1) 2)
13+
((combine square inc 2) 3)
14+
((combine db inc 3) 2)
15+
((combine inc inc 4) 3)
16+
17+
(display "********") (newline)
18+
19+
(define (myloop)
20+
(let ((n (read))
21+
(x (read)))
22+
(if (eq? n eof)
23+
(void)
24+
(begin (display ((combine inc square n) x))
25+
(newline) (myloop)))))
26+
27+
(myloop)

2015final/divide-number.scm

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
;f[i][j] = f[i][j-1] + f[i-j][min(i-j,j)]
2+
#lang racket
3+
(define N 201)
4+
(define f (build-vector 201 (lambda (x) (make-vector 201 0))))
5+
(define (Fr x y) (vector-ref (vector-ref f x) y))
6+
(define (Fs x y k) (vector-set! (vector-ref f x) y k))
7+
(Fs 0 0 1)
8+
(for-each (lambda (i)
9+
(for-each (lambda (j)
10+
(Fs i j (+ (Fr i (- j 1)) (Fr (- i j) (min (- i j) j))))
11+
) (range 1 (+ i 1)))
12+
) (range 1 201))
13+
(let loop ()
14+
(let ([n (read)])
15+
(unless (eq? n eof)
16+
(displayln (Fr n n))
17+
(loop)
18+
)
19+
)
20+
)
21+

2015final/ex-3.55-partial-sums.scm

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
#lang racket
2+
;book ex 3.55
3+
(require r5rs)
4+
(define env (scheme-report-environment 5))
5+
(eval '(define (stream-car stream) (car stream)) env)
6+
(eval '(define (stream-cdr stream) (force (cdr stream))) env)
7+
(eval '(define-syntax cons-stream
8+
(syntax-rules ()
9+
[(cons-stream x y) (cons x (delay y))])) env)
10+
11+
(eval '(define the-empty-stream '()) env)
12+
(eval '(define (stream-null? stream) (null? stream)) env)
13+
14+
(eval '(define (stream-ref s n) ;取 stream里面第 n 项,n从0开始算
15+
(if (stream-null? s) the-empty-stream
16+
(if (= n 0)
17+
(stream-car s)
18+
(stream-ref (stream-cdr s) (- n 1)))))
19+
env)
20+
21+
22+
(eval '
23+
(define (partial-sums op s) ;以s为参数,返回的流是 s0,(op s0 s1),(op s0 s1 s2), ....
24+
;MY CODE BEGIN (define (partial-sums op s) ;以s为参数,返回的流是 s0,(op s0 s1),(op s0 s1 s2), ....
25+
(define (partial-sums-and-add op s0 s)
26+
(cons-stream (op s0 (stream-car s)) (partial-sums-and-add op (op s0 (stream-car s)) (stream-cdr s))))
27+
(cons-stream (stream-car s) (partial-sums-and-add op (stream-car s) (stream-cdr s))))
28+
;MY CODE END
29+
env)
30+
31+
(define (myloop)
32+
(define (eval-codes codes last-val)
33+
(if (null? codes)
34+
last-val
35+
(eval-codes (cdr codes) (eval (car codes) env))))
36+
37+
(let ((codes (read)))
38+
(if (eq? codes eof)
39+
(void)
40+
(begin (displayln (eval-codes codes (void))) (myloop)))))
41+
(myloop)

0 commit comments

Comments
 (0)