ENGG1330 Computer Programming I Assignment 1
Page 1 of 7
ENGG 1330 Computer Programming I (23-24 Semester 2)
Assignment 1
Due date: 9:30am, 21-March-2023 (Thu)
Late submission: 20% deduc4on per day
Important notes
• Only Python built-in features should be used in doing this assignment. It is
unnecessary to import any modules to do this assignment. Zero mark will be given
to programs that import any modules. If you are unsure, feel free to contact us for
clarifica=on.
• While programming style is not graded, you are highly recommended to use func=ons
to factor your program, write clear and =dy codes, e.g., descrip=ve comments,
concise and clear naming, appropriate spacing.
Submission
• Virtual Programming Lab (VPL) will be set up for submission and tes=ng. Only the last
submission will be considered as the final submission.
• Test your program thoroughly before the deadline. Your programs must generate
output according to the required formats, e.g., no extra text/space. If you are
unsure about the requirements, feel free to contact us for clarifica=on.
• The test cases provided in VPLs only check whether your programs meet the basic
requirements. You should test the robustness of your programs by crea=ng more test
cases on your own. Your programs will be assessed with another set of private test
cases.
• 20% will be deducted from the final mark for every 24-hour aOer the submission due
date.
• Do not submit any program aOer the due date if your work is final. Any submission
aOer the due date is regarded as late submission.
Plagiarism
• Confirmed plagiarism cases (detected by the system) will get zero mark and subject
to disciplinary ac=ons. The penalty applies to the source provider(s) as well. In other
words, students who submit same/highly similar programs will all get zero mark.
Students have full responsibility to protect their programs from being accessed by
others.
• Every year in the past, several students had found engaged in plagiarism. They all got
zero mark for the assignment and a warning leWer issued by the Department Head.
Questions
• If you have any ques=ons, please send email to Mr. Zhang Jierui
(jrzhang@eee.hku.hk) or Mr. Huang Binxiao (bxhuang@eee.hku.hk) who oversee this
assignment.
ENGG1330 Computer Programming I Assignment 1
Page 2 of 7
Problem 1 (20%)
You are running a dessert shop selling mousse cakes and macarons at a price of $35 and $20,
respec;vely. It takes 5 minutes to make a mousse cake and 8 minutes to make a macaron. There
are dine-in and takeaway op;ons, with a 10% service charge for dine-in. There is no takeaway for
macarons, and so, any takeaway macarons will be removed from the orders.
Now, write a program to read all the orders un;l the input equals -1, indica;ng the end of entry. For
each order, the user enters three numbers separated by a white space in a line before hiJng the
'enter' key. The first number is the number of mousse cakes in the order, the second number is the
number of macarons, and the last number is either '0' or '1', where '0' represents dine-in and '1'
represents 'takeaway'. ANer reading all the orders, the program generates a daily sales report
summarizing the total number of mousse cakes and macarons sold, the (total) sales amount, the
(total) service charges and the (total) produc;on ;me.
Detailed format requirements of the daily sales report:
• The width of the report is 40 characters.
• The heading is at the center with a leading white space and a trailing white space, filled with
'*' on both sides.
• In each row, the name is leN aligned, and the value is right aligned.
• Prefix the sales amount and service charges with a '$' sign. The sales amount is in dollar and
the service charges are in 10-cent (i.e., 1 decimal place).
• The produc;on ;me is in number of hours and number of minutes. Add ‘s’ to the unit when
the number is plural and do not display the number '0' and its unit.
Samples
Takeaway macarons are
removed from the order
Service charges are in 10-cent
(i.e., 1 decimal place)
Add ‘s’ to the unit when the
number is plural and do not
display the number '0' and its unit.
Add ‘s’ to the unit when the
number is plural and do not
display the number '0' and its unit.
ENGG1330 Computer Programming I Assignment 1
Page 3 of 7
Problem 2 (20%)
There is a rectangular grid with height h and width w, and a word is embedded in the grid with
empty spaces filled with the character "#". The word is stored either horizontally, ver;cally, or
diagonally and the word starts with a character in uppercase and other characters in lowercase. So,
the character in uppercase determines the reading direc;on of the word. You need to find and print
the whole word in uppercase.
Write a program to ask the user to input the height h in the first line, and the width w in the second
line, then, the grid itself consis;ng of h lines of strings, each string of length w characters. Lastly,
print the whole word in uppercase.
Samples
The word "Program" is embedded
horizontally in a 8 X 8 grid
The word "Engineering" is embedded
diagonally in a 12 X 12 grid
ENGG1330 Computer Programming I Assignment 1
Page 4 of 7
Problem 3 (25%)
In a magical world, there are families living on a horizontal straight line, viz., an x-axis. Every family
has a unique family ID i (posi;ve integer) and a unique coordinate xi (non-nega;ve integer) and the
distance between two neighboring families, i and j, is |xi - xj|.
You are a magical postman and need to deliver mail from one family to another family, possibly via
other families. Some magic beans will be consumed as follows when you move from one family i to a
neighboring family j. And you want to minimize the number of magic beans consumed for every
delivery (of course!).
• If family j is the nearest neighbor of family i or family j is the only neighbor of family i, only 1
magic bean is consumed, since every family has a magic track to its nearest or only neighbor.
• Otherwise, the number of magic beans consumed equals the distance between the two
families, i.e., |xi - xj|.
It is guaranteed that every family has one unique nearest neighbor. But be reminded that "j is the
nearest one of i" doesn't necessarily imply "i is the nearest one of j", you can think and find why.
Write a program for the postman with the following inputs and outputs.
In the first line, the number of families N is inpueed. Then, the family ID i and its coordinate xi in the
form of "i xi" are inpueed in the next N lines. The family IDs are unique and in the range of 1, 2, ..., N,
but they may not appear in order.
Next, the number of deliveries M is inpueed, followed by M lines of deliveries in the form of "i k"
meaning that a mail has to be delivered from family i to family k.
Lastly, your program has to output M lines, where each line contains an integer, which is the
minimum number of magic beans consumed to deliver the corresponding mail.
Consider the following inputs consis;ng of five families and three deliveries.
Below is a diagram showing the loca;ons of the five families. The coordinates are shown below the
x-axis while family IDs are shown above the x-axis.
For the first delivery 2 3, since family 3 is the only neighbor of family 2, the number of magic beans
consumed is 1.
ENGG1330 Computer Programming I Assignment 1
Page 5 of 7
For the second delivery 2 4, the total number of magic beans consumed is 8 and the breakdown is as
follows.
• From family 2 to family 3, the number of magic beans consumed = 1.
• From family 3 to family 1, the number of magic beans consumed = 1.
• From family 1 to family 5, the number of magic beans consumed = 1.
• From family 5 to family 4, the number of magic beans consumed = 5.
For the third delivery 5 2, the total number of magic beans consumed is 13 and the breakdown is as
follows.
• From family 5 to family 1, the number of magic beans consumed = 1.
• From family 1 to family 3, the number of magic beans consumed = 4.
• From family 3 to family 2, the number of magic beans consumed = 8.
Samples
ENGG1330 Computer Programming I Assignment 1
Page 6 of 7
Problem 4 (35%)
You are a soldier in the baelefield game. The baelefield is a rectangular grid (matrix) M and the
elements in the grid are integers. If the element mij in row i and column j is posi;ve (indices i, j start
from 0), it means there are mij enemies in this place; if mij = 0, it means there is no one in this place;
if mij = -1, it means there are friend troops in this place.
You have a special weapon with power p. You can use it for one 1me at a selected place in a selected
direc;on. The following figures show the damage range for p = 3 in four direc;ons (↑→, ↓→, ←↓,
←↑), respec;vely. For other value of power p, the damage range changes accordingly.
You have to find out the place and the direc;on to use the weapon, such that you can kill the most
enemies while no friend troops get hurt. Every enemy you killed, you get 1 reward. If no enemy is
killed, your reward is 0.
Write a program to read h+1 lines. In the first line, the height h and the width w of the grid, and
power p of the weapon are inpueed. Then, h lines with w number of integers in each line,
represen;ng the baelefield, are inpueed.
If in all places and direc;ons, some friend troops will get hurt, then the program outputs
"Friend troops will get hurt! Do not use weapon at any place!"
Otherwise, the program outputs 3 lines in the following form, even if your reward is 0:
"You can use weapon at row X, column Y."
"The direc;on is D."
"Your reward is R!"
where X and Y are the row number and column number of the place, respec;vely, D is one of the
four direc;ons (↑→, ↓→, ←↓, ←↑) and R is the amount of rewards. If more than one place or
direc;on gives the same maximal reward, the program may output any one of them.
ENGG1330 Computer Programming I Assignment 1
请加QQ:99515681 邮箱:99515681@qq.com WX:codehelp