diff options
author | Walter Bender <walter@walter-laptop.(none)> | 2009-10-07 21:01:03 (GMT) |
---|---|---|
committer | Walter Bender <walter@walter-laptop.(none)> | 2009-10-07 21:01:03 (GMT) |
commit | d692af30c7dfa822bd9b049a01d27ac706254f0a (patch) | |
tree | 17e75e2a72ce5db35e44c6dd4f501c9963313844 | |
parent | a10a5ffb402543560a6bf040b9f1149751a48e78 (diff) |
added solver to cmdline version
-rwxr-xr-x | cardsort.py | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/cardsort.py b/cardsort.py index 4218143..553e2f8 100755 --- a/cardsort.py +++ b/cardsort.py @@ -54,6 +54,9 @@ class CardSortMain: menu_items = gtk.MenuItem(_("Apply rotation sets")) menu.append(menu_items) menu_items.connect("activate", self._apply_rotation_sets_cb) + menu_items = gtk.MenuItem(_("Solve it")) + menu.append(menu_items) + menu_items.connect("activate", self._solve_cb) menu_items.show() root_menu = gtk.MenuItem("Tools") root_menu.show() @@ -100,6 +103,39 @@ class CardSortMain: if self.r == 64: self.r = 0 + def _solve_cb(self, widget): + rotation_sets = get_rotation_sets() + + for i in range(9): + for j in range(9): + if j in [i]: continue + for k in range(9): + if k in [i,j]: continue + for x in range(9): + if x in [i,j,k]: continue + for y in range(9): + if y in [x,i,j,k]: continue + for z in range(9): + if z in [x,y,i,j,k]: continue + for a in range(9): + if a in [x,y,z,i,j,k]: continue + for b in range(9): + if b in [a,x,y,z,i,j,k]: continue + for c in range(9): + if c in [a,b,x,y,z,i,j,k]: + continue + self.tw.grid.grid = [i,j,k,x,y,z,a,b,c] + for o in range(64): + for j in range(9): + self.tw.grid.card_table[self.tw.grid.grid.index(j)].set_orientation(rotation_sets[o][j]) + if self.tw.grid.test() is True: + sprites.redrawsprites(self.tw) + print self.tw.grid + print o + return True + print "no solution found :(" + return True + def main(): gtk.main() return 0 |