Package: word-search-puzzle
Word Search Puzzle GeneratorIntroductionThe mission of this package is to generate a word search puzzle. The requirements are a list of the word and the dimensions of the puzzle.For example:Given list of words['Cat', 'Bear', 'Tiger', 'Lion']Generated panel:#   _________________________#  | [L]   w    m    e   [r] |#  | [i]   w   [C]  [e]   x  |#  | [o]   v   [g]  [a]   q  |#  | [n]  [i]   n    i   [t] |#  | [T]  [B]  [e]  [a]  [r] |#   -------------------------panel.cells={(0,0):'l',(0,1):'w',(0,2):'m',(0,3):'e',(0,4):'r',(1,0):'i',(1,1):'w',(1,2):'c',(1,3):'e',(1,4):'x',(2,0):'o',(2,1):'v',(2,2):'g',(2,3):'a',(2,4):'q',(3,0):'n',(3,1):'i',(3,2):'n',(3,3):'i',(3,4):'t',(4,0):'t',(4,1):'b',(4,2):'e',(4,3):'a',(4,4):'r',}With the corresponding hidden words:{"words":[{"value":"cat","positions":[{"r":1,"c":2},{"r":2,"c":3},{"r":3,"c":4}]},{"value":"bear","positions":[{"r":4,"c":1},{"r":4,"c":2},{"r":4,"c":3},{"r":4,"c":4}]},{"value":"tiger","positions":[{"r":4,"c":0},{"r":3,"c":1},{"r":2,"c":2},{"r":1,"c":3},{"r":0,"c":4}]},{"value":"lion","positions":[{"r":0,"c":0},{"r":1,"c":0},{"r":2,"c":0},{"r":3,"c":0}]}]}InstallYou can install it using pip toolword-search-puzzle.Generate a puzzleAll what you need is de define a list of words and provide the dimensions of the panel.
Please make sure that the number and the length of the words fit the dimensions of the panel.Example 1Creating a simple puzzle.fromword_search_puzzle.utilsimportdisplay_panelfromword_search_puzzle.algorithmsimportcreate_panelwords=['Cat','Bear','Tiger','Lion']result=create_panel(height=5,width=5,words_value_list=words)print('Attempts:{}'.format(result.get('attempts')))print('Solution took:{}ms'.format(result.get('elapsed_time')))display_panel(result.get('panel'))# Output:#   Attempts: 2#   Solution took: 31 ms##   l  w  m  e  r#   i  w  c  e  x#   o  v  g  a  q#   n  i  n  i  t#   t  b  e  a  rExample 2Creating a serializable puzzle.importjsonfromword_search_puzzle.algorithmsimportcreate_panelwords=['Cat','Bear','Tiger','Lion']result=create_panel(height=5,width=5,words_value_list=words,as_dict=True)print(json.dumps(result))The output will be as following:{"panel":{"cells":[{"position":{"r":0,"c":0},"value":"t"},{"position":{"r":0,"c":1},"value":"b"},{"position":{"r":0,"c":2},"value":"x"},{"position":{"r":0,"c":3},"value":"j"},{"position":{"r":0,"c":4},"value":"c"},{"position":{"r":1,"c":0},"value":"l"},{"position":{"r":1,"c":1},"value":"i"},{"position":{"r":1,"c":2},"value":"e"},{"position":{"r":1,"c":3},"value":"b"},{"position":{"r":1,"c":4},"value":"a"},{"position":{"r":2,"c":0},"value":"c"},{"position":{"r":2,"c":1},"value":"i"},{"position":{"r":2,"c":2},"value":"g"},{"position":{"r":2,"c":3},"value":"a"},{"position":{"r":2,"c":4},"value":"t"},{"position":{"r":3,"c":0},"value":"d"},{"position":{"r":3,"c":1},"value":"l"},{"position":{"r":3,"c":2},"value":"o"},{"position":{"r":3,"c":3},"value":"e"},{"position":{"r":3,"c":4},"value":"r"},{"position":{"r":4,"c":0},"value":"f"},{"position":{"r":4,"c":1},"value":"i"},{"position":{"r":4,"c":2},"value":"i"},{"position":{"r":4,"c":3},"value":"n"},{"position":{"r":4,"c":4},"value":"r"}]},"words":[{"value":"tiger","positions":[{"r":0,"c":0},{"r":1,"c":1},{"r":2,"c":2},{"r":3,"c":3},{"r":4,"c":4}]},{"value":"lion","positions":[{"r":1,"c":0},{"r":2,"c":1},{"r":3,"c":2},{"r":4,"c":3}]},{"value":"cat","positions":[{"r":0,"c":4},{"r":1,"c":4},{"r":2,"c":4}]},{"value":"bear","positions":[{"r":0,"c":1},{"r":1,"c":2},{"r":2,"c":3},{"r":3,"c":4}]}],"attempts":1,"found":true,"elapsed_time":3}