diff options
Diffstat (limited to 'coding-exercises/2')
| -rw-r--r-- | coding-exercises/2/14.rkt | 5 | ||||
| -rw-r--r-- | coding-exercises/2/17.rkt | 36 | ||||
| -rw-r--r-- | coding-exercises/2/18.rkt | 19 |
3 files changed, 59 insertions, 1 deletions
diff --git a/coding-exercises/2/14.rkt b/coding-exercises/2/14.rkt index 50d28fc..c2a0ca9 100644 --- a/coding-exercises/2/14.rkt +++ b/coding-exercises/2/14.rkt @@ -49,9 +49,12 @@ (print-interval-percent (mul-interval i1 i1)) (print-interval-percent (mul-interval i1 i2)))) -;; There are at least some problems as I understand: +;; There are at least some problems as I understand from 2.14 and 2.15: ;; 1. Repeated intervals in an equation are dependent on each other ;; 2. Multiplicative identity is undefined and should not be uncertain +;; +;; In 2.16 I would try to rewrite the code to try to make the inverse under multiplication certain +;; and would try to keep track of dependent intervals and maybe only introduce uncertainty once. (define (print-lem) (let ((i1 (make-center-percent 100.0 2.0)) (i2 (make-center-percent 200.0 3.0))) diff --git a/coding-exercises/2/17.rkt b/coding-exercises/2/17.rkt new file mode 100644 index 0000000..e4b1735 --- /dev/null +++ b/coding-exercises/2/17.rkt @@ -0,0 +1,36 @@ +#lang racket +(require sicp) + +(define (append list1 list2) + (if (null? list1) + list2 + (cons (car list1) (append (cdr list1) list2)))) + +(define (length items) + (define (length-iter a c) + (if (null? a) + c + (length-iter (cdr a) (inc c)))) + (length-iter items 0)) + +(define (list-ref items n) + (if (= n 0) + (car items) + (list-ref + (cdr items) + (dec n)))) + +(define (last-pair l) + (if (null? (cdr l)) + l + (last-pair (cdr l)))) + +(define (print-list) + (define odds (list 1 3 5 7 9 11)) + (println odds) + (println (list-ref odds 2)) + (println (length odds)) + (println (append odds (list 22))) + (println (last-pair odds))) + +(print-list) diff --git a/coding-exercises/2/18.rkt b/coding-exercises/2/18.rkt new file mode 100644 index 0000000..5fab5f8 --- /dev/null +++ b/coding-exercises/2/18.rkt @@ -0,0 +1,19 @@ +#lang racket +(require "../../shared/lists.rkt") + +;; grow in reverse method +;; or pointer reversal method in other languages +(define (reverse-rec l) + (define (iter l p) + (cond + ((null? l) p) + (else + (iter + (cdr l) + (cons (car l) p))))) + (iter l (list))) + +(define (print) + (println (list 1 4 9 16 25)) + (reverse (list 1 4 9 16 25))) +(print) |
