Assignment 23 — functional chrestomathics
Due Saturday, April 10
Requirements
- The buddy system is strongly encouraged for this effort.
- None of the functions you develop should get input or print output.
- Examine and think about algorithms for the problems. However, do not write any code before class.
- My module file module
magnificent.py
must be used.
Module magnificent.py
- Implements seven functions most of which are related to tasks performed this semester.
- Module file magnificent.py is unavailable to the start of class.
- Tester program seven.py is unavailable 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 2021.
- Partial output from a sample run of
seven.py
a 20 year-old will be 85 in 2086
a 19 year-old will be 97 in 2099
- Possible algorithm
- Compute difference between 2021 and
y
.
- The future age is total of
a
and the difference.
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
'<'
,'=='
, or'>'
, depending whether the relationships between stringsx
andy
are respectively:
x
alphabetically comes beforey
,
x
is equal toy
, or
x
alphabetically comes aftery
.
- Note: in comparing
x
andy
letter case does not matter
- Partial output from a sample run of
seven.py
kiwi == Kiwi
apple < banana
orange > melon
- Possible algorithm
- Convert
x
andy
into lower case equivalents.
- Determine which case applies:
x
comes beforey
,x
equalsy
, orx
comes aftery
.
- Return respectively
'<'
,'=='
, or'>'
depending upon the particular relationship.
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
a 19 year-old can date a 16 year-old
a 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
a 15 year-old can date a 22 year-old is True
a 22 year-old can date a 15 year-old is False
a 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
a 25 year-old can date a 65 year-old and vice-versa is False
a 20 year-old can date a 18 year-old and vice-versa is True
- Possible algorithm
- Determine whether
y1
is dateable fory2
.
- Determine whether
y2
is dateable fory1
.
- Return whether 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
should be.
Middle of abcde is c
Middle of abcdef is cd
Middle of abcd is bc
- Questions
- How does the remainder operator
%
help you check whether a number is odd?
- Suppose
n
is the length ofs
andm
is isn
//
2
.
- 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
- Use your answer to first question above to test whether the length of
s
is odd.
- Use your answer to the second question above to determine the result.
- Return the result.
🦆 © 2022 Jim Cohoon | Resources from previous semesters are available. |