awacke1's picture
Create app.py
1591c02
raw
history blame
2.63 kB
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.")