Determine if land is fully enclosed by fences
APL (39)
{∧/,⊃{⍺∨⊖⍵}/{⍵∨(∧\~⍵)∨⌽∧\⌽~⍵}¨s,⊖¨s←⊂⍵}
Usage:
board1 board2
0 0 0 0 0 0 1 0 1 0
0 1 0 0 0 0 1 1 0 0
0 1 1 1 1 0 0 0 0 0
0 0 0 0 0 0 0 0 1 0
0 0 0 1 1 1 1 1 1 0
{∧/,⊃{⍺∨⊖⍵}/{⍵∨(∧\~⍵)∨⌽∧\⌽~⍵}¨s,⊖¨s←⊂⍵} ¨ board1 board2
1 0
Mathematica, 60 58 chars
f=Max@MorphologicalComponents[1-#,CornerNeighbors->1>2]<2&
Usage:
f[{{0, 0, 0, 0, 0}, {0, 1, 0, 0, 0}, {0, 1, 1, 1, 1}, {0, 0, 0, 0, 0}, {0, 0, 0, 1, 1}}]
True
f[{{0, 1, 0, 1, 0}, {0, 1, 1, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 1, 0}, {1, 1, 1, 1, 0}}]
False
Ruby, 202 198 193
a=$<.read.split('
').map(&:split)
f=->x,y{a[x][y]=1
[[-1,0],[1,0],[0,-1],[0,1]].map{|o|d,e=x+o[0],y+o[1]
f[d,e]if a[d]&&a[d][e]==?0}}
f[i=a.index{|x|x.index ?0},a[i].index(?0)]
p !(a.join=~/0/)
Does a flood-fill, then checks to see if there are any 0s left.