summaryrefslogtreecommitdiff
path: root/coding-exercises
diff options
context:
space:
mode:
authorMike Vink <mike1994vink@gmail.com>2023-03-07 22:14:08 +0100
committerMike Vink <mike1994vink@gmail.com>2023-03-07 22:14:08 +0100
commit6f572ec7c12115198dfeb7756bc8d9f02d8c336d (patch)
tree3a682d0e2def0c0f0032037207d2d9fe30f611a4 /coding-exercises
parentbd5f50be83a10363fdfd4f73a377325cf48b5903 (diff)
this was confusing
Diffstat (limited to 'coding-exercises')
-rw-r--r--coding-exercises/2/14.rkt5
-rw-r--r--coding-exercises/2/17.rkt36
-rw-r--r--coding-exercises/2/18.rkt19
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)