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 boggle(size, time_limit): | |
"""Main 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 within the time limit.") | |
st.write("Words must be at least three letters long and can only be used once.") | |
board = generate_board(size) | |
board_df = pd.DataFrame(board) | |
st.write(board_df) | |
words = set() | |
start_time = time.time() | |
while time.time() - start_time < time_limit: | |
with st.form(key='new_word'): | |
new_word = st.text_input("Enter a new word:") | |
if len(new_word) >= 3 and new_word not in words and validate_word(new_word.upper(), board): | |
words.add(new_word) | |
st.write(f"Added {new_word} to the list of words!") | |
st.form_submit_button(label='Submit') | |
st.write("Time's up! Here are your words:") | |
st.write(words) | |
if __name__ == "__main__": | |
boggle(4, 60) | |