Assignment 25 — functional chrestomathics
Due Wednesday, April 1
Requirements
- The buddy system is strongly encouraged.
- None of the functions should get input or print output.
- Examine and think about algorithms for the problems. However, do not write any code before class.
- The assignment module file magnificent.py will not be available to the start of class.
Module magnificent.py
- Implements seven functions related to previous tasks performed this semester.
- Tester program seven.py performs basic testing of the module. It will not be available to the start of class.
Function future_me( a, y )
- Returns how a person whose
a
years-old will be in the yeary
. You can assume the current year is 2020.
- Partial output from a sample run of
seven.py
A 15 year-old will be 81 in 2086
A 19 year-old will be 98 in 2099
- Possible algorithm
- Compute difference between
y
and 2020.
- The difference added to
a
is the future age.
Function manhattan_distance( a1, s1, a2, s2 )
- Returns the approximate distance in miles between a person at the corner avenue
a1
and streets1
in Manhattan and a person at the corner of avenuea2
and streets2
in Manhattan.
- NYC distance rules:
- Distance of a Manhattan city block running from one street to the next is on average 1/20th of a mile.
- Distance of a Manhattan city block running from one avenue to the next is on average 3/20th of a mile.
- Partial output from a sample run of
seven.py
Corners ( 6 , 59 ) and ( 7 , 34 ) are 1.4 miles apart
Corners ( 2 , 47 ) and ( 6 , 238 ) are 10.15 miles apart
- Possible algoithm
- Compute absolute value of the street differences
- Compute absolute value of the avenue differences
- The distance between the two locations is the street difference divided by 1/20 plus the avenue difference divided by 3/20
Function relate( x, y )
- Returns
'comes before'
,'is equal to'
, or'comes after'
, depending whether the relationships between stringsx
andy
are respectively:
x
alphabetically comes beforey
,
x
is equal toy
, or
x
alphabetically comes aftery
.
- Partial output from a sample run of
seven.py
kiwi is equal to kiwi
apple comes before banana
orange comes after melon
- Possible algorithm
- Determine which of
x
comes before (<)y
,x
equalsy
, orx
comes after (>)y
applies.
- Return respectively
'comes before'
,'is equal to'
, or'comes after'
depending upon the possible relationships
Function youngest( y )
- Returns the youngest acceptable age for a
y
-year old to date according to the dating folk rule you should only date someone who is at least seven years older than than half your age.
- Partial output from a sample run of
seven.py
19 year old can date a 16 year old
22 year old can date a 18 year old
- Possible algorithm
- Compute and return y divided by 2 plus 7 using integer arithmetic
Function is_dateable( y1, y2 )
- Returns
True
orFalse
whether ay2
-year old is an acceptably-aged date for ay1
-year old.
- Your implementation should make use of function
youngest()
.
- Partial output from a sample run of
seven.py
15 year-old can date a 22 year-old is True
22 year-old can date a 15 year-old is False
19 year-old can date a 18 year-old is True
- Possible algorithm
- Determine minimum dateable age for
y1
- Return whether or not
y2
is at at least that minimum dateable age ofy1
Function mutually_dateable( y1, y2 )
- Returns
True
orFalse
whether both ay2
-year old is an acceptably-aged date for ay1
-year old, and ay1
-year old is an acceptably-aged date for ay2
-year old
- Your implementation should make use of function
is_dateable()
.
- Partial output from a sample run of
seven.py
25 year-old can date a 65 year-old and vice-versa is False
20 year-old can date a 18 year-old and vice-versa is True
- Possible algorithm
- Determine whether or not
y1
is dateable fory2
- Determine whether or not
y2
is dateable fory1
- Return whether or not both dateable conditions are true
Function middle( s )
- If the length of
s
is odd, the function returns the middle character ofs
; otherwise, the function returns the two middle characters ofs
.
- Partial output from a sample run of
seven.py
Middle character of abcde is c
Middle character of abcdef is cd
Middle character of abcd is bc
- Questions
- Suppose
n
is the length ofs
.
- If
n
is odd, what is the middle index ofs
- If
n
is even, what are the middle indices ofs
- Possible algorithm
- Determine the length of
s
- Determine whether that length is odd; that is, whether the remainder of that length divided by 2 is 1.
- Use you answers to the previous questions to get and return the character(s) at the indicated index(s).
© 2020 Jim Cohoon | Resources from previous semesters are available. |