Skip to content

gurnari/esus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Esus

⚠️ 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.

Status Rust License

Ensemble d'outils créés pour le jeu de rôle (JDR).

Sommaire

État du projet

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 via serde
  • Tirage pondéré d'un caractère et d'une longueur de mot
  • Génération effective des mots (get_word / get_word_list sont encore des stubs)
  • Analyseur de texte (extraction des fréquences vers JSON)
  • Point d'entrée / interface en ligne de commande (main est vide pour l'instant)

Outils

Analyseur

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érateur

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.

Format des fichiers de fréquences

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.

Prérequis

  • Rust (toolchain stable, édition 2024)
  • cargo (fourni avec Rust)

Compilation

git clone https://github.com/gurnari/esus.git
cd esus
cargo build

Exécution :

cargo run

Note : tant que le point d'entrée n'est pas implémenté, l'exécution ne produit rien d'utile.

Développement

# Lancer les tests
cargo test

# Vérifier le formatage
cargo fmt --check

# Linter
cargo clippy

Dépendances principales : rand pour le tirage pondéré, serde et serde_json pour la (dé)sérialisation des tables de génération.

Licence

Distribué sous licence GPL-3.0. Voir le fichier LICENSE pour plus d'informations.

About

Outils pour JDR

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages