;; The first three lines of this file were inserted by DrRacket. They record metadata ;; about the language level of this file in a form that our tools can easily process. #reader(lib "htdp-advanced-reader.ss" "lang")((modname week8_f_full) (read-case-sensitive #t) (teachpacks ((lib "image.ss" "teachpack" "2htdp"))) (htdp-settings #(#t constructor repeating-decimal #t #t none #f ((lib "image.ss" "teachpack" "2htdp"))))) ; gcd : number number -> number ; finds greatest common divisor of two numbers (define (mygcd a b) (find-divisor (min a b) a b) ) (check-expect (mygcd 30 18) 6) (check-expect (mygcd 25 21) 1) ; find-divisor : number number number -> number ; returns greatest common divisor of a and b starting at i (define (find-divisor i a b) (cond [(and (zero? (remainder a i)) (zero? (remainder b i))) i] [else (find-divisor (- i 1) a b)]) ) (check-expect (find-divisor 7 30 18) 6) (check-expect (find-divisor 20 25 21) 1) ; clever-gcd : number number -> number ; finds gcd using Euclidean algorithm (define (clever-gcd bigger smaller) (cond [(zero? smaller) bigger] [else (clever-gcd smaller (remainder bigger smaller))])) ; A ; / \ ; B C ; |\ / | ; D E F ; \ | / ; G ; a graph is : ; (make-graph list-of-symbols (symbol -> list-of-symbols)) (define-struct graph (nodes neighbor)) (define mygraph (make-graph '(a b c d e f) (lambda (node) (cond [(symbol=? node 'a) '(b c)] [(symbol=? node 'b) '(d e)] [(symbol=? node 'c) '(e f)] [(member node '(d e f)) '(g)] [(symbol=? node 'g) '()]))))