GithubHelp home page GithubHelp logo

thomasdubdub / sutom-solver-starter Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 1.0 1.51 MB

SUTOM solver & starter : résoudre les défis SUTOM et déterminer le meilleur mot à proposer au début

License: MIT License

Jupyter Notebook 3.67% Python 1.08% TypeScript 95.25%
sutom python solver starter motus wordle lingo

sutom-solver-starter's Introduction

SUTOM solver & starters

Si vous lisez ceci, c'est que 1) vous parlez français 2) vous aussi vous êtes fans du jeu SUTOM. Inspiré du jeu MOTUS (Lingo, Wordle en anglais...), les règles sont simples : vous devez trouver un mot avec un certain nombre de lettres et commençant par une lettre donnée. A la manière du Mastermind, lorsque vous proposez un mot, les lettres bien placées sont indiquées en rouge et celles qui sont dans le mot mystère mais à une autre place sont indiquées en jaune. Les autres lettres restent avec un fond bleu.

La petite subtilité vient des lettres répétées. Si vous proposez un mot avec plusieurs lettres identiques, seules les premières (de gauche à droite) seront indiquées en jaune. Ainsi dans l'exemple suivant, il y a effectivement un L dans le mot mystère (MINUSCULE) mais seul le premier L de MALLETTES est indiqué en jaune. Nous pouvons donc en déduire qu'il y a un seul L dans le mot mystère et à un autre endroit.

mallettes

Néanmoins, lorsqu'une des lettres répétées est placée à la bonne position, la priorité est d'indiquer celle-ci même si l'autre lettre est placée plus à gauche. Ainsi dans l'exemple suivant le premier L de MALHABILE n'est pas en jaune même s'il y a un L dans MINUSCULE car l'autre L placé après est à la bonne position.

malhabile

De manière générale, les lettres bien placées sont d'abord indiquées puis les autres occurences sont indiquées en jaune tant qu'il y en a dans le mot mystère. Ce n'est qu'une fois que l'on a dépassé le nombre d'occurences du mot mystère qu'une des lettre n'est pas indiquées en jaune et que l'on sait exactement combien de lettres il y a dans le mot mystère. Ainsi dans l'exemple suivant, il y a 2 et seulement 2 U dans le mot mystère : un en quatrième position, et un autre qui n'est ni en deuxième ni en sixième position.

muqueuses

En implémentant ces contraintes, l'algorithme du solveur présenté dans le notebook sutom_solver est capable de déterminer à partir des premières réponses obtenues l'ensemble des 149861 mots du dictionnaire SUTOM (version du 05/03/22) qui correspondent.

L'objectif présenté dans les autres notebooks est de déterminer les "meilleurs" mots à tester en premier. Pour cela deux méthodes :

  • en composant un mot à partir des lettres les plus utilisées dans le dictionnaire SUTOM (notebook sutom_occurence)
  • en déterminant le nombre moyen de mots restant une fois la réponse à ce premier mot donnée

La deuxième méthode "brute force" consiste ainsi à calculer pour chaque mot du défi (ex : mot à 9 lettres commençant par L) combien il resterait de mots si le mot mystère était un des autres mots du défi. On itère sur chacun des mots mystères possibles pour ajouter le nombre de mots restants. En divisant à la fin par le nombre de mots possibles dans le défi (ex : les 1326 mots à 9 lettres commençant par L), on obtient le nombre moyen de mots restant.

Usage

Le solveur peut être rapidement utilisé, en important la classe Dictionary, cf. exemple ci-dessous.

usage

Pour l'utilisation des algorithmes permettant de déterminer les "meilleurs" premiers mots, se référer aux notebooks sutom_occurence et sutom_starter. L'ensemble des résultats compilés (les meilleurs mots pour chaque défi) est compilé (notebook compile_score_files) dans le fichier top_words.

top

Built With

The following Python libraries are used in these notebooks:

  • pandas - Python Data Analysis Library

Versions

This code was tested with following versions:

  • Python 3.9.4, pandas 1.3.4

Authors

  • Thomas Dubot

License

This project is licensed under the MIT License - see the LICENSE.md file for details

Acknowledgments

Un grand merci aux concepteurs de ce jeu :

sutom-solver-starter's People

Contributors

thomasdubdub avatar

Stargazers

 avatar

Watchers

 avatar

Forkers

jomonbre

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.