Spaces:
Build error
Build error
File size: 2,633 Bytes
1591c02 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
import streamlit as st
import random
import string
# Define constants
SIZE = 10
WORDS_FILE = "words.txt"
# Define helper functions
def generate_grid(size):
grid = []
for i in range(size):
row = [random.choice(string.ascii_uppercase) for j in range(size)]
grid.append(row)
return grid
def add_words_to_grid(words, grid):
for word in words:
added = False
while not added:
direction = random.choice(["horizontal", "vertical", "diagonal"])
if direction == "horizontal":
row = random.randint(0, len(grid)-1)
col = random.randint(0, len(grid[0])-len(word))
if all(grid[row][col+j] == "" or grid[row][col+j] == word[j] for j in range(len(word))):
for j in range(len(word)):
grid[row][col+j] = word[j]
added = True
elif direction == "vertical":
row = random.randint(0, len(grid)-len(word))
col = random.randint(0, len(grid[0])-1)
if all(grid[row+j][col] == "" or grid[row+j][col] == word[j] for j in range(len(word))):
for j in range(len(word)):
grid[row+j][col] = word[j]
added = True
elif direction == "diagonal":
row = random.randint(0, len(grid)-len(word))
col = random.randint(0, len(grid[0])-len(word))
if all(grid[row+j][col+j] == "" or grid[row+j][col+j] == word[j] for j in range(len(word))):
for j in range(len(word)):
grid[row+j][col+j] = word[j]
added = True
return grid
# Define Streamlit app
def app():
st.title("Word Search")
# Load words from file or user input
if st.sidebar.button("Load words"):
with open(WORDS_FILE, "r") as f:
words = [word.strip() for word in f.readlines()]
else:
words_input = st.sidebar.text_area("Enter words (one per line)")
words = [word.strip() for word in words_input.split("\n")]
# Save words to file
if st.sidebar.button("Save words"):
with open(WORDS_FILE, "w") as f:
for word in words:
f.write(word + "\n")
# Generate and display word search
if words:
grid = generate_grid(SIZE)
grid = add_words_to_grid(words, grid)
st.write("Find the following words:")
st.write(words)
for row in grid:
st.write(" ".join(row))
else:
st.write("Enter words to generate a word search.")
|