awacke1's picture
Update app.py
3c17902
raw
history blame
2.64 kB
import streamlit as st
import numpy as np
import pandas as pd
import random
import time
def generate_board(size):
"""Generates a Boggle board of the specified size"""
letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
board = []
for i in range(size):
row = [random.choice(letters) for _ in range(size)]
board.append(row)
return board
def get_neighbors(row, col, size):
"""Returns a list of neighboring cells for a given cell"""
neighbors = []
for i in range(max(0, row - 1), min(row + 2, size)):
for j in range(max(0, col - 1), min(col + 2, size)):
if i == row and j == col:
continue
neighbors.append((i, j))
return neighbors
def search_word(word, board, visited, row, col, size):
"""Recursively searches for a word on the board"""
if not word:
return True
if row < 0 or col < 0 or row >= size or col >= size:
return False
if visited[row][col]:
return False
if board[row][col] != word[0]:
return False
visited[row][col] = True
for neighbor in get_neighbors(row, col, size):
if search_word(word[1:], board, visited, neighbor[0], neighbor[1], size):
return True
visited[row][col] = False
return False
def validate_word(word, board):
"""Checks if a given word is valid on the board"""
size = len(board)
visited = [[False for _ in range(size)] for _ in range(size)]
for row in range(size):
for col in range(size):
if search_word(word, board, visited, row, col, size):
return True
return False
def create_boggle_form(board, words):
"""Creates the Boggle form"""
new_word = st.text_input("Enter a new word:")
submit_button = st.form_submit_button("Submit")
if submit_button:
if len(new_word) >= 3 and new_word not in words and validate_word(new_word.upper(), board):
words.add(new_word)
st.session_state.words = ", ".join(sorted(words))
st.write("Here are your words:")
st.write(st.session_state.words)
def play_boggle(board):
"""Function for playing the Boggle game"""
st.title("Boggle Game")
st.write("Find as many words as possible by connecting adjacent letters on the board.")
st.write("Words must be at least three letters long and can only be used once.")
words = set()
st.session_state.words = ""
with st.form(key="boggle_form"):
create_boggle_form(board, words)
if __name__ == "__main__":
board = generate_board(7)
board_df = pd.DataFrame(board)
st.write(board_df)
play_boggle(board)