Skip to content

Instantly share code, notes, and snippets.

@foota
Created May 14, 2012 18:05
Show Gist options
  • Select an option

  • Save foota/2695388 to your computer and use it in GitHub Desktop.

Select an option

Save foota/2695388 to your computer and use it in GitHub Desktop.
Sudoku solver for Android devices (SL4A)
# -*- coding: utf-8 -*-
import sys,android
droid=android.Android()
L=[]
def S(D):
if 0 in D:
L.append(D.index(0))
A=D[L[-1]//9*9:L[-1]//9*9+9]
B=D[L[-1]%9:81:9]
C=[d for n in(0,1,2)for d in D[L[-1]//27*27+L[-1]%9//3*3+n*9:L[-1]//27*27+L[-1]%9//3*3+n*9+3]]
for i in set(range(1,10))-set(A+B+C):
D[L[-1]]=i
S(D)
D[L.pop()]=0
else:
M=''.join(['%d'%d+('\n' if i%9==8 else ' ')for i,d in enumerate(D)]).rstrip()
droid.dialogCreateAlert(u'解答',M)
droid.dialogShow()
sys.exit()
T={ord(u'\n'):None,ord(u' '):None,ord(u'*'):u'0',ord(u'*'):u'0',ord(u'.'):u'0',ord(u'.'):u'0'}
for i in range(10): T[ord(u'0')+i]=u'%d'%i
P=droid.dialogGetInput(u'数独ソルバ',u'問題を入力してください:').result.strip().translate(T)
S(map(int,P))
@foota
Copy link
Copy Markdown
Author

foota commented May 14, 2012

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment