# csc 108 Assignment 1

\$30.00

Category:

csc 108 Assignment 1
questions please post them to the course Piazza page.

Consider a game where you control a cannon which is trying to hit a target some distance d away.
You’re allowed to choose the velocity of the projectile, and the angle at which the cannon is shot. If
you miss your target (outside of some tolerance), the game informs you if you shot short of or past
the target, and gives you a chance to try again. See the Figure below for a visual aid.
You are given a file, assignment1.py, with six incomplete functions as well as the framework
needed to play the game. For this assignment, you’re required to complete these six functions. A description regarding the intended behaviour of these functions is given later in this
documents. Further documentation and examples for these functions are given in the docstrings
within assignment1.py.
1
We will assume perfect physics (no wind, constant gravity, etc.) then
d =
v
2
sin(2θ)
g
. (1)
We will also assume that π equals python’s built in value for π, math.pi. Note the value is declared at
the top of assignment1.py. For the purposes of this assignment we will use the following definitions.
1. A valid velocity is a string denoting a positive number, potentially with a decimal point. For
example, the following are valid velocities: “15”, “10.12”, “60.”, while the following are not
valid velocities: “10m/s”, “-17”, “10.1.4”.
2. A valid angle is a string denoting a number, potentially with a decimal point where the last
character of the string is either a “d” or “D” (denoting the given angle is in degrees), or a “r”
or “R” (denoting the given angle is in radians). Moreover, if in degrees the numeric portion
of the string must be less than 90 and greater than 0, and if in radians the numeric portion of
the string must be less than π/2 and greater than 0. For example, “23d”, “1.5R, and “77.D”
are valid angles, while ‘-23d”, “3.14r, and “7.7R” are not valid angles.
Function Name Description
get distance(float, float)
-> float
The first parameter is the velocity, the second parameter is the
angle of fire. Returns the horizontal distance traveled by the projectile as given by equation (1).
-> float
Given some number of degrees, it returns the corresponding converted amount of radians.
get radian of(str) -> float Given a valid angle, it takes the numerical value of the string and
is a number(str) -> bool Given a string, returns True if and only if that string represents
a positive number (potentially with a decimal).
is valid angle(str) -> bool Given a string, returns True if that string is of the form described
earlier in this document.
approx equal(float, float,
float) -> bool
Returns True if and only if the first two parameters are within
some value of each other, where said value equals the third parameter.
This assignment will be submitted electronically via MarkUs. Please find the MarkUs link on the
course website. Note, to avoid potential confusion and submitting to the wrong location, there will
be nowhere on MarkUs to submit Assignment 1 until Assignment 0 is past due.
is, a program calls your function, passes it certain arguments, and checks to see if it returns the expected output. Each function is worth 20% of assignment grade, with the exception of get distance
and degrees to radians which are each worth 10% of the assignments grade. For any one function,
if you pass n of the m tests we run on that function, your grade for that function will be n/m.