;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Student name: Tommy Gober ; Course: COSC 4153 - Programming Languages ; Assignment: #7 - More Procedures in Scheme ; File name: gober7.scm ; Purpose: implement some moderately difficult algorithms ; Limitations: None known ; Development Computer: personal computer ; Operating System: Windows XP ; Interpreter: DrScheme ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Problem #1 - changeEvensAndOdds ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define (changeEvensAndOdds aList) (cond ((null? aList) '()) ((even? (car aList)) (cons( expt(car aList) 2) (changeEvensAndOdds (cdr aList)))) ((odd? (car aList)) (cons( expt(car aList) 3) (changeEvensAndOdds (cdr aList)))) )) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Problem #2 - Bingo ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define (createCard firstRow secondRow)( list firstRow secondRow ) ) (define (mark cardNum num)(if (= cardNum num) (- cardNum num) cardNum )) (define (markCard card num)( list ( list(mark (caar card) num) (mark (cadar card) num)) ( list(mark (caadr card)num) (mark (cadadr card)num)) )) (define (checkForBingo card)( cond ((and (=(caar card) 0) (=(cadar card) 0)) #t) ;check firstRow ((and (=(caadr card) 0) (=(cadadr card) 0)) #t) ;check secondRow ((and (=(caar card) 0) (=(caadr card) 0)) #t) ;check firstCol ((and (=(cadar card) 0) (=(cadadr card) 0)) #t) ;check secondCol ((and (=(cadar card) 0) (=(caadr card) 0)) #t) ;check NE+SW ((and (=(caar card) 0) (=(cadadr card) 0)) #t) ;check NW+SE (else #f) )) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Problem #3 - tenToEight ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define (tenToEight x)( if (> x 8) (append (tenToEight (truncate(/ x 8))) (list(modulo x 8)) ) (list x))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Problem #4 - eightToTen ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define (eightToTen aList)( if (null? aList) 0 (+ (* (car aList) (expt 8 (- (length aList) 1 ))) (eightToTen (cdr aList))) ))