Advertisement
Guest User

Lambda Sudoku Solver

a guest
Jul 28th, 2015
222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.88 KB | None | 0 0
  1. print((lambda L,N,R,B,O,Q:(lambda P:(lambda q:'\n'.join(''.join(str(i)for i in R(q,y))for y in L)if q else"INVALID")(O(lambda S,g:(lambda s:s if all(N==Q(s[i::9])==Q(R(s,i))==Q(B(s,i))for i in L)else 0if[]in P(s)else(lambda b:O(lambda f,c,b:S(s[:c]+b[0]+s[-~c:])or(f(f,c,b[1:])if b else 0),*b))(Q(enumerate(P(s)),key=lambda t:(len(t[1])+2)%10)[0]))(O(lambda f,v,p:f(f,(lambda p:[max([0,p[x+9*y][0]if 1==len(p[x+9*y])else 0]+[n for n in p[x+y*9]if 1in[sum(1for l in c if n in l)for c in[p[x::9],R(p,y),B(p,y//3*3+x//3)]]])for y in L for x in L])(P(v)),v)if v!=p else v,g,0)),sum([[int(c)for c in input()]for _ in[0]*9],[]))))(lambda s:[[n for n in N if n==s[y*9+x]or 0==s[y*9+x]and n not in s[x::9]+R(s,y)+B(s,y//3*3+x//3)]for y in L for x in L]))(list(range(9)),list(range(1,10)),lambda s,y:s[y*9:y*9+9],lambda s,b:[s[b//3*18+b*3+y*9+x]for y in range(3)for x in range(3)],lambda f,*a:f(f,*a),sorted))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement