Word Search Puzzle Generator
Project description
Word Search Puzzle Generator
Introduction
The 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 }
]
}
]
}
Install
You can install it using pip tool word-search-puzzle.
Generate a puzzle
All 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 1
Creating a simple puzzle.
from word_search_puzzle.utils import display_panel
from word_search_puzzle.algorithms import create_panel
words = ['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 r
Example 2
Creating a serializable puzzle.
import json
from word_search_puzzle.algorithms import create_panel
words = ['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
}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for word_search_puzzle-2.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a2b3eadf095ee9616f67afd6ab40ce1d683ca1efec592ec30647d354bcc58695 |
|
MD5 | 6338ad062d21d54e5bc63fa82cf97adf |
|
BLAKE2b-256 | 12c1becaccec2adb840971b851e57f611987386db951fea244bbfa57ad36e867 |