解决文字游戏的软件包
wordsolver的Python项目详细描述
文字游戏求解器
Python3文字游戏解决方案。在
作者:克里斯托弗·马尔科姆(chrismalcolm)。在
支持以下文字游戏:
- 困惑
- 拼字游戏
- 刽子手
- 单词earch
安装
$ pip install wordsolver
使用
每个单词游戏都有一个专用的解算器类。这个类可以用来为它的文字游戏提供解决方案。要求解,首先必须将用于求解的单词添加到解算器实例中。可以通过列表、集合或文件名添加单词。如果从文件名加载,文件应包含用逗号、空格或换行符分隔的每个单词。下面给出了每种方法的示例。在
^{pr2}$一旦解算器被初始化,它将通过solve
方法读取以求解。下面给出了每个单词游戏解算器的简短描述。在
Boggle
为了解决Boggle,使用了BoggleSolver
类。solve
方法接受第一个参数作为表示电路板的2d列表。所有字母都必须大写,除“Qu”也可以接受。字母“Q”将始终替换为“Qu”。支持任何尺寸的电路板尺寸。解决方案以大写字符串列表的形式返回。在
solve
方法还有一个可选的位置参数with_positions
。如果设置为True,则返回解决方案的位置,每个解决方案都表示为一个元组。在
>>>fromwordsolverimportBoggleSolver>>>boggle_solver=BoggleSolver("dictionary.txt")>>>boggle_solver.solve([...["A","C","T"],...["N","O","I"]...])['ACTION','ACTON','CION','CITO','COIT','NAOI','OTIC','ICON','ACT','CIT','COT','CON','CAN','TIC','TOC','TON','NOT','OCA','ION']>>>>>>boggle_solver.solve([...["Qu","E","N","T"],...["E","X","D","L"],...["J","K","L","M"]...])['QUEEN','EXED','DEEK','DENT','JEED','KEEN','EEK','END','NEE','NED','EEN','XED','DEN','DEE','DEX','JEE','KEX']>>>>>>boggle_solver.solve([...["C","A","T"]...],with_positions=True)[('CAT',[[(0,0),(0,1),(0,2)]])]>>>
拼字游戏
为了解决拼字游戏,使用ScrabbleSolver
类。solve
方法接受两个参数。第一个是一个15x152d列表,表示拼字板。普通平铺应使用大写字母,空格应使用小写字母,空白处应使用通配符“*”。EMPTY_STANDARD
变量也作为表示空的15x15板的速记。第二个参数是rack,它应该是一个rack tiles的列表,大写字母代表tiles,而“#”代表空白。解的位置以4个变量的元组形式返回:一个大写的单词字符串、x和y坐标以及一个布尔值,True表示水平,False表示垂直。在
还提供了一个get_score
方法来检查单词位置的分数。此方法接受与前一个方法相同的参数,以及附加的放置参数。布局应该是一个由4个变量组成的元组:一个单词的字符串放在大写,x和y坐标和一个布尔值,True表示水平,False表示垂直。分数被返回。在
>>>fromwordsolverimportScrabbleSolver,EMPTY_STANDARD>>>scrabble_solver=ScrabbleSolver("dictionary.txt")>>>scrabble_solver.solve(EMPTY_STANDARD,["Z","O","D","I","A","C","S"])[('ZODIACS',3,7,False,108),('ZODIACS',7,3,True,108),('ZODIACS',6,7,False,94),...,('OI',6,7,False,4),('OI',7,6,True,4)]>>>>>>scrabble_solver.get_score(EMPTY_STANDARD,["A","#","E"],("ARE",7,7,False))4>>>>>>test_board=[...["T","E","S","T","*","*","*","*","*","*","*","*","*","*","*"],...["*","B","O","A","R","D","*","*","*","*","*","*","*","*","*"],...["*","O","*","P","*","O","*","*","*","*","*","*","*","*","*"],...["*","N","*","*","*","I","*","*","*","*","*","*","*","*","*"],...["*","Y","*","*","*","N","*","*","*","*","*","*","*","*","*"],...["*","*","*","*","*","G","R","E","E","T","*","*","*","*","*"],...["*","*","*","*","*","*","*","R","*","*","*","*","*","*","*"],...["*","*","*","*","*","*","C","A","T","c","H","*","*","*","*"],...["*","*","*","*","*","*","*","*","O","*","*","*","*","*","*"],...["*","*","*","*","*","*","*","*","P","*","*","*","*","*","*"],...["*","*","*","*","*","*","*","*","*","*","*","*","*","*","*"],...["*","*","*","*","*","*","*","*","*","*","*","*","*","*","*"],...["*","*","*","*","*","*","*","*","*","*","*","*","*","*","*"],...["*","*","*","*","*","*","*","*","*","*","*","*","*","*","*"],...["*","*","*","*","*","*","*","*","*","*","*","*","*","*","*"]...]>>>scrabble_solver.solve(test_board,["X","I","N","G"])[('XI',4,3,True,31),('NIX',8,4,False,24),('TAPING',3,0,True,18),('OX',5,2,False,17),...,('IN',5,3,False,2)]>>>
刽子手
对于求解Hangman,使用HangmanSolver
类。solve
方法接受两个参数,它们都是字符串。第一个参数是当前对该单词的尝试,用“#”表示任何缺失的字母。第二个参数是一个字符串,其中包含每个猜测但不正确的字母。请注意,解算器会自动假定当前尝试中的所有字母不会在最后一个单词中重新出现。可能的解决方案列表将作为列表返回。在
可以使用guess_distribution
方法来获得解中每个字母的概率。返回的元组对的列表,其中包含每个字母及其概率。在
>>>fromwordsolverimportHangmanSolver>>>hangman_solver=HangmanSolver("dictionary.txt")>>>hangman_solver.solve("UN###","ABET"){'UNRIG','UNCOY','UNHIP','UNFIX','UNGOD','UNDOS','UNLID','UNZIP','UNRID','UNDID','UNCOS','UNRIP','UNSOD','UNMIX','UNIFY','UNKID'}>>>hangman_solver.guess_distrubtion("UN###","ABET")[('I',0.6875),('D',0.4375),('O',0.3125),('P',0.1875),('S',0.1875),...,('H',0.0625),('J',0),('V',0),('Q',0),('W',0)]>>>
单词搜索
为了解决单词搜索,使用WordSearchSolver
类。solve
方法接受表示单词search的2d列表作为其第一个参数。支持任何尺寸的尺寸。以元组的形式返回每个解决方案,单词作为第一个变量,其起始x,y坐标作为第二个变量,最后一个x,y坐标作为最后一个变量。在
还可以通过可选的位置参数directions
指定检查单词的方向。该列表应包含以下罗盘方向的任何组合(“N”、“NE”、“E”、“SE”、“S”、“SW”、“W”、“NW”)。只有在罗盘方向上阅读的单词才会出现在解答中。没有th是参数,默认行为是检查所有方向。在
>>>importwordsolverimportWordSearchSolver>>>wordsearch_solver=WordSearchSolver("dictionary.txt")>>>wordsearch_solver.solve([...["C","O","A","T"],...["R","E","C","O"],...["A","R","T","E"],...["M","E","S","S"]...])[('MA',(0,3),(0,2)),('MAR',(0,3),(0,1)),('MARC',(0,3),(0,0)),...,('ECO',(3,2),(1,0))]>>>>>>wordsearch_solver.solve([...["C","O","A","T"],...["R","E","C","O"],...["A","R","T","E"],...["M","E","S","S"]...],directions=["E","W"])[('COAT',(0,0),(3,0)),('OAT',(1,0),(3,0)),('AT',(2,0),(3,0)),('RE',(0,1),(1,1)),...,('EM',(1,3),(0,3))]
- 项目
标签: