Skip to content

Quarta – Groupes aléatoires

Objectif

Créer des groupes aléatoires à partir d’une liste d’apprenants, en utilisant des fichiers de données et des scripts simples. L’objectif est de comprendre la logique de création de groupes indépendamment du langage utilisé.


Fichiers importants

  • data/learners.json : liste des apprenants au format JSON
  • javascript/groupes.js : implémentation en JavaScript
  • python/groupes.py : implémentation en Python

Principe général

  1. Lire une liste de noms depuis un fichier JSON
  2. Mélanger les noms de manière aléatoire
  3. Diviser la liste en groupes de taille k

Données (learners.json)

[
  "Ahmad",
  "Asma",
  "Danitza",
  "Inès",
  "Khrisly",
  "Lilian",
  "Ludovic",
  "Manar",
  "Manon",
  "Noemie",
  "Yacine"
]

Implémentation en JavaScript

Le script JavaScript lit le fichier JSON, mélange les données et crée des groupes.


const fs = require("fs");

const learners = JSON.parse(
  fs.readFileSync("./data/learners.json", "utf-8")
);

function groupes(k) {
  if (k <= 0) throw new Error("k must be greater than 0");
  if (k > learners.length)
    throw new Error("k cannot be greater than the number of names");

  const shuffled = [...learners].sort(() => Math.random() - 0.5);
  const result = [];

  for (let i = 0; i < shuffled.length; i += k) {
    result.push(shuffled.slice(i, i + k));
  }

  return result;
}

console.log(groupes(2));

Implémentation en Python

Le script Python applique exactement la même logique que la version JavaScript.


import json
import random
from pathlib import Path

data_path = Path(__file__).resolve().parent.parent / "data" / "learners.json"

with open(data_path, "r", encoding="utf-8") as f:
    learners = json.load(f)

def groupes(k: int):
    if k <= 0:
        raise ValueError("k must be greater than 0")
    if k > len(learners):
        raise ValueError("k cannot be greater than the number of names")

    shuffled = learners[:]  # copy
    random.shuffle(shuffled)

    result = []
    for i in range(0, len(shuffled), k):
        result.append(shuffled[i:i+k])

    return result

print(groupes(2))

Ce que j’ai appris

  • Lire des fichiers JSON
  • Utiliser des validations simples
  • Mélanger des données aléatoirement
  • Créer des groupes à partir d’une liste
  • Implémenter la même logique en JavaScript et en Python

Liens

Dépôt GitLab (fichiers de l’exercice) : https://gitlab.com/ahmadola111-group/groupes-name-choices

Documentation (site) : https://ahmad-docs-b3e3cc.gitlab.io/quarta/