CPSC 217: Mini-Assignment 4b
Due at 4 PM. For assignment due dates see the main
schedule on
the course webpage.
The program must be written and run under python version 3.X.
New Concepts to be applied for the assignment
Only new concepts that need to be applied in the assignment are listed, concepts
previously applied in other assignments may need to used in the implementation
of your solution.
Functional requirements
Augment the existing program so that it will 'clean'
the simulated world (4x4 list) of 'poop'. It will also [count]
and display the number of occurrences of a user specified string. Finally the
user can specify the part of the world that will be included in the cleaning and
the counting via [end point of the
process].
In order to get credit for this assignment you must use
the starting code ("map_starting.py").
The starting code will randomly populate a 4x4 list and display the current
state. Because the initialization is random you will get a different pattern
each time that you run the program so your program must work regardless of the
starting pattern.
Here is an outline of the entire program:
def clean(world,endRow,endColumn):
# You must
implement
(it's largely empty)
def count(world,endRow,endColumn):
# You must augment
# Randomly generates an 'occupant' for a location in the world
def createElement():
# It's
been pre-written for you :D
# Creates the SIZExSIZE world (SIZE = a named constant). Randomly populates
it with the
# return values from function createElement
def createWorld():
# It's
been pre-written for you :D
def getEndPoint():
# You must implement
from scratch
# Shows the elements of the world. All the
elements in a row will appear on the same line.
def display(world):
# It's
been pre-written for you :D
def start():
world = createWorld() # Randomly generate world using the above two
functions: createWorld and createElement
display(world)
endRow,endColumn = getEndPoint()
# Get the last (row, column) on which the clean and count operations will
affect
element,number = count(world) # Count # instances (in the
world) of a user entered character
print("# occurrences of %s=%d" %(element,number))
clean(world) # Remove the "undesired
bio-matter debris"
from the world
display(world) # Show again the 'cleaned' worldstart()
Below is the additional details of the three functions
you are to implement for this assignment:
count(),
clean()
and
getEndPoint():
Example simulated world

getEndPoint():
There is no starting code, you
must implement this function from scratch.
-
Input/parameter/argument: None
- Return value:
two integers.
The function will repeatedly prompt the user for the 'end point' (last
included row and column) on which the count and the clean operations will occur.
-
For instance if the user enters a row of 3 and a column of 3 then the
two operations will occur from row 0 to row 3 and from column 0 to
column 3 (i.e. the whole list).
-
If the user enters a row of 0 and a
column of 0 then count and cleaning will only occur on the first
element.
-
The program should indicate to the user the valid range of
values that can be entered (0-3) and repeatedly prompt for a value so
long as a value outside this range is entered. That is this function
must return two numbers in the range from 0 - 3.
-
It can be assumed that
the user will only enter an integer value.
Count of 'T' in the example simulated world

# Starting code
def count(world,endRow,endColumn):
print("Counting number of
occurrences of a character")
number = 0
element = input("Enter character: ")
# Insert your answer here for
counting occurrences
return(element,number)
Input/parameter/argument: a reference to a 2D list (already randomly
initialized), the last (row, column) on which the count will be
conducted.
- E.g. 1: If the
user enters (0,0) then only the first element will be included in the
count (count will either be zero or one).
- E.g. 2: If the
user enters (2,3) then only the elements of the first three rows and all
four columns will included in the count.
- E.g. 3: If the
user enters (3,3) then the entire list will included in the count.
- Return value: an
integer (count) and string (entered by the user)
- The function
will search through the list and count the number of occurrences of the
character (single character String) entered by the user.
The return values will be used by the start() function
to
show the user the number of
occurrences of this character:
element,number = count(world,endRow,endColumn)
print("# occurrences of %s=%d" %(element,
number))
(Worth
1.5 GPA)
Description of
Clean():
Cleaning the 'poop' from the example simulated
world

# Starting code
def clean(world,endRow,endColumn):
print("Scooping the poop")
# Insert your answer here for removing instances of the
'poop'
character - the character is another pre-defined named constant
-
Input/parameter/argument: a reference to a 2D list (already randomly
initialized),
the last (row,column) on which the cleaning will occur.
- Return value:
None
The function will find and replace all occurrences of the 'poop'
character (POOP = "O")
with the 'cleaned' character (CLEANED = ".")
Note: that in the start() function
after returning from clean() the
'world' list will be displayed again so the user can see the updated
world.
Note: you can be awarded credit for each of the 3
functions regardless of whether the other functions were complete or correct.
For instance you can be awarded 1.0 GPA for just writing a function that
properly gets and returns the end point from the user. Conversely if your function for
getting the end point wasn't correct but the other functions were complete and
correct (i.e. the count and cleaning always occurred on the whole list) then a
maximum 3.0 GPA could be awarded for the assignment.
There is a sample run of my solution ("output.txt").
You should still practice applying good style in your solution as
well as writing documentation. Unlike the full assignments you will be just
graded on program functionality for the mini-assignments.
-
What to submit: In a typical semester submitted
programs must run on the computer science network running Python 3.x. If you
write you code in the lab and work remotely using a remote login program
such as Putty or SSH then you should be okay (assuming you don't login to a
non-Linux computer). If you choose to install Python on your own computer
then it is your responsibility to ensure that your program will run properly
here. Remote learning version: If it won't run using Python 3.x on any
computer then it won't be awarded credit. It's up to you if you wish use
the graphical program builder IDLE (or another development environment
rather than a simple text editor) to write/run your programs but if you do
you submit your program in the form of text ".py"
file or files.
-
Late assignments or
components of assignments: will not be accepted for marking without
approval for an extension beforehand. Alternate submission mechanisms (non
exhaustive list of examples: email, uploads to cloud-based systems such as
Google drive, time-stamps, TA memories) cannot be used as alternatives if
you have forgotten to submit work or otherwise have not properly submitted
into D2L. Only files submitted into D2L by the due date is what
will be marked, everything else will be awarded no credit. The final cut
off date for mini-assignments is the due date because no late submissions
are allowed for these smaller programs.
-
Extensions may
be granted for reasonable cases by the course instructor with the receipt of
the appropriate documentation (e.g., a sworn declaration with a commissioner
of oaths). Typical examples of reasonable cases for an extension include:
illness or a death in the family. Example cases where extensions will not be
granted include situations that are typical of student life: having multiple
due dates, work commitments etc. Tutorial instructors (TAs) will not be able
to provide extension on their own and must receive permission from the
course instructor first. If
you request an extension from me let me know the name of your tutorial
instructor and the tutorial number because the markers won't accept
late submissions without directly getting an email from me.
-
How you will be graded for full assignments.
The grading for most mini-assignments is usually quite simple and the
information about mark breakdown is often included right in the assignment
description. You can see in the D2L Dropbox you can not only see your grade
point but also any feedback that your TA will entered (not always needed for
simple assignments or if full marks were awarded).
-
Questions about
grading afterward: Assignments will be marked by your tutorial
instructor (the "Teaching Assistant" or "TA") for your tutorial
section. When you have questions about marking this is the first person
that you should be directing your questions towards. If you still have
question after you have talked to your TA, then you can talk to your course
(lecture) instructor but please indicate in your email that you first
contacted your TA.
Method of submission:
You are to submit your
assignment using D2L [help
link]. Make
sure that you [check
the contents of your submitted files]
(e.g., is the file okay or was it corrupted, is it the correct version etc.).
It's your responsibility to do this! (Make sure that you submit your
assignment with enough time before it comes due for you to do a check). If don't
check and there were problems with the submission then you should not expect
that you can "learn your lesson" and simply resubmit.
-
Multiple submissions are allowed for this assignment (all versions are kept
in D2L): You can (and really should) submit work as many times as you wish
before the due date. However
only the latest version of all the files is what will be marked, everything
else will be ignored (because it is not fair to your marker to sort through
multiple versions of your files).
-
Do
not use compression utilities (such as zip) or archiving utilities (such as
tar) otherwise your submission may not be marked. The space savings in D2L
is not worth the extra time required by the marker to process each
submission.
-
Please make sure you submitted it properly before the deadline (the onus is
on you to do this).
-
If you don't do this:
-
Don't try to email to the marker or myself after the deadline because
bypassing requirements like this won't allow you to be awarded credit.
Collaboration:
Assignments must reflect
individual work;
group work is not allowed in this class nor can you copy the work of others.
Some "do nots" for your solution: don't publically
post it, don't email it out, don't show it to other students.
For more detailed information as to what constitutes academic misconduct (i.e.,
cheating) for this course please read the following [link].
Unless otherwise told you
are to write the code yourself and not use any pre-created functions (or
methods). For most assignments the usual acceptable functions include: print(), input() and
the 'conversion' functions such as int(), float(), str().
Look at the particular assignment description for a list of other
functions/methods that you are allowed to use and still get credit in an
assignment submission. If it's not listed then you should
assume that you won't be able use the function and still be awarded credit.