2024/3/13 00:41 COMP3411/9814 Project 1
COMP3411/9814 Artificial
Intelligence
Term 1, 2024
Assignment 1 – Bridge Puzzle
Due: Friday 15 March, 10pm
Marks: 12% of final assessment
Specification
This project is based on a popular puzzle, variously known
as "Hashiwokakero"
,
"Hashi" or "Bridges". You will need to
write a program to solve this puzzle, and provide a brief
description of the algorithm and data structures you have
used. The input to your program will be a rectangular array
of numbers and dots, for example:
.1...6...7....4.4.2.
..4.2..2...3.8...6.2
.....2..............
5.c.7..a.a..5.6..8.5
.............2......
...5...9.a..8.b.8.4.
4.5................3
2024/3/13 00:41 COMP3411/9814 Project 1
https://www.cse.unsw.edu.au/~cs3411/24T1/hw1/index.html 2/8
....2..4..1.5...2...
.2.7.4...7.2..5...3.
............4..3.1.2
Each number represents an "island"
, while the dots
represent the empty space (water) between the islands.
Numbers larger than 9 are indicated by 'a' (10), 'b' (11)
or 'c' (12). The aim is to connect all the islands with a
network of bridges, satisfying these rules:
1. all bridges must run horizontally or vertically
2. bridges are not allowed to cross each other, or other
islands
3. there can be no more than three bridges connecting any
pair of islands
4. the total number of bridges connected to each island
must be equal to the number on the island
For example, after reading the 10-line input above, your
program might produce this output:
1---6EEE7====4=4=2
4-2" 2 " 3E8EEE6 2
# |2 " " " # "
5EcE7EEaEa==5"6EE8=5
" # " # #2# |
" #5===9Ea--8=bE8E4|
4=5# " # " # " |3
2024/3/13 00:41 COMP3411/9814 Project 1
https://www.cse.unsw.edu.au/~cs3411/24T1/hw1/index.html 3/8
#2==4 #1-5 # 2 |"
2=7=4===7=2" 5===3"
4==3-1 2
Note that single bridges are indicated by the characters '-
' or '|', pairs of bridges by '=' or '"' and triples by 'E'
or '#', depending on whether they run horizontally or
vertically. Water between bridges and islands is indicated by
space characters ' '.
In some cases, there may be many solutions, in which case
your program should only print one solution. More details
about the puzzle can be found on this Wikipedia page. Note,
however, that our version allows up to 3 bridges instead of
2; also, we do not insist that the entire graph be connected.
Tools
An executable file called bridgen is provided in the
tools directory which can be used to generate sample
data of any specified size (type bridgen -help for
details). Another executable called bridgecheck is also
provided, to help you test the validity of your solutions (see
FAQ for details).
Questions
2024/3/13 00:41 COMP3411/9814 Project 1
https://www.cse.unsw.edu.au/~cs3411/24T1/hw1/index.html 4/8
At the top of your code, in a block of comments, you must
provide a brief answer (one or two paragraphs) to this
Question:
Briefly describe how your program works, including any
algorithms and data structures employed, and explain
any design decisions you made along the way.
Language Options
You are free to write the code in a language of your
choosing.
If you write in C, C++, or another compiled languge, your
program will be invoked by: ./hashi
You should submit your source files (no object files) as
well as a Makefile which, when invoked with the
command make , will produce an executable called
hashi
If you write in Python, your program will be invoked by:
./hashi.py
You should submit your .py files (including
hashi.py ).
The first line of your code must specify which version of
Python you are using, e.g. #!/usr/bin/python3
If you write in Java, your program will be invoked by:
java Hashi
You should submit your .java files (no .class
2024/3/13 00:41 COMP3411/9814 Project 1
https://www.cse.unsw.edu.au/~cs3411/24T1/hw1/index.html 5/8
files).
The main file must be called Hashi.java
If you wish to write in some language not covered by the
above options, let us know and we will try to
accommodate you.
Regardless of the language, you are not allowed to use
dedicated constraint programming packages like
python-constraint , etc. You are expected to
implement the search method(s) yourself.
Submission
You should submit by typing
give cs3411 hashi ...
Remember to include all necessary files in your submission
(including the one with the answer to the Question).
You can submit as many times as you like – later
submissions will overwrite earlier ones. You can check that
your submission has been received by using the following
command:
3411 classrun -check
The submission deadline is Friday 15 March, 10 pm.
5% penalty will be applied to the mark for every 24 hours
late after the deadline, up to a maximum of 5 days (in
accordance with UNSW policy).
2024/3/13 00:41 COMP3411/9814 Project 1
https://www.cse.unsw.edu.au/~cs3411/24T1/hw1/index.html 6/8
Additional information may be found in the FAQ and will be
considered as part of the specification for the project.
Questions relating to the project can also be posted to the
Forums on WebCMS.
If you have a question that has not already been answered
on the FAQ or the Forums, you can email it to
cs3411@cse.unsw.edu.au
Assessment
Your program will be tested on a series of sample inputs of
successively increasing size and difficulty. There will be:
6 marks for functionality (automarking)
4 marks for your algorithm and implementation
2 marks for answer to the Question
You should always adhere to good coding practices and
style. In general, a program that attempts a substantial part
of the job but does that part correctly will receive more
marks than one attempting to do the entire job but with
many errors.
Groups
This assignment may be done individually, or in groups of
two students. Groups are determined by an SMS field called
pair1 . Every student has initially been assigned a unique
2024/3/13 00:41 COMP3411/9814 Project 1
https://www.cse.unsw.edu.au/~cs3411/24T1/hw1/index.html 7/8
pair1 which is "h" followed by their student ID
number, e.g. h1234567 .
1. If you plan to complete the assignment individually, you
don't need to do anything (but, if you do create a group
with only you as a member, that's ok too).
2. If you wish to team up with someone, you should go to
the WebCMS page and click on "Groups" in the left
hand column, then click "Create". Click on the menu for
"Group Type" and select "pair". After creating a group,
click "Edit"
, search for the other member, and click
"Add". WebCMS assigns a unique group ID to each
group, in the form of "g" followed by six digits (e.g.
g012345 ). We will periodically run a script to load
these values into SMS.
Plagiarism Policy
Your program must be entirely your own work. In addition,
soliciting another person (or an AI bot) to write code for you
– either in person or through the Internet – is never
permitted. Generally, the copying of code already available
on the Internet is also forbidden. If you find some piece of
"standard" code in a textbook, or on the Internet, which you
would like to adapt and incorporate into your own
assignment, you must email the lecturer in charge to ask if it
is permissible to do so in the particular circumstances – in
2024/3/13 00:41 COMP3411/9814 Project 1
https://www.cse.unsw.edu.au/~cs3411/24T1/hw1/index.html 8/8
which case the source would have to be acknowledged in
your submission, and you would need to demonstrate that
you had done a substantial amount of work for the
assignment yourself. Plagiarism detection software will be
used to compare all submissions pairwise and serious
penalties will be applied, particularly in the case of repeat
offences.
DO NOT COPY FROM OTHERS; DO NOT ALLOW
ANYONE TO SEE YOUR CODE
Please refer to the UNSW Policy on Academic Integrity and
Plagiarism if you require further clarification on this matter.
Good luck!
版权所有:编程辅导网 2021 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。