upperLimitTowers(7). % maxim number of towers allowed significantVillages([c,h]). % list of villages where a tower is mandatory map_size(24,24). % numrows, numcols; the left upper corner of the map has coordinates (1,1) % village(ident,row,col,size): row,col of left upper corner, and size of the square village(a,2,6,4). village(b,2,18,3). village(c,7,7,4). village(d,10,2,2). village(e,11,17,2). village(f,13,8,4). village(g,16,1,5). village(h,20,12,2). village(i,21,17,3). village(j,23,4,2). %% The output could look similar to this (each "T" indicates a tower): %% %% Solution found with cost 5 %% 1.......10........20........30........40 %% %% 1 ........................ %% 2 .....aaaa........bbb.... %% 3 .....aaaa........bbb.... %% 4 .....aaaa........bbb.... %% 5 .....aaaa............... %% 6 ........................ %% 7 ......Tccc.............. %% 8 ......cccc.............. %% 9 ......cccc.............. %% 10 .dd...cccc.............. %% 11 .dd.............ee...... %% 12 ................ee...... %% 13 .......ffff............. %% 14 .......ffff............. %% 15 .......ffff............. %% 16 gTggg..ffff............. %% 17 ggggg................... %% 18 ggggg................... %% 19 ggggg................... %% 20 ggggg......hh........... %% 21 ...........hT...iTi..... %% 22 ................iii..... %% 23 ...jj...........iii..... %% 24 ...jT...................