fork(3) download
  1. g=[1..9]
  2. x=[(i,j)|i<-g,j<-g]
  3. main=interact$(\s->unlines[unwords[show$s(i,j)!!0|j<-g]|i<-g]).head.s.i
  4. s r=foldr(\p l->[m(p,n)r|r<-l,n<-r p])r x
  5. e a b=div(a-1)3==div(b-1)3
  6. m(p@(i,j),n)s q@(x,y)|p==q=[n]|x==i||y==j||e x i&&e y j=filter(/=n)$s q|True=s q
  7. i s=[foldr m(\_->g)[w|w<-zip x$map read$words s,snd w>0]]
Success #stdin #stdout 0.02s 3680KB
stdin
0 0 0 0 0 6 0 0 0
0 5 9 0 0 0 0 0 8
2 0 0 0 0 8 0 0 0
0 4 5 0 0 0 0 0 0
0 0 3 0 0 0 0 0 0
0 0 6 0 0 3 0 5 4
0 0 0 3 2 5 0 0 6
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
stdout
3 8 7 2 5 6 4 1 9
1 5 9 4 3 7 2 6 8
2 6 4 1 9 8 5 3 7
7 4 5 6 1 2 8 9 3
8 1 3 5 4 9 6 7 2
9 2 6 8 7 3 1 5 4
4 7 1 3 2 5 9 8 6
6 3 2 9 8 1 7 4 5
5 9 8 7 6 4 3 2 1