C'est bien la pire folie que de vouloir être sage dans un monde de fous.
CLUBELO 2005 est destiné avant tout aux responsables de Club d'échecs qui désirent gérer le classement de leurs joueurs par l'intermédiaire du classement ELO. En effet CLUBELO calcule et met à jour en direct les classements des joueurs
Mais CLUBELO peut être aussi utilisé pour tous les clubs
qui ont besoin d'un classement rigoureux des joueurs en fonction
des performances. CLUBELO peut même gérer
simultanément plusieurs "salle de jeux"
différentes.
Clubelo est destiné aux dirigeants de Club de jeux (Échecs, Dames, etc.) Il permet la saisie de divers renseignements sur les joueurs inscrits et surtout, c'est son utilité première, il gère le classement des inscrits sur la base du calcul ELO. Les classements sont mis à jour après chaque partie. L'historique est sauvegardé, et des états peuvent être publiés au format html.
Clubelo est un logiciel multilangue. Les fichiers langues se situent dans le répertoire d'installation de CLUBELO, dans le sous répertoire "lang".
Dans la version 1.01, seules les langues française et anglaise sont proposées. Les personnes désirant traduire CLUBELO peuvent le faire facilement :
il suffit en effet de créer un fichier texte dont le nom est la langue en question et d'y entrer les traductions de chacune des expressions utilisées par CLUBELO en prenant pour exemple le fichier "English". Bien entendu je serai ravi si elles acceptaient de m'envoyer leur traduction!
CLUBELO est un software proposé en version d'évaluation, limité à 100 utilisations. Si vous désirez poursuivre l'utilisation de CLUBELO après la période d'évaluation, il vous faut acquérir la licence. Pour cela vous devez imprimer et m'envoyer le formulaire.
Pour trouver votre numéro de série, lancez CLUBELO et cliquez sur Acheter.
A la réception de votre formulaire, je m'engage à vous envoyer à l'adresse Mel que vous m'avez fournie, la clef d'enregistrement.
Il vous suffit alors de lancer CLUBELO , de cliquer sur Acheter et d'entrer cette clef dans le cadre de saisie.
Il est à noter que la licence de CLUBELO est uniquement valable sur l'ordinateur où la version d'évaluation était enregistrée, et que CLUBELO n'est pas "transportable" d'un ordinateur à l'autre. En enregistrant CLUBELO, vous acceptez donc ces conditions.
Rien de bien compliqué! En double-cliquant vous choisissez la langue de fonctionnement de CLUBELO. Traducteur ?
Aux Échecs on appelle joueur en premier, le joueur qui débute la partie. On dit simplement "Les Blancs" pour le désigner non nominativement. CLUBELO a été créé au départ pour les joueurs d'échecs, mais CLUBELO est aussi utilisé par d'autres "gamers". Si vous êtes responsable d'un club de puissance 4, il pourrait être intéressant de remplacer "Les Blancs" par "Les rouges" :-)
Aux Échecs on note traditionnellement la victoire des Blancs par 1-0, celle des noirs par 0-1 et la nulle par 0,5-0,5. Mais CLUBELO vous autorise à bouleverser cette convention.Pourquoi pas 3-0, 0-3 et 1-1 ?
Vous pouvez aussi changer le nom de l'administrateur (Visible dans l'édition des états)
Beaucoup d'entre vous utilise CLUBELO en structure scolaire et désire protéger les options de CLUBELO tout en laissant les jeunes joueurs saisir leurs résultats. C'est possible! En décochant la case "Menu paramètres visible" vous rendez (logiquement) le "menu paramètres" invisible.Ainsi, dans l'écran principal de CLUBELO , on ne peut plus accéder aux options de ce menu.
Comment y retourner alors?
Un double- clic sur la bannière de gauche dans l'écran principal réactive le menu. Mais vous pouvez protéger ce retour à la vie du menu "paramètres" par un mot de passe, c'est la dernière ligne de ce sous-menu "Options" (Uniquement accessible quand vous choisissez de rendre invisible le menu "paramètres")
Une seule discipline est créée lors du lancement de CLUBELO: Les Échecs. C'est la discipline par défaut. Elle n'est pas effaçable mais on peut la renommer. Vous pouvez créer autant de disciplines que vous le voulez. Chaque discipline correspond à une Salle de jeux.
C'est grâce à ce sous-menu qu'on peut:
Les champs Prénoms et Noms sont les seuls champs obligatoires.
Si vous désirez que le joueur ait accès à une salle de jeu, la discipline doit être activé pour ce joueur (La case à coté du nom de la discipline doit être cochée)
Vous avez alors la possibilité d'entrer d'autres renseignements sur la licence de ce joueur pour CETTE discipline: Le classement de départ est une évaluation, la plus réaliste possible du niveau du joueur:
CLUBELO enregistre automatiquement l'historique des résultats saisis et utilise cet historique pour calculer les performances des joueurs. Pour calculer la performance d'un joueur, CLUBELO utilise les 16 dernières parties "compatibles" de ce joueur comme spécifié dans les règles de gestion du classement par la FFE. Certaines informations contenues dans l'historique deviennent donc, avec le temps inutiles.
CLUBELO les fait précéder du symbole "*".
Vous pouvez dans ce sous-menu supprimer ces parties inutiles.
Vous pouvez également supprimer de l'historique une information erronée due à une erreur de manipulation dans une salle de jeux.
Le bouton "Clôturer la saison" vous permet de supprimer intégralement l'historique, les classement des joueurs sont alors réinitialisés avec comme classement de départ leur dernier classement calculé.
Remarque:La gestion de l'historique se fait, soit pour toutes les disciplines (case en haut cochée) ou par discipline (case non cochée).
Une fois dans la salle de jeux, on peut saisir les résultats des parties.
Bien sûr il faut d'abord avoir inscrit au moins deux joueurs dans la bonne discipline!
Commencez par cliquer sur le nom d'un joueur dans la liste déroulante.
Le nom du joueur sélectionné apparaît sur un bouton vert sous la liste, avec entre parenthèses son dernier classement calculé.
Si la case historique visible est cochée vous voyez alors apparaître l'historique du joueur.
Le pointeur de la souris a changé, il vous montre qu'un joueur est sélectionné.
Cliquez à nouveau dans la liste, et vous changez de joueur sélectionné.
Cliquez sur le bouton vert et le pointeur de souris redevient classique, le bouton vert disparaît, il n'y a plus de sélection.
Sélectionnez un joueur, puis cliquez sur une chaise. A gauche les blancs, à droite les noirs. Le joueur s'assoit.
L'historique a changé! Et ne montre que les partie du joueur sélectionné en fonction de sa place : Si DUPONT Jean (1600) s'assoit à gauche, l'historique est filtré pour ne montrer que les parties où DUPONT Jean avait les Blancs.
Une fois que deux joueurs sont assis, et une fois seulement appairait 3 boutons:
Il ne vous reste qu'à cliquer sur le résultat approprié.
Un clic sur la table échange les couleurs, un double-clic vide la table.
Vous pouvez y lire, si vous êtes en période d'évaluation le nombre d'utilisations qu'il vous reste.
Si CLUBELO vous plaît, pensez à l'enregistrer avant 0!
Ce menu sert à la visualisation des résultats, des historiques, et des différentes informations sauvegardées par CLUBELO. J'ai choisi le format HTML pour la visualisation parce qu'il offre un certain nombre d'avantages:
Ce menu n'est visible que si vous n'avez pas enregistré CLUBELO. Il vous invite à saisir la clef d'enregistrement.
CLUBELO 2005 (c)Laurent Petitprez 2005
CLUBELO 2005 est un software ( partagiciel) proposé en version d'évaluation, limité à 100 utilisations. Si vous désirez poursuivre l'utilisation de CLUBELO après la période d'évaluation, il vous faut acquérir la licence.
Ce programme est distribué car potentiellement utile, mais SANS AUCUNE GARANTIE, ni explicite ni implicite, y compris les garanties de commercialisation ou d'adaptation dans un but spécifique. L'utilisateur final (vous) décide après la période d'évaluation si le logiciel CLUBELO 2005 lui convient.
Après la période d'évaluation, l'achat de la clef d'activation ne donne le droit qu'à l'utilisation de la version de CLUBELO 2005 qui a générée le numéro de série, sur l'ordinateur où la version de démonstration était installée.

En Mathématiques, “choisir” sans tenir compte de l’ordre, c’est la combinaison. En Python, c’est exactement ce que fait itertools.combinations : il énumère toutes les sélections possibles de taille k parmi une liste, sans doublon, et sans permutation inutile. Résultat : du code plus clair, plus sûr… et souvent plus rapide que des boucles bricolées.
Une combinaison de taille p parmi n objets, c’est un choix sans ordre.
[katex]C_n^p[/katex] [katex]C_n^p[/katex], souvent écrit [katex]\binom{n}{p}[/katex] dans la littérature anglo-saxonne et en informatique.
[katex]C_n^p[/katex] se lit : « p parmi n »
Cela désigne le nombre de combinaisons de p éléments choisis parmi n, sans tenir compte de l’ordre.
itertools.combinations ne renvoie pas une liste : c’est un itérateurLorsque l’on utilise itertools.combinations, il est tentant de penser que la fonction renvoie immédiatement une liste contenant toutes les combinaisons possibles. Ce n’est pas le cas. L’appel :
from itertools import combinations comb = combinations([1, 2, 3, 4], 2)
ne construit pas en mémoire toutes les paires possibles. Il renvoie un objet itérateur, c’est-à-dire un objet capable de produire les combinaisons au fur et à mesure, uniquement lorsqu’elles sont demandées.
Si l’on affiche directement l’objet :
print(comb)
Python renvoie quelque chose comme :
>>> # script executed <itertools.combinations object at 0x1164f90> >>>
Tester dans le Bac à sable Python!
Cela signifie que l’on dispose d’un générateur de combinaisons, et non d’une collection déjà matérialisée.
Ce choix n’est pas anodin. Il est directement lié à la nature combinatoire du problème.
Le nombre de combinaisons de p éléments parmi n est donné par
[katex]C_n^p[/katex].
Or cette quantité peut devenir extrêmement grande lorsque n augmente. Générer toutes les combinaisons et les stocker en mémoire pourrait devenir coûteux, voire impossible.
Un itérateur adopte une stratégie dite lazy (évaluation paresseuse) :
Ainsi, la mémoire utilisée reste minimale.
L’utilisation naturelle d’un objet combinations se fait dans une boucle :

from itertools import combinations
for a, b in combinations([1, 2, 3, 4], 2):
print(a, b)
Les paires sont produites successivement. À aucun moment l’ensemble des combinaisons n’est stocké dans une liste complète.
Cette approche présente un avantage important : si l’on cherche une combinaison vérifiant une condition donnée, il est possible d’interrompre le parcours dès que le résultat est trouvé :
from itertools import combinations
nums = [2, 7, 11, 15, 3, 6]
for a, b in combinations(nums, 2):
if a + b == 9:
print(a, b)
break
Dans ce cas, seules les combinaisons nécessaires sont générées.
Un point essentiel doit être souligné : un itérateur ne peut être parcouru qu’une seule fois.
from itertools import combinations c = combinations([1, 2, 3, 4], 2) print(list(c)) # première conversion print(list(c)) # seconde conversion
La seconde conversion renverra une liste vide. L’itérateur a été “épuisé” lors du premier parcours.
Tester dans le Bac à sable Python!
Si plusieurs parcours sont nécessaires, il convient soit de recréer l’itérateur, soit de convertir explicitement le résultat en liste — à condition que le volume de données reste raisonnable :
pairs = list(combinations([1, 2, 3, 4], 2))
Il existe une cohérence profonde entre la notion mathématique de combinaison et l’implémentation choisie par Python.
Le coefficient combinatoire [katex]C_n^p[/katex] peut croître très rapidement. En conséquence, une approche “en flux” est souvent plus pertinente qu’une approche fondée sur le stockage intégral des résultats.
itertools.combinations ne fournit donc pas une liste prête à l’emploi, mais un mécanisme de génération contrôlée. Ce choix reflète une philosophie plus large de Python : privilégier l’efficacité mémoire et la modularité des traitements.
itertools (version lourde)Au Texas Hold'em No Limit, vous recevez 2 cartes privatives.
Supposons que l’on représente le paquet par les entiers de 0 à 51.
Sans itertools, on peut écrire deux boucles imbriquées pour représenter ces cartes privatives possibles :
deck = list(range(52))
hands = []
for i in range(len(deck)):
for j in range(i + 1, len(deck)):
hands.append((deck[i], deck[j]))
print(len(hands)) # 1326
Tester dans le Bac à sable Python!
Ici :
Ici :
hands,Cette méthode fonctionne, mais :
j = i + 1),
itertools.combinations (version légère)La même opération peut s’écrire :
from itertools import combinations
deck = range(52)
for hand in combinations(deck, 2):
print(hand)
Différence fondamentale :
Si l’on souhaite simplement connaître le nombre total :
count = 0
for _ in combinations(deck, 2):
count += 1
print(count) # 1326
Le résultat est identique, mais sans stockage massif.
Pour une main complète de 5 cartes :
[katex]C_{52}^5[/katex]
soit 2 598 960 combinaisons.
La version “lourde” devrait créer une liste contenant plus de 2,5 millions de tuples :
hands = list(combinations(range(52), 5))
Cela représente plusieurs dizaines de mégaoctets en mémoire.
En revanche, l’itérateur :
for hand in combinations(range(52), 5):
# analyse statistique
pass
ne conserve qu’une seule combinaison à la fois.
Sans itertools :
Avec itertools.combinations :
Dans un contexte combinatoire comme le poker, où les quantités passent rapidement de 1326 à plusieurs millions, cette différence n’est pas anecdotique : elle est structurelle.
La première fois que j’ai utilisé itertools.combinations — encore avec une certaine hésitation — c’était lors de la génération des mains pour l'a page'application Poker Training de site2wouf.fr.
À ce moment-là, l’objectif était simplement pratique : produire proprement toutes les mains possibles sans écrire des boucles imbriquées interminables. Ce n’est qu’ensuite que la portée conceptuelle est devenue évidente. Derrière une ligne de code concise se cachait une idée mathématique ancienne : la combinatoire.
Ce qui paraissait être un simple outil Python révélait en réalité une cohérence profonde entre la théorie et l’implémentation. Générer des mains de poker revient exactement à parcourir les [katex]C_{52}^2[/katex] combinaisons possibles. Python ne faisait que traduire, de manière élégante, une formule déjà connue.
Avec un peu de recul, cette première utilisation a marqué un déclic : combinations n’est pas seulement pratique, il incarne une manière plus rigoureuse de penser les problèmes. Plutôt que de “fabriquer des listes”, il invite à raisonner en termes de génération contrôlée, de flux, et d’efficacité.
C’est précisément là que les mathématiques et la programmation cessent d’être deux mondes distincts pour devenir deux expressions d’une même idée.
Imaginons que l’on souhaite former tous les groupes possibles de 3 élèves parmi une classe de 20.

students = [
"Alice", "Mohamed", "Sofia", "Lucas", "Yuki",
"Amina", "Ethan", "Fatou", "Mateo", "Inès",
"Noah", "Lina", "Arjun", "Chloé", "Ibrahim",
"Maya", "Diego", "Leïla", "Hugo", "Zara"
]
groups = []
for i in range(len(students)):
for j in range(i + 1, len(students)):
for k in range(j + 1, len(students)):
groups.append((students[i], students[j], students[k]))
print(len(groups))
Tester dans le Bac à sable Python!
Ce programme fonctionne.
Mais plusieurs éléments apparaissent immédiatement :
i, j, k) plutôt que d’élèves.Autrement dit, la mécanique de parcours prend le pas sur l’idée mathématique.
Et si l’on décide de former des groupes de 4 élèves, il faut ajouter une quatrième boucle.
La structure du code devient dépendante de la profondeur combinatoire.
Avec itertools.combinations, la même idée s’écrit :
from itertools import combinations
students = [
"Alice", "Mohamed", "Sofia", "Lucas", "Yuki",
"Amina", "Ethan", "Fatou", "Mateo", "Inès",
"Noah", "Lina", "Arjun", "Chloé", "Ibrahim",
"Maya", "Diego", "Leïla", "Hugo", "Zara"
]
groups = combinations(students, 3)
print(len(list(groups)))
Tester dans le Bac à sable Python!

Ici :
Mathématiquement, le nombre de groupes possibles est :
[katex]C_{20}^3[/katex]
soit 1140 combinaisons.
La structure du code ne change pas si l’on passe à 4 élèves :
groups = combinations(students, 4)
Seul le paramètre varie.
La mécanique reste identiqu...
Navigateur Web Opera
Le navigateur le plus rapide au monde !
Naviguez sur le Web à la vitesse de l'éclair. Découvrez le nouveau design élégant et les nombreuses autres améliorations d'Opera.
http://www.opera.com/