Solution

Maximum of six watchmen can each see six cells. 

1  0  1  0
0  0  0  0
1  0  0  0
0  1  1  1

Maximum of six watchmen can each see seven cells. 

0  0  1  0
0  0  1  0
0  0  1  1
1  1  0  0	 


Xpress-Mosel Model
model 'evision'

! Description  : Equal Vision
! Source       : Poniachik, J. & L., (1998), Hard-to-solve Brainteasers, Sterling  
! Date written : Xpress-MP 19/12/99, Mosel 19/4/03
! Written by   : M J Chlond 

  uses 'mmxprs'

  parameters
    size = 4
    cvis = 6
  end-parameters

  declarations
    S = 1..size
    C = 1..cvis
    x: array(S,S) of mpvar  ! x(i,j) = 0 if cell {i,j} occupied, 1 otherwise
    n: array(S,S) of mpvar  ! n(i,j) = number of vacant cells visible to watchman on cell {i,j}
  end-declarations

  minv:= sum(i in S,j in S) x(i,j) ! minimise vacant cells

  forall(i in S,j in S) do
    nsee(i,j):= sum(m in S | m <> i and m-i+j >= 1 and m-i+j <= size) x(m,m-i+j)+
                sum(m in S | m <> i and i+j-m >= 1 and i+j-m <= size) x(m,i+j-m)+
                sum(m in S | m <> i) x(m,j) + sum(m in S| m <> j) x(i,m) = n(i,j) 

    sca(i,j):= n(i,j) >= cvis-99*x(i,j)
    scb(i,j):= n(i,j) <= cvis+99*x(i,j)

    x(i,j) is_binary
    n(i,j) is_integer
    n(i,j) <= 4*size-4
  end-do

  minimise(minv)
  
  forall(i in S) do
    forall(j in S)
      write(1-getsol(x(i,j)),' ')
    writeln
  end-do
   
end-model