⚠️ Work in progress — Ce projet est en cours de développement. La structure du code, les formats de fichiers et les commandes peuvent encore changer. Plusieurs fonctionnalités ne sont pas encore implémentées.
Ensemble d'outils créés pour le jeu de rôle (JDR).
Stade précoce. Voici où on en est :
- Modélisation des données : liste de symboles pondérés (
SymbolList) et distribution des longueurs de mots (LengthDistribution) - Table de génération (
GenerationTable) : sérialisation / chargement JSON viaserde - Tirage pondéré d'un caractère et d'une longueur de mot
- Génération effective des mots (
get_word/get_word_listsont encore des stubs) - Analyseur de texte (extraction des fréquences vers JSON)
- Point d'entrée / interface en ligne de commande (
mainest vide pour l'instant)
Analyse un texte et génère un fichier *.json contenant les fréquences d'apparition des lettres et les fréquences de longueur de mot.
🚧 Pas encore implémenté.
Génère des mots à partir d'un fichier de fréquences (une GenerationTable sérialisée en JSON).
🚧 En cours : le chargement et la modélisation sont en place, mais la génération des mots renvoie encore un résultat vide.
Un fichier de fréquences est une GenerationTable sérialisée en JSON. Elle combine deux ensembles de poids :
symbol_list— la liste des caractères avec leur fréquence d'apparition ;length_distribution— la distribution des longueurs de mot, où chaque entrée est un couple[longueur, poids].
Exemple :
{
"symbol_list": {
"symbols": [
{ "character": "a", "frequency": 0.25 },
{ "character": "e", "frequency": 0.40 }
]
},
"length_distribution": {
"distribution": [
[4, 0.1],
[5, 0.3],
[6, 0.6]
]
}
}Les fréquences servent de poids pour un tirage aléatoire pondéré : il n'est pas nécessaire qu'elles somment à 1.
- Rust (toolchain stable, édition 2024)
cargo(fourni avec Rust)
git clone https://github.com/gurnari/esus.git
cd esus
cargo buildExécution :
cargo runNote : tant que le point d'entrée n'est pas implémenté, l'exécution ne produit rien d'utile.
# Lancer les tests
cargo test
# Vérifier le formatage
cargo fmt --check
# Linter
cargo clippyDépendances principales : rand pour le tirage pondéré, serde et serde_json pour la (dé)sérialisation des tables de génération.
Distribué sous licence GPL-3.0. Voir le fichier LICENSE pour plus d'informations.