Attachment 'MazeGeneration.core.asp.txt'
Download 1 %%%%%% Startup
2 %
3 grid(X,Y) :- col(X), row(Y).
4
5 adjacent(X,Y,X,Y1) :- grid(X,Y), Y1 = Y + 1, row(Y1).
6 adjacent(X,Y,X,Y1) :- grid(X,Y), Y1 = Y - 1, row(Y1).
7 adjacent(X,Y,X1,Y) :- grid(X,Y), X1 = X + 1, col(X1).
8 adjacent(X,Y,X1,Y) :- grid(X,Y), X1 = X - 1, col(X1).
9
10 maxRow(MR) :- row(MR), not existRowGreaterThan(MR).
11 existRowGreaterThan(R) :- row(R), row(RR), RR > R.
12 maxCol(MC) :- col(MC), not existColGreaterThan(MC).
13 existColGreaterThan(C) :- col(C), col(CC), CC > C.
14
15 border(1,Y) :- row(Y).
16 border(X,1) :- col(X).
17 border(X,Y) :- row(Y), maxCol(X).
18 border(X,Y) :- col(X), maxRow(Y).
19
20 %%%%%% GUESS
21 %
22 wall(X,Y) v empty(X,Y) :- grid(X,Y), not border(X,Y), not entrance(X,Y), not exit(X,Y).
23
24 empty(X,Y) :- entrance(X,Y).
25 empty(X,Y) :- exit(X,Y).
26
27 %%%%%Constraint 1 (always a path between the entrance and any empty cell
28 %
29 reach(X,Y) :- entrance(X,Y).
30 reach(XX,YY) :- adjacent(X,Y,XX,YY), reach(X,Y), empty(XX,YY).
31 :- empty(X,Y), not reach(X,Y).
32
33 %%%%% Constraint 2 (wall on any border cell, apart from entrance and exit)
34 %
35 wall(X,Y) :- border(X,Y), not entrance(X,Y), not exit(X,Y).
36
37 %%%%%Constraint 3 (no 4-blocks of walls or empty cells)
38 %
39 :- wall(X,Y), wall(X1,Y), wall(X,Y1), wall(X1,Y1), X1 = X + 1, Y1 = Y + 1.
40 :- empty(X,Y), empty(X1,Y), empty(X,Y1), empty(X1,Y1), X1 = X + 1, Y1 = Y + 1.
41
42 %%%%%Constraint 4 (no wall without adjacent walls)
43 %
44 :- wall(X,Y), not border(X,Y), not wallWithAdjacentWall(X,Y).
45 wallWithAdjacentWall(X,Y) :- wall(X,Y), adjacent(X,Y,W,Z), wall(W,Z).
46
47 %%%%%Constraint 5 (no diagonally adjacent walls with no common adjacent walls)
48 %
49 :- wall(X,Y), wall(Xp1,Yp1), empty(Xp1,Y), empty(X,Yp1), Xp1 = X + 1, Yp1 = Y + 1.
50 :- wall(Xp1,Y), wall(X,Yp1), empty(X,Y), empty(Xp1,Yp1), Xp1 = X + 1, Yp1 = Y + 1.
Attached Files
You are not allowed to attach a file to this page.