Out: 10/07 19:00
Due: 10/25 19:00
Collaboration:
Collaboration on solving the assignment is allowed, after you have thought about the problem sets on your own. It is also OK to get clarification (but not solutions) from online resources, again after you have thought about the problem sets on your own. There are two requirements:
Cite your collaborators fully and completely (e.g., “XXX explained to me what is asked in problem set 3”). Or cite online resources (e.g., “I got inspired by reading XXX”) that helped you.
Write your scripts and report independently - the scripts and report must come from you only.
Submitting your assignment:
Please write a report PS1.pdf
.
For problem set i, create a script named
PS1_i.py
.
Upload your Python
scripts AND
report to your Github ESE5023_Assignments_XXX
repository
(where XXX
is your SUSTech ID) before the due
time.
Late Submission:
Late submissions will not receive any credit. The submission time will be determined based on your latest GitHub file records.
[10 points] Write a function
Print_values
with arguments a
, b
,
and c
to reflect the following flowchart. Here the purple
parallelogram operator is to print values in the given order. Report
your output with some random a
, b
, and
c
values.
2.1 [5 points] Make two matrices M1
(5
rows and 10
columns ) and M2
(10
rows and 5
columns ); both are filled with
random integers from 0
and 50
.
2.2 [10 points] Write a function
Matrix_multip
to do matrix multiplication, i.e.,
M1 * M2
. Here you are ONLY allowed to use
for
loop, *
operator, and +
operator.
[20 points] One of the most interesting number
patterns is Pascal’s
triangle (named after Blaise Pascal). Write a function
Pascal_triangle
with an argument k
to print
the kth line of the Pascal triangle. Report
Pascal_triangle(100)
and
Pascal_triangle(200)
.
[20 points] If you start with 1
RMB
and, with each move, you can either double your money or add another
1
RMB, what is the smallest number of moves you have to
make to get to exactly x RMB? Here x is an integer
randomly selected from 1
to 100
. Write a
function Least_moves
to print your results. For example,
Least_moves(2)
should print 1
, and
Least_moves(5)
should print 3
.
Insert +
or -
operation anywhere between
the digits 123456789
in a way that the expression evaluates
to an integer number. You may join digits together to form a bigger
number. However, the digits must stay in the original order.
5.1 [30 points] Write a function
Find_expression
, which should be able to print every
possible solution that makes the expression evaluate to a random integer
from 1
to 100
. For example,
Find_expression(50)
should print lines include: \[ 1 - 2 + 34 + 5 + 6 + 7 + 8 - 9 = 50 \]
and \[ 1 + 2 + 34 - 56 + 78 - 9 = 50
\]
5.2 [5 points] Count the total number of suitable
solutions for any integer i from 1
to
100
, assign the count to a list called
Total_solutions
. Plot the list
Total_solutions
, so which number(s) yields the maximum and
minimum of Total_solutions
?