awacke1 commited on
Commit
1591c02
·
1 Parent(s): 24fbaf2

Create app.py

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