这个project是用C语言完成A Sign-Reversal Puzzle程序
2019/20 Semester one IDSA Project: A Sign-Reversal Puzzle
Supposed a m×n array of integer numbers is given, and you are allowed to reverse the
signs of all integers once a time for any row and column. Are you able to change all
the row sums and column sums to non-negative values if the initial ones are not all
Below, a 6×6 array with initial values is given on the left. After choosing the third
row to reverse the sign, the array changes accordingly and is shown on the right. Your
task is to develop a Python or C program to represent and solve the above puzzle.
1. The program can generate a m×n array of random integer numbers and display
the array in text mode, where both m, n≤10 and not all the row/column sums are
2. The program can support two playing modes: player mode and computer mode.
In player mode, your program allows a player to change the signs of a row/column
as a step, displays the update of that step, and is able to stop when the task is accomplished. In computer mode, you program is able to suggest steps to accomplish
the task and to display the process.
3. The code governing the game logic should be implemented in one module, while
the code governing the UI should be implemented in another module. Additional
modules are also allowed.
4. In addition to the above basic requirements, it is better for your program to be
user friendly, e.g., history of the steps and games, and efficient e.g., minimum steps
in computer mode.
1. The code of your program, including all the source files that are required to run
(and build for C) the program, a “readme.txt” file that describes how to run (and
build for C) the program, and other details about the project.
2. A report contains the following sections:
(a) Abstract: an abstract less than 200 words that summarizes the achievements
of the project.
(b) Introduction: a description of the objective and requirements of the project,
and a description of the problems and difficulties.
(c) Methodology: a description of the data structures created/used and an outline
of the algorithms involved in the computer mode.
(d) Screen captures for both modes.
(e) Conclusion: summarize the experience gained from the project and indicate
any possible improvements if more time is allowed.
(f) Workload allocations and individual contributions.
3. You need to submit the soft copy of all source files, the readme file, and the report
through SOUL, and you also need to submit the hard copy of the report. Each
group just needs to submit one copy of both.
1. The deadline of the project is by the end of the last teaching day of the semester,
i.e., 7th Dec.
2. You can form group to do the project, and the group size is up to three students.
You can also do it alone. You need to submit the group members through SOUL
by the end of 25/10.
3. If a free-rider issue arises more than two weeks before the project deadline, a split
of the group will be suggested. If a free-rider issue arises within the last two weeks
before the project deadline, peer evaluation will be required, and all members will
be assessed individually.
IDSA Project Marking Rubric
This project weight 30% of the total marks. The total mark for this project is 30 marks.
Normally the same marks will be given to all students in a group. The programming
part can receive at most 20 marks, and the report can receive at most 10 marks.
The Code Part
Solution program can be divided in 7 levels.
Level 1: There is a submission of your own code. (2 marks)
Level 2: The code submitted shows effort to tackle the problem. (2 marks)
Level 3: The program can be executed til its end with output (not necessarily
the correct output.) (2 marks)
Level 4: The program is not a complete solution but can show something, such
as able to generate a random array and display it. (2 marks)
Level 5: The program’s player mode works. (4 marks)
Level 6: The program’s computer mode works. (6 marks)
Level 7: Everything is fine with nice interface and results. (2 marks)
Except level one, each level is based on the achievement of the previous level. The total
marks for the code part can be 20 marks. Discretion and bonus marks might be given
if special efforts, thoughts, or skills can be demonstrated in the code. The bonus can be
at most 3 marks.
The Report Part
Abstract: Able to summarize the project. (1 mark)
Introduction: Able to clearly describe the objectives, requirements, and problems of
the task, and able to identify and clearly describe the issues and difficulties in order to solve the problems. (3 marks)
Methodology Able to describe the data structures and outline the algorithms used in
the program to tackle those issues and difficulties. Able to explain the
algorithms used. (4 marks)
Conclusion The conclusion and overall. (2 mark)
The total marks for the report part can be 10 marks.
Penalty for plagiarism
Plagiarism of any degree and any kind will not be tolerated. Offenders (both the copy
cat and the one who volunteers the copied materials) will lose the entire project marks.