r4517 - developers/erin_yueh/pythonEFL-sudoku/src

erin_yueh at docs.openmoko.org erin_yueh at docs.openmoko.org
Wed Jul 9 08:32:21 CEST 2008


Author: erin_yueh
Date: 2008-07-09 08:32:20 +0200 (Wed, 09 Jul 2008)
New Revision: 4517

Modified:
   developers/erin_yueh/pythonEFL-sudoku/src/sudoku_ui.py
Log:
add solve function (Erin Yueh)


Modified: developers/erin_yueh/pythonEFL-sudoku/src/sudoku_ui.py
===================================================================
--- developers/erin_yueh/pythonEFL-sudoku/src/sudoku_ui.py	2008-07-08 13:48:00 UTC (rev 4516)
+++ developers/erin_yueh/pythonEFL-sudoku/src/sudoku_ui.py	2008-07-09 06:32:20 UTC (rev 4517)
@@ -44,7 +44,19 @@
             if(value == puzzle[i][j]):
                 isOK = False
     return isOK
-    
+
+def solve():
+    isOK = True
+    puzzle = ee.data["puzzle"]
+    for i in xrange (9):
+        for j in xrange(9):
+            value = puzzle[i][j]
+            g = (i/3)*3 + (j/3)
+            print i,j,g,value
+            if(checkRow(i,value) == False or checkColumn(j,value) == False or checkGroup(g,value) == False):
+                return False
+    return isOK
+
 def analyze(button,value):
     isOK = True
     puzzle = ee.data["puzzle"]
@@ -57,16 +69,7 @@
     print i,j,g
     if(checkRow(i,value) == False or checkColumn(j,value) == False or checkGroup(g,value) == False):
         return False
-    '''
-    if (checkRow(i,value) == False):
-        return False
-    elif(checkColumn(j,value) == False):
-        return False
-    elif(checkGroup(g,value) == False):
-        return False
-    '''    
-    #if not(checkRow(i,value) or checkColumn(j,value) or checkGroup(g,value)):
-    #    isOK = True
+
     return isOK
     
 def number_key_cb(zoom_in, emission, source):
@@ -94,7 +97,14 @@
     elif(source =='undo' or source == 'redo'):
         print 'undo or redo'
     elif(source == 'solve'):
-        print 'solve'
+        print 'is solved?!'
+        if(solve() == False):
+            print 'NO'
+        else:
+            print 'YES'
+    elif(source == 'create'):
+        print 'create'
+        createNewPuzzle()
     else: 
         # fill in key number
         if(ee.data["clicking"]):
@@ -144,6 +154,29 @@
 
         return p
 
+def createNewPuzzle():
+    
+    puzzle = get_puzzle()
+    print 'puzzle',puzzle
+    for i in xrange(9):
+        for j in xrange(9):
+            ee.data["puzzle"][i][j] = puzzle[i][j]
+            ee.data["puzzle_clone"][i][j] = puzzle[i][j]
+            value = puzzle[i][j]
+            addr = j + i *9
+            text_data = "button" + str(addr)
+            text = ee.data[text_data] 
+            text.data["value"] = value
+            text.text_set(str(value))
+            if(value>0):
+                text.color_set(10,10,10,200)
+                text.data["fixed"] = True
+            elif(value==0):
+                text.color_set(0,255,255,255)
+                text.data["fixed"] = False
+
+    return True
+
 def main():
 
     global ee
@@ -214,10 +247,7 @@
                 text.data["fixed"] = False
             text_data = "button" + str(addr)
             ee.data[text_data] = text
-            #print 'TRY:',text_data, ee.data[text_data]
-            
     
-    
     ee.show()
     #ecore.animator_add(animate_line)
     #ecore.animator_frametime_set(1.0 / 30.0)   





More information about the commitlog mailing list