
Trouvez tous les mots possibles compte tenu d'une planche de boggle et de mots (ou aucune!), Avec une représentation visuelle sur la façon dont l'algorithme fonctionne sur le Web!
Demo Web: à venir bientôt!
Le frontend est développé à l'aide TypeScript et le cadre suivant.js, avec Tailwind CSS comme framework CSS choisi.
Le framework backend choisi pour ce projet est Fastapi, un framework Web basé sur Perforant Python . Dans Fastapi, je crée des points de terminaison API pour communiquer avec le frontend (le client). Ces points de terminaison sont conçus pour déchiffrer la carte Boggle donnée du client et renvoyer toutes les combinaisons possibles, les coordonnées et le score à l'aide de pyggle . L'utilisateur peut également envoyer une image d'une carte Boggle où j'utilise OpenCV pour prétraiter l'image et utiliser Easyocr pour récupérer avec précision les caractères de la carte Boggle.
Les mots et les coordonnées sont ensuite envoyés au client en tant que charge utile JSON pour le frontend.
PYPI: https://pypi.org/project/pyggle/
pip install pyggleL'entrée est sensible à la casse (pour la carte).
L'entrée se composerait de: une carte N x M en tant que chaîne avec des lignes séparées par des espaces. Alternativement, vous pouvez passer dans une liste de listes où chaque élément est le personnage de la carte.
Si les mots ne sont pas passés comme argument, il utilisera un fichier texte qui se compose de mots 479k.
Si le fonctionnaire n'est pas donné comme un argument booléen, trouvez tous les mots quelle que soit la longueur, et la lettre «Q» n'est pas représentée comme «Qu». Si le fonctionnaire est adopté comme un argument booléen, l'algorithme suit les règles officielles de Boggle. Pyggle résoudra et:
from pyggle import Boggle
board = "ea st"
boggle = Boggle ( board )
boggle . print_result () Pour plus de fonctions de pyggle , vérifiez:
lib/examples/2x2_example.py pour les fonctions générales et plus de spécificitélib/examples/qu_example.py pour un exemple où la lettre 'q' représente 'qu'lib/docs/boggle-api.md pour une compréhension de chaque méthodeJe ne sais pas comment "AE" ou "AES" ou "AST" est un mot, mais w / e: p
a: [(0, 1)]
ae: [(0, 1), (0, 0)]
aes: [(0, 1), (0, 0), (1, 0)]
aet: [(0, 1), (0, 0), (1, 1)]
as: [(0, 1), (1, 0)]
ase: [(0, 1), (1, 0), (0, 0)]
ast: [(0, 1), (1, 0), (1, 1)]
at: [(0, 1), (1, 1)]
ate: [(0, 1), (1, 1), (0, 0)]
ates: [(0, 1), (1, 1), (0, 0), (1, 0)]
e: [(0, 0)]
ea: [(0, 0), (0, 1)]
east: [(0, 0), (0, 1), (1, 0), (1, 1)]
eat: [(0, 0), (0, 1), (1, 1)]
eats: [(0, 0), (0, 1), (1, 1), (1, 0)]
es: [(0, 0), (1, 0)]
est: [(0, 0), (1, 0), (1, 1)]
et: [(0, 0), (1, 1)]
eta: [(0, 0), (1, 1), (0, 1)]
etas: [(0, 0), (1, 1), (0, 1), (1, 0)]
s: [(1, 0)]
sa: [(1, 0), (0, 1)]
sae: [(1, 0), (0, 1), (0, 0)]
sat: [(1, 0), (0, 1), (1, 1)]
sate: [(1, 0), (0, 1), (1, 1), (0, 0)]
se: [(1, 0), (0, 0)]
sea: [(1, 0), (0, 0), (0, 1)]
seat: [(1, 0), (0, 0), (0, 1), (1, 1)]
set: [(1, 0), (0, 0), (1, 1)]
seta: [(1, 0), (0, 0), (1, 1), (0, 1)]
st: [(1, 0), (1, 1)]
sta: [(1, 0), (1, 1), (0, 1)]
t: [(1, 1)]
ta: [(1, 1), (0, 1)]
tae: [(1, 1), (0, 1), (0, 0)]
tas: [(1, 1), (0, 1), (1, 0)]
te: [(1, 1), (0, 0)]
tea: [(1, 1), (0, 0), (0, 1)]
teas: [(1, 1), (0, 0), (0, 1), (1, 0)]
ts: [(1, 1), (1, 0)]