Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: THEend8_
COMP1117B Computer Programming
Assignment 2
Reminders
This assignment involves some console input/output. You are reminded that the VPL system on
HKU Moodle evaluates your program with a full score under the condition that your program
output is the EXACT MATCH of the expected output. In other words, any additional or missing
space character, tab character, newline character, etc. will be treated as errors during the evaluation
of your program. Also, you are advised to make more test cases on your own for testing your
program.
Question 1 (30 %)
Write a Python program that inputs (i) an integer target, and (ii) a list of positive integers, which is
terminated by the negative integer -1, and it returns the indices of the two positive integers in the
list such that their product is equal to the target.
You may assume that each input has exactly one solution, and the program cannot use the same
positive integer twice, or more precisely, the indexes of its output must be different.
Assignment Specifications and Requirements
➢ Your program must follow the formats of the sample input / output strictly.
➢ No spaces at the end of each line of output.
➢ Procedure:
◼ 1. The program read the target number (the first input).
◼ 2. The program then continues to read input until -1 is read.
◼ 3. The program outputs the indices of the two numbers whose product is the target number.
2 / 8
Sample Test Cases
The red text is the part you need to input via console.
Sample Test Case 1 -- 8 is the target number. “1,2,3,4,5” is the list of integers.
Please input the target number and list of integers:
8
1
2
3
4
5
-1
1 3
Sample Test Case 2
Please input the target number and list of integers:
28
10
2
3
4
5
6
7
9
-1
3 6
Sample Test Case 3
Please input the target number and list of integers:
16
10
5
4
4
6
-1
2 3
3 / 8
Question 2 (70 %)
Write a python program to implement a simple game called Life. The game Life takes place on an
n by n square grid in which each cell can be occupied by an organism. Occupied cells are called
alive, and unoccupied cells are called dead. The game is run from generation to generation, and for
each generation, we determine which cells are alive according to the number of their neighbor cells
that are alive, and we summarize the rules as follows:
1. The neighbors of a given cell are the cells that touch it vertically, horizontally, or diagonally,
as shown in the figure below (the red colored cells are the neighbors of cell X).
X
X
2. If a cell is alive and has two or three living neighbors, then the cell remains alive in the next
generation. Otherwise, the cell becomes dead in the next generation (from loneliness if it
has fewer than two living neighbors, or from overcrowding if it has more than three living
neighbors).
3. A dead cell becomes alive in the next generation if it has exactly three living neighbors. All
the other dead cells remain dead.
4. All births and deaths take place at the same time.
Your Python program for implementing this game of Life should include the following functions:
creating an empty grid, inputting a life configuration to a grid, and updating the current life
configuration to the next generation. The file a2q2.py gives the framework of the program.
Implement the functions defined in a2q2.py to complete the program.
Assignment Specifications and Requirements
Please enter your code in the block between comments like this:
# Begin of your imports ------
# End of your imports ------
# Begin of your implementation ------
# End of your implementation ------
4 / 8
You are required to complete the 4 functions below to complete the program.
1. create_empty_grid
An integer n would be passed to the create_empty_grid function. You are expected to create an
n*n table with all entries set to ‘-’ as an empty grid.
2. input_life_config
An integer n would be passed to the input_life_config function. In the function, an empty grid G is
created using the create_empty_grid function. You are expected to ask the user to type in the
coordinates of living cells: one pair of coordinates x, y (0<=xspace, ending with the pair -1, -1.
The corresponding entries in the grid G should be set to ‘x’,
representing the living cells.
3. count_neighbors
A pair of coordinates x, y and the grid G will be passed to the count_neighbors function. This
function will return the number of alive neighbors for the cell with coordinates x, y in the grid. It
will be used to in the update_life_config function to determine whether a cell will be dead or alive
in the next generation.
4. update_life_config
The update_life_config function will update the current Life configuration to the next generation.
Grid G would be passed to the update_life_config function. A new grid nextG should be created to
store the Life configuration in the next generation. The function would return the new grid nextG.
7 / 8
Appendix
Important Notes
➢ Your program must follow the formats of the sample inputs/outputs strictly.
➢ We will grade your programs with another set of test cases (i.e., not limited to the sample test
cases presented in this document).
Handin
➢ Submit your programs electronically using the Moodle system to Assignment 2 Question 1 and
Assignment 2 Question 2 under Assignments section.
➢ Late submission will NOT be accepted.
Policy on “Plagiarism” according to the General
Office
➢ Plagiarism is a very serious academic offence. Students should understand what constitutes
plagiarism, the consequences of committing an offence of plagiarism, and how to avoid it.
➢ Definition of Plagiarism:
As defined in the University's Regulations Governing Conduct at Examinations,
plagiarism is "the unacknowledged use, as one's own, of work of another person, whether
or not such work has been published.", or put it simply, plagiarism is copying (including
paraphrasing) the work of another person (including an idea or argument) without proper
acknowledgement.
In case of queries on plagiarism, students are strongly advised to refer to "What is
Plagiarism”.
➢ If a student commits plagiarism, with evidence after investigation, no matter whether the
student concerned admits or not, a penalty will be imposed:
First Attempt: if the student commits plagiarism (in an assignment/test of a CS course)
for the first time in his/her entire course of study, the student shall be warned in writing
and receive zero mark for the whole assignment or the whole test; if the student does not
agree, s/he can appeal to the BEng(CompSc) Programme Director within a week.
Subsequent Attempt: if the student commits plagiarism more than once in higher course
of study, the case shall be referred to the Programme Director for consideration. The
Programme Director shall investigate the case and consider referring it to the University
8 / 8
Disciplinary Committee, which may impose any of the following penalties: a published
reprimand, suspension of study for a period of time, fine, or expulsion from the University.
➢ Both the student who copies other's work and the student who offers his/her work for copying
shall be penalized.
➢ Teachers should report plagiarism cases to the General Office for records and the issuing of
warning letters.
representing the living cells.
3. count_neighbors
A pair of coordinates x, y and the grid G will be passed to the count_neighbors function. This
function will return the number of alive neighbors for the cell with coordinates x, y in the grid. It
will be used to in the update_life_config function to determine whether a cell will be dead or alive
in the next generation.
4. update_life_config
The update_life_config function will update the current Life configuration to the next generation.
Grid G would be passed to the update_life_config function. A new grid nextG should be created to
store the Life configuration in the next generation. The function would return the new grid nextG.
7 / 8
Appendix
Important Notes
➢ Your program must follow the formats of the sample inputs/outputs strictly.
➢ We will grade your programs with another set of test cases (i.e., not limited to the sample test
cases presented in this document).
Handin
➢ Submit your programs electronically using the Moodle system to Assignment 2 Question 1 and
Assignment 2 Question 2 under Assignments section.
➢ Late submission will NOT be accepted.
Policy on “Plagiarism” according to the General
Office
➢ Plagiarism is a very serious academic offence. Students should understand what constitutes
plagiarism, the consequences of committing an offence of plagiarism, and how to avoid it.
➢ Definition of Plagiarism:
As defined in the University's Regulations Governing Conduct at Examinations,
plagiarism is "the unacknowledged use, as one's own, of work of another person, whether
or not such work has been published.", or put it simply, plagiarism is copying (including
paraphrasing) the work of another person (including an idea or argument) without proper
acknowledgement.
In case of queries on plagiarism, students are strongly advised to refer to "What is
Plagiarism”.
➢ If a student commits plagiarism, with evidence after investigation, no matter whether the
student concerned admits or not, a penalty will be imposed:
First Attempt: if the student commits plagiarism (in an assignment/test of a CS course)
for the first time in his/her entire course of study, the student shall be warned in writing
and receive zero mark for the whole assignment or the whole test; if the student does not
agree, s/he can appeal to the BEng(CompSc) Programme Director within a week.
Subsequent Attempt: if the student commits plagiarism more than once in higher course
of study, the case shall be referred to the Programme Director for consideration. The
Programme Director shall investigate the case and consider referring it to the University
8 / 8
Disciplinary Committee, which may impose any of the following penalties: a published
reprimand, suspension of study for a period of time, fine, or expulsion from the University.
➢ Both the student who copies other's work and the student who offers his/her work for copying
shall be penalized.
➢ Teachers should report plagiarism cases to the General Office for records and the issuing of
warning letters.