From f258e9a79635cbfba650c293f8bed8e38d37f19a Mon Sep 17 00:00:00 2001 From: John Sarkela Date: Fri, 12 Sep 2025 14:07:34 -0400 Subject: [PATCH] added sample code directory and homework directory with first homework --- homework/hw1/scheme-hw-tests.rkt | 49 ++++++++++++++++++++++++++++++++ homework/tbdTest.rkt | 13 --------- samplecode/tbd.rkt | 15 ++++++++++ samplecode/tbdTest.rkt | 17 +++++++++++ 4 files changed, 81 insertions(+), 13 deletions(-) create mode 100644 homework/hw1/scheme-hw-tests.rkt delete mode 100644 homework/tbdTest.rkt create mode 100644 samplecode/tbd.rkt create mode 100644 samplecode/tbdTest.rkt diff --git a/homework/hw1/scheme-hw-tests.rkt b/homework/hw1/scheme-hw-tests.rkt new file mode 100644 index 0000000..c0ae37c --- /dev/null +++ b/homework/hw1/scheme-hw-tests.rkt @@ -0,0 +1,49 @@ +#lang racket + +(require rackunit "scheme-hw.rkt") + +(define hw-tests + (test-suite "scheme homework tests" + + (test-case "test pick" + (begin + (check-equal? (pick 0 '(1 2 3)) '()) + (check-equal? (pick 7 '(1 2 3)) '()) + (check-equal? (pick 1 '(3 2 1)) 3) + (check-equal? (pick 2 '(3 2 1)) 2) + (check-equal? (pick 3 '(3 2 1)) 1) )) + + (test-case "frontier" + (begin + (check-equal? (frontier 42) '(42)) + (check-equal? (frontier (cons 1 (cons 2 3))) '(1 2 3)) + (check-equal? + (frontier (cons (cons (cons 1 (cons 2 3)) 4) 5)) + '(1 2 3 4 5)) )) + + (test-case "my-reverse" + (begin + (check-equal? (my-reverse '()) '()) + (check-equal? (my-reverse '(1 2 3)) '(3 2 1)) + (check-equal? (my-reverse '(1 (2 3))) '((2 3) 1)))) + + (test-case "deep-reverse" + (begin + (check-equal? (deep-reverse '(1 2 3)) '(3 2 1)) + (check-equal? (deep-reverse '((1 2) (3 4))) '((4 3) (2 1))) + (check-equal? (deep-reverse '()) '()) + (check-equal? (deep-reverse 42) 42) + (check-equal? + (deep-reverse '(1 2 (3 (4 5) 6) ((7 8)))) + '(((8 7)) (6 (5 4) 3) 2 1)) )) + + (test-case "reduce" + (begin + (check-equal? (reduce (lambda (prod each) (* prod each)) '(1 2 3 4) 1) 24) + (check-equal? (reduce (lambda (sum each) (+ sum each)) '(1 2 3 4) 0) 10) + (check-equal? + (reduce (lambda (squares each) (cons (* each each) squares)) '(1 2 3) '()) + '(9 4 1)) )) )) + +(require rackunit/gui) +(test/gui hw-tests) diff --git a/homework/tbdTest.rkt b/homework/tbdTest.rkt deleted file mode 100644 index c449a25..0000000 --- a/homework/tbdTest.rkt +++ /dev/null @@ -1,13 +0,0 @@ -#lang racket - -(require rackunit "tbd.rkt") - -(define hw-tests - (test-suite "scheme unit tests" - - (test-case "test fail" - (begin - (check-equal? 3 4))))) - -(require rackunit/gui) -(test/gui hw-tests) diff --git a/samplecode/tbd.rkt b/samplecode/tbd.rkt new file mode 100644 index 0000000..91bf6a3 --- /dev/null +++ b/samplecode/tbd.rkt @@ -0,0 +1,15 @@ +#lang racket + +(define (my-map f a-list) + (if (null? a-list) + '() + (cons (f (car a-list)) (my-map f (cdr a-list))))) + +(define (co-map f a-list) + (define (co-helper in-list out-list) + (if (null? in-list) + out-list + (co-helper (cdr in-list) (append out-list (list (f (car in-list))))))) + (co-helper a-list '())) + +(provide my-map co-map) \ No newline at end of file diff --git a/samplecode/tbdTest.rkt b/samplecode/tbdTest.rkt new file mode 100644 index 0000000..3ffb726 --- /dev/null +++ b/samplecode/tbdTest.rkt @@ -0,0 +1,17 @@ +#lang racket + +(require rackunit "tbd.rkt") + +(define hw-tests + (test-suite "scheme unit tests" + + (test-case "test my-map" + (begin + (check-equal? (my-map (lambda (x) (* x x)) '(1 2 3)) '(1 4 9)))) + + (test-case "test co-map" + (begin + (check-equal? (co-map (lambda (x) (* x x)) '(1 2 3)) '(1 4 9)))))) + +(require rackunit/gui) +(test/gui hw-tests)