diff options
Diffstat (limited to 'oo.py')
-rw-r--r-- | oo.py | 29 |
1 files changed, 29 insertions, 0 deletions
@@ -876,6 +876,35 @@ class ooPlay: elif self.xpos < self.max_xpos: self.xpos += 1 +class ooStudy(): + """Studies oo puzzles of a particular size. + + This class is not intended to be used. It is far too slow. + Instead, it is intended to be ported to a faster language. + """ + + def __init__(self, X, Y, toroidal=False): + self.X = X + self.Y = Y + self.toroidal = toroidal + self.puzzles = [] + + def __call__(self): + """Study each possible game id.""" + X = self.X + Y = self.Y + if self.toroidal: upper_bound = 2**( 2*X*Y ) + else: upper_bound = 2**( (X-1)*Y + X*(Y-1) ) + for game_id in range(upper_bound): + new_puzzle = ooPuzzle(X, Y, + game_id=game_id, toroidal=self.toroidal) + for puzzle in self.puzzles: + if puzzle.pieces == new_puzzle.pieces: + puzzle.equivalent_ids.append(game_id) + return + new_puzzle.equivalent_ids = [] + self.puzzles.append(new_puzzle) + def main(): curses.wrapper(ooPlay) |