;;; File: ;;; preconditions-lab.scm ;;; Authors: ;;; Janet Davis ;;; Samuel A. Rebelsky ;;; Jerod Weinman ;;; YOUR NAME HERE ;;; Summary: ;;; Code for the lab entitled "Verifying Preconditions" ; +--------------------+-------------------------------------------------------- ; | Comparing Drawings | ; +--------------------+ ;;; Procedure: ;;; drawing-leftmost ;;; Parameters: ;;; drawing1, a drawing ;;; drawing2, a drawing ;;; Purpose: ;;; Determine the leftmost of drawing1 and drawing2. ;;; Produces: ;;; leftmost, a drawing. ;;; Preconditions: ;;; drawing1 and drawing2 have the correct form for drawings. ;;; Postconditions: ;;; leftmost is equal to either drawing1 or drawing2. ;;; leftmost either begins in the same column as both drawing1 and ;;; drawing2 or begins in the same column as one, and begins to the ;;; left of the other. (define drawing-leftmost (lambda (drawing1 drawing2) (if (< (drawing-left drawing1) (drawing-left drawing2)) drawing1 drawing2))) ;;; Procedure: ;;; drawings-leftmost ;;; Parameters: ;;; drawings, a list of drawings ;;; Purpose: ;;; Find the leftmost drawing in drawings. ;;; Produces: ;;; leftmost, a drawing. ;;; Preconditions: ;;; drawings is nonempty. ;;; drawings contains only drawings. ;;; Postconditions: ;;; leftmost is an element of drawings. ;;; For each drawing, d, in drawings. ;;; (drawing-left leftmost) <= (drawing-left d) (define drawings-leftmost (lambda (drawings) (when (or (not (list? drawings)) (null? drawings) (not (all-drawings? drawings))) (error "drawings-leftmost: requires a non-empty list of drawings, given " drawings)) (if (null? (cdr drawings)) (car drawings) (drawing-leftmost (car drawings) (drawings-leftmost (cdr drawings))))))