def solve_from_letters(letters): from wordsmush import game_utils from wordsmush.ai import WordsmushAIPlayer ai = WordsmushAIPlayer() board = game_utils.get_board(letters) words = ai.solve_board(board) words_by_len = groupby(words, key=len) for length, words in words_by_len: if length > 2: print "%d letter words: " % length print (", ".join(words)).upper()
def test_solve_board(self): game = game_utils.get_board( 'espro' 'lishm' 'tabdi' 'entsi' 'xfgmn') solved_game = self.ai.solve_board(game) words = ['establish', 'sadism', 'establishment', 'disestablishment', 'stab', 'stand', 'spasm', 'stream', 'espresso'] for word in words: self.assertTrue(word in solved_game)
def test_calculate_protected(self): self.game = game_utils.get_board(['f', 'r', 'a', 'b', 'c', 'n', 'a', 'h', 'i', 'j', 't', 'i', 'm', 'n', 'o', 'c', 's', 'g', 'x', 'q', 'u', 'v', 'w', 'y', 'z']) word = WordsmushTurn(self.game) word.add_tile(self.game.get_tile(0,0)) word.add_tile(self.game.get_tile(1,0)) word.add_tile(self.game.get_tile(1,1)) word.add_tile(self.game.get_tile(0,1)) word.add_tile(self.game.get_tile(0,2)) word.add_tile(self.game.get_tile(1,2)) word.add_tile(self.game.get_tile(0,3)) self.assertTrue([tile.letter for tile in word.tiles] == list('frantic')) self.game.play(self.game.player1, word) self.assertTrue(all(tile.owner == self.game.player1 for tile in word.tiles)) protected_tile1 = self.game.get_tile(0,0) protected_tile2 = self.game.get_tile(0,1) self.assertTrue(protected_tile1.status == WordsmushTile.PROTECTED) self.assertTrue(protected_tile2.status == WordsmushTile.PROTECTED) # now test that a second play will not capture a protected tile word2 = WordsmushTurn(self.game) word2.add_tile(self.game.get_tile(0,0)) word2.add_tile(self.game.get_tile(1,1)) word2.add_tile(self.game.get_tile(0,1)) word2.add_tile(self.game.get_tile(2,0)) word2.add_tile(self.game.get_tile(0,2)) word2.add_tile(self.game.get_tile(1,2)) word2.add_tile(self.game.get_tile(0,3)) self.assertTrue([tile.letter for tile in word2.tiles] == list('fanatic')) self.game.play(self.game.player2, word2) self.assertTrue(protected_tile1.owner == self.game.player1) self.assertTrue(protected_tile2.owner == self.game.player1)