Format: In turning in any programs for the course, please follow these directions:
;;; Henry M. Walker ;;; Box Y-06 ;;; Supplemental Problem 2Also, a comment is needed for every procedure, stating in English what that procedure is supposed to do.
adjacent-sums
that takes a non-empty
list of numbers and returns a list of the sums of adjacent pairs, thus:
(adjacent-sums '(1 2 3 4 5 6 7)) ===> (3 5 7 9 11 13) (adjacent-sums '(-5 12 13 0 -8)) ===> (7 25 13 -8) (adjacent-sums '(7/3 -1/2 8/5 9/4)) ===> (11/6 11/10 77/20) (adjacent-sums '(4 7)) ===> (11) (adjacent-sums '(16)) ===> ()Here's how we'd write it:
(define adjacent-sums (lambda (ls) (if (null? (cdr ls)) '() (cons (+ (car ls) (cadr ls)) (adjacent-sums (cdr ls))) ) ) )
adjacent-elements
that
takes any list of 2 or more numbers and returns a list of the sum of
adjacent sums from the original list. That is, each element on
the returned list will be the sum of two adjacent elements in the original
list.
(adjacent-sums '(3 1 4 1 5 9 2)) ===> (4 5 5 6 14 11) (adjacent-sums '(5 12 12 0)) ===> (17 24 12)
Lists of Descending Numbers
Write and test a Scheme predicate (a procedure that always returns
#t
or #f
) that takes any non-empty list of real
numbers and determines whether they are in descending numerical order, in
the sense that each one is strictly greater than the one that follows it.
(descending? '(150 100 50 0 -50)) ===> #t (descending? '(5.0 4.1 3.8)) ===> #t (descending? '(8 7 6 4 5 3 2 1)) ===> #f (descending? '(0 0 0 0)) ===> #f (descending? '(-3 -2)) ===> #f (descending? '(17)) ===> #t
Another Exercise
A baby sitter charges $1.50 per hour until 9:00 pm (while the kids are still up), $1.00 per hour between 9:00 pm and midnight, and $1.25 per hour after midnight (since late night baby sitting interferes with morning classes).
Write a procedure that takes as arguments the sitter's starting time in hours and minutes and the ending time in hours and minutes and then computes the sitter's fee. Assume all times are between 6:00 pm and 6:00 am.
Programming Note: You may NOT use any if
statements,
loops, or recursion in your procedure(s) for this program. Rather,
you ARE encouraged to use cond
statements to handle the
parallel conditions that arise in this problem.
Grading Passwords
Since many modern computer systems use passwords as a means to provide protection and security for users, a major issue can be the identification of appropriate passwords. The main point should be to choose passwords that are not easily guessed, but which the user has a chance of remembering. For example, passwords related to birthdays, anniversaries, family names, or common words are all easily guessed and should be avoided.
Some common guidelines suggest that a password should contain at least 6 characters and include characters from at least three of the following categories:
Other guidelines indicate that elements of passwords should be pronounceable. One simple measure of this guideline suggests that any group of letters in a password should contain both vowels and consonants.
In Scheme, some procedures are already built-in to test some of these conditions. Specifically, the Scheme standard identifies the procedures char-alphabetic?, char-numeric?, char-whitespace?, char-upper-case?, and char-lower-case?. See the section on characters in the Scheme standard for more details.
(contains? str pred?)which applies the predicate pred? to each character in string str and which returns 1 if some character meets this predicate test and 0 otherwise. For example, contains? should return the following results:
(contains "Walker" char-upper-case?) ===> 1 (contains "Walker" char-lower-case?) ===> 1 (contains "Walker" char-numeric?) ===> 0 (contains "Walker" punctuation?) ===> 0
According to this scale, "Walker" would receive a "B" grade, with points for string length, vowel, consonant, upper-case letter, and lower-case letter.
After writing and debugging your procedures, use the submit process described at the beginning of these supplemental problems to turn in your code. In considering the correctness of your code, be sure to write out (in a paragraph) what cases each procedure might encounter, identify test cases to cover each of those cases, show the testing in your submit file, and comment on the extent to which your code handles those cases correctly.
Reading Test Data
Name Test First Last 1 2 3 Average Egbert Bacon 88 85 92 88.33 . . . Maximum -- -- -- Minimum -- -- --
Angelo Jeff 44 Creston IA 50801 Kramer Mary 37 West Des Moines IA 50265 Lundby Mary 26 Marion IA 52302-0563Thus, a typical line gives the last name, the first name, the district number, the town of residence, the state (always IA), and the town's zip code. The information in these lines is arranged in columns.
Design and write a Scheme program that reads in data from this file and creates two output files, senators-by-district and senators-by-zip-code, in the current working directory. The senators-by-district file should contain the same data as the source file, in the same format, but with the lines arranged by senate district (column 3). The other file, senators-by-zip-code, should contain a list of all senators in the following format
Jeff Angelo Creston, IA 50801A blank line should appear after each senator and city address. In this format, the name appears on a first line (first name, then last), and the city, a comma, the state, and zip code is on the next line -- separated by single spaces in the format shown. Note that a variation of this format (with a street address, if available) might be used for a mailing label.
Any of the following problems may be done for extra credit. As noted in the course syllabus, however, a student's overall problems' average may not exceed 120%.
Unusual Canceling
Of course, some fractions trivially have this property. For example, when numerator and denominator are multiples of 10, such as 20/30, one can always "cancel" the zeroes. Similarly, cancelation is always possible when the numerator and denominator are equal, as in 22/22. Your program should omit these obvious cases.
Albuquerque Bernalillo New Mexico 1891 331767 247 323935 14 5A blank line follows each entry, including the last.
Write a procedure which has a filename as parameter and which answers the following questions about the cities represented in the data files.
This program counts words and sentences in file "comp.text ". Sentence: 1 Words: 29 Sentence: 2 Words: 41 Sentence: 3 Words: 16 Sentence: 4 Words: 22 Sentence: 5 Words: 44 Sentence: 6 Words: 14 Sentence: 7 Words: 32 File "comp.text" contains 198 words words in 7 sentences for an average of 28.3 words per sentence.In this program, you should count a word as any contiguous sequence of letters, and apostrophies should be ignored. Thus, "word", "sentence", "O'Henry", "government's", and "friends'" should each be considered as one word.
Also in the program, you should think of a sentence as any sequence of
words that ends with a period, exclamation point, or question mark.
Exception: A period after a single capital letter (e.g., an initial)
or embedded within digits (e.g., a real number) should not be counted as
being the end of a sentence.
White space, digits, and other punctuation should be ignored.
This document is available on the World Wide Web as
http://www.math.grin.edu/~walker/courses/153.sp01/suppl-prob.html