Spaces:
Build error
Build error
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) | |