diff options
author | bd <bdunahu@operationnull.com> | 2024-06-09 00:16:27 -0600 |
---|---|---|
committer | bd <bdunahu@operationnull.com> | 2024-06-09 00:16:27 -0600 |
commit | cd47b52a406ebed5b3f82e51168ead27af3795d9 (patch) | |
tree | 78ad89d67dc77e49636634c1237edf6389c5b2d8 /iterative-add | |
parent | 6b40eb033d9c0bda4006f23426c34ef8fda4a0d5 (diff) |
AoC 2020.1 p1
Diffstat (limited to 'iterative-add')
-rw-r--r-- | iterative-add/iterative-add-test.scm | 20 | ||||
-rw-r--r-- | iterative-add/iterative-add.scm | 15 |
2 files changed, 35 insertions, 0 deletions
diff --git a/iterative-add/iterative-add-test.scm b/iterative-add/iterative-add-test.scm new file mode 100644 index 0000000..d318570 --- /dev/null +++ b/iterative-add/iterative-add-test.scm @@ -0,0 +1,20 @@ +;; -*- compile-command: "guile -L . iterative-add-test.scm"; -*- +(use-modules (srfi srfi-64) + (iterative-add)) + + +(test-begin "harness") + +(test-equal "add 0 to 1" + 1 + (iterative-add-generator 1)) + +(test-equal "add 1 to 2" + 3 + (iterative-add-generator 2)) + +(test-equal "add 2 to 6" + 8 + (iterative-add-generator 6)) + +(test-end "harness") diff --git a/iterative-add/iterative-add.scm b/iterative-add/iterative-add.scm new file mode 100644 index 0000000..45c6cf9 --- /dev/null +++ b/iterative-add/iterative-add.scm @@ -0,0 +1,15 @@ +(define-module (iterative-add) + #:export (iterative-add-generator)) + +(define iterative-add + (let ((prev-num 0)) + (lambda (num) + (let ((result + (+ num prev-num))) + (set! prev-num num) + result)))) + +(define (iterative-add-generator num) + "Adds the previously received +number to the current one." + (iterative-add num)) |