summaryrefslogtreecommitdiffstats
path: root/net/ricketyspace/sicp
diff options
context:
space:
mode:
authorrsiddharth <s@ricketyspace.net>2019-07-15 17:46:05 -0400
committerrsiddharth <s@ricketyspace.net>2019-07-15 17:46:05 -0400
commitb0e69993807380ca9dcecb00533bd20f953c0b25 (patch)
treeec9629c62823fef07a89e6a40c358823c7e15dfe /net/ricketyspace/sicp
parenta4a4996d7d9c6dcb7e48bafcfa5a91fe69d80f70 (diff)
net/ricketyspace/sicp/two/twentynine.scm: Update total-weight.
* net/ricketyspace/sicp/two/twentynine.scm (total-weight): Fix function.
Diffstat (limited to 'net/ricketyspace/sicp')
-rw-r--r--net/ricketyspace/sicp/two/twentynine.scm50
1 files changed, 27 insertions, 23 deletions
diff --git a/net/ricketyspace/sicp/two/twentynine.scm b/net/ricketyspace/sicp/two/twentynine.scm
index 2340f38..073f55e 100644
--- a/net/ricketyspace/sicp/two/twentynine.scm
+++ b/net/ricketyspace/sicp/two/twentynine.scm
@@ -31,31 +31,35 @@
(define (branch-weight b)
(let ((bs (branch-structure b)))
(cond ((not (pair? bs)) bs)
- (else (branch-weight bs)))))
+ (else (+ (branch-weight (left-branch bs))
+ (branch-weight (right-branch bs)))))))
(+ (branch-weight (left-branch mobile))
(branch-weight (right-branch mobile))))
;;; Guile REPL
;;;
-;;; scheme@(guile-user)> ,re (net ricketyspace sicp two twentynine)
-;;; scheme@(guile-user)> (make-mobile (make-branch 3 45) (make-branch 4 (make-branch 5 50)))
-;;; $4 = ((3 45) (4 (5 50)))
-;;; scheme@(guile-user)> (left-branch $4)
-;;; $5 = (3 45)
-;;; scheme@(guile-user)> (right-branch $4)
-;;; $6 = (4 (5 50))
-;;; scheme@(guile-user)> (branch-length (left-branch $4))
-;;; $7 = 3
-;;; scheme@(guile-user)> (branch-structure (left-branch $4))
-;;; $8 = 45
-;;; scheme@(guile-user)> (branch-length (right-branch $4))
-;;; $9 = 4
-;;; scheme@(guile-user)> (branch-structure (right-branch $4))
-;;; $10 = (5 50)
-;;; scheme@(guile-user)> (branch-length (branch-structure (right-branch $4)))
-;;; $11 = 5
-;;; scheme@(guile-user)> (branch-structure (branch-structure (right-branch $4)))
-;;; $12 = 50
-;;; scheme@(guile-user)> (total-weight $4)
-;;; $14 = 95
-
+;;; scheme@(guile-user)> (make-mobile (make-branch 3 45)
+;;; (make-branch 4
+;;; (make-mobile (make-branch 5 50)
+;;; (make-branch 1 20))))
+;;; $11 = ((3 45) (4 ((5 50) (1 20))))
+;;; scheme@(guile-user)> (left-branch $11)
+;;; $12 = (3 45)
+;;; scheme@(guile-user)> (right-branch $11)
+;;; $13 = (4 ((5 50) (1 20)))
+;;; scheme@(guile-user)> (branch-length (left-branch $11))
+;;; $14 = 3
+;;; scheme@(guile-user)> (branch-structure (left-branch $11))
+;;; $15 = 45
+;;; scheme@(guile-user)> (branch-length (right-branch $11))
+;;; $16 = 4
+;;; scheme@(guile-user)> (branch-structure (right-branch $11))
+;;; $17 = ((5 50) (1 20))
+;;; scheme@(guile-user)> (branch-structure (right-branch $11))
+;;; $18 = ((5 50) (1 20))
+;;; scheme@(guile-user)> (left-branch (branch-structure (right-branch $11)))
+;;; $19 = (5 50)
+;;; scheme@(guile-user)> (right-branch (branch-structure (right-branch $11)))
+;;; $20 = (1 20)
+;;; scheme@(guile-user)> (total-weight $11)
+;;; $21 = 115