Spaces:
Build error
Build error
File size: 2,558 Bytes
b73f288 f6c6d15 b73f288 f6c6d15 b73f288 f6c6d15 b73f288 f6c6d15 b73f288 f6c6d15 b73f288 f6c6d15 b73f288 f6c6d15 b73f288 f6c6d15 b73f288 f6c6d15 b73f288 f6c6d15 b73f288 f6c6d15 b73f288 f6c6d15 1bb7250 d2def29 f6c6d15 b73f288 87cfa09 f6c6d15 |
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 74 |
import streamlit as st
import random
import string
BOARD_SIZE = 15
WORDS_FILE = "word_list.txt"
def load_word_list():
try:
with open(WORDS_FILE, "r") as f:
words = f.read().split("\n")
except FileNotFoundError:
words = []
st.text_area("Enter a list of words (one per line)", "\n".join(words), key="words_area")
st.sidebar.subheader("Word List:")
for i, word in enumerate(words):
st.sidebar.write(f"{i+1}. {word}")
return words
def save_word_list(words):
with open(WORDS_FILE, "w") as f:
f.write("\n".join(words))
st.write("Word list saved successfully!")
def generate_board(words):
board = [[' ' for _ in range(BOARD_SIZE)] for _ in range(BOARD_SIZE)]
for word in words:
word = word.upper()
row, col = random.randint(0, BOARD_SIZE - 1), random.randint(0, BOARD_SIZE - 1)
direction = random.choice(['horizontal', 'vertical', 'diagonal'])
if direction == 'horizontal' and col + len(word) <= BOARD_SIZE:
for i, letter in enumerate(word):
board[row][col+i] = letter
elif direction == 'vertical' and row + len(word) <= BOARD_SIZE:
for i, letter in enumerate(word):
board[row+i][col] = letter
elif direction == 'diagonal' and row + len(word) <= BOARD_SIZE and col + len(word) <= BOARD_SIZE:
for i, letter in enumerate(word):
board[row+i][col+i] = letter
for i in range(BOARD_SIZE):
for j in range(BOARD_SIZE):
if board[i][j] == ' ':
board[i][j] = random.choice(string.ascii_uppercase)
return board
def display_word_list(words):
st.sidebar.subheader("Word List:")
for i, word in enumerate(words):
st.sidebar.write(f"{i+1}. {word}")
def display_board(board):
st.write("Word Search Board:")
st.table(board)
def paste_story():
story = st.text_area("Paste your story here")
if st.button("Build Word List"):
words = [word.upper() for word in story.split() if len(word) > 4]
try:
with open(WORDS_FILE, "r") as f:
existing_words = set(f.read().split("\n"))
except FileNotFoundError:
existing_words = set()
words = list(set(words) - existing_words)
words = sorted(words, key=len, reverse=True)[:10]
save_word_list(words)
board = generate_board(words)
display_word_list(words)
display_board(board)
words = load_word_list()
display_word_list(words)
paste_story()
|