Bientôt sur Actilud. Article en construction. Applique une formule mathématique. La formule utilise les valeurs calculables. Une formule s’applique toujours sur une, et une seule, série référente, calculable ou non. On peut l’utiliser pour déterminer une propriété d’un élément d’une série. Par exemple on peut utliser FORMULE pour calculer la différence entre le prix de vente et le prix d’achat d’un objet donné (la série référente pouvant être le nom de l’objet), mais pas pour comparer plusieurs objets entre eux.
f(a,b,c) = a * (c-b)
Depuis la mise à jour de mai 2026, les instruction SOMME, TOTAL, SEUIL font appel à l’instruction FORMULE, car ces instructions n’utilisent qu’une seule série référente.
Cette instruction a été programmée pour permettre la création d’intégrammes originaux, comme le jeu boursicotage sur Actilud. Dans ce Jeu, Alice vend 5 actions qu’elle avait précédemment achetées. Pour chaque action, on connaît le nom, le prix de vente et le prix d’achat unitaires, ainsi que la quantité vendue. Ceci permet de réaliser des énoncés du type :
- L’action Aciédur a gagné 10€ : prix d’achat – prix de vente
- La vente des actions Bâti-Fol a généré une plus-value de 100 € : quantité * (prix d’achat – prix de vente)
Prévisualiser les modifications (ouvre un nouvel onglet)Dans une formule, chaque valeur calculable doit être représentée de manière algébrique, par une lettre. La première lettre utilisée doit toujours être un a, et les suivantes, si elles existent, doivent apparaître dans l’ordre alphabétique. Dans notre jeu nous avons trois valeurs calculables : a,b,c.
Pour obtenir notre énoncé de type (1) on pose :
- a est le prix d’achat unitaire
- b est le prix de vente unitaire.
La formule est donc : f(a,b) = b-a
prix de vente – prix d’achat
On voit que cette formule peut générer un nombre positif (une plus-value) un nombre négatif (perte) ou un résultat nul, si l’action s’est vendue à son prix d’achat .
On peut aussi décider que a est le prix de vente et b le prix d’achat ! dans ce cas, la formule sera inversée : f(a,b)=a-b. Le choix des valeurs de a et de b est programmable.
Pour obtenir un énoncé du type (2), on pose :
- a est le prix d’achat unitaire
- b est le prix de vente unitaire.
- c est la quantité vendue.
La formule est donc : f(a,b,c)= c*(b-a)
quantité * (prix de vente – prix d’achat)
Ce qui nous donne le montant de la plus-value, ou de la moins-value, réalisée par Alice sur une action donnée (ici: Bâti-Fol) au moment de la vente.
Remarquez les opérateurs: le signe « mutliplier » n’est pas un « x » comme d’habitude, mais le signe « * ». Il s’agit du codage informatique (pour éviter de confondre le signe multiplier avec la lettre x).
Les opérateurs
- Les opérateurs classiques sont : + (addition, – (soustraction), * (multiplication), / (division), % (modulo.)
- les parenthèses.
- les opérateurs de comparaison : < (inférieur), <= (inférieur ou égal), == (égal) , != (différent), > (supérieur), >= (supérieur ou égal). Ces opérateurs renvoient une valeur booléenne (vrai ou faux). À la sortie de la formule, les valeurs booléennes sont converties en nombres (faux est traduit en 0 et vrai est traduit en 1.)
- l’opérateur unaire ! (non) : !a est vrai si a est faux, faux si a est vrai. !(a<b) est vrai si a >=b.
- l’opérateur ternaire : expression ? valeur_si_vrai : valeur si faux – par exemple : (a-b)>=0?1:0 renvoie 1 si (a-b) >=0, 0 si non.
- toutes les formules disponibles dans la bibliothèque Javascript Math, dont :
- Math.sign(expression) : renvoie -1 si l’expression est négative, 0 si elle est nulle, 1 si elle est positive;
- Math.floor(expression) : renvoie la partie entière;
- Math.round(expression): arrondit l’expression à l’unité;
- Math.abs(expression) renvoie la valeur absolue de l’expression;
Toute opération réalisable en Javascript, tenant dans une ligne, peut être programmée.
Depuis la mise en place de FORMULE, SOMME est codée sous la forme f(a,b)= a+b et TOTAL, dans le jeu « le Verger », est codée f(a,b,c)= a+b+c. Les instructions SOMME et TOTAL sont conservées par souci de compatibilité, et aussi parce qu’elles sont plus faciles à programmer que FORMULE ! Notez cependant que FORMULE n’a pas besoin de définir des séries « sommables », car toutes les séries calculables sont disponibles.
Attention !
Tous les calculs se font sur des nombres réels. De ce fait, des approximations d’arrondi peuvent se produire dans les formules complexes. Recourez alors à Math.round.
Les paramètres
Nom de la formule
C’est ce nom qui sera affiché dans la proposition formelle. Par exemple, pour le point (2), vous pouvez appeler votre formule « PLUSVALUE » (seules des lettres et des chiffres sont admis). Pour le point (1) on peut appeler la formule « VARIATION » qui traduit l’évolution du prix unitaire entre la vente et l’achat.
L’énoncé résutant sera, par exemple:
Bâti-Fol: PLUSVALUE(prix d’achat unitaire, prix de vente unitaire,quantité) = 500
Aciédur: VARIATION(prix d’achat unitaire, prix de vente unitaire) = -20
Série référente
Rappel : une série est formée par un en-tête et des valeurs. Par défaut, le nom de la série est celui de l’en-tête. Exemple : la série prix d’achat est formée par l’en-tête prix d’achat et des valeurs {10,20,30,40,50}
La série référente est la série sur laquelle la formule s’applique. Dans notre exemple, c’est la série nom, qui contient AcierDur ou Bâti-Fol. Vous pouvez choisir une série particulière ou laisser l’algorithme choisir aléatoirement. Il ne peut y avoir qu’une seule série référente.
Choix aléatoire : il s’effectue sur les séries n’intervenant pas dans la formule, au moment de son exécution. Dans le cas (1), la variable a est toujours le prix d’achat et b toujours le prix de vente. La série référente peut donc être choisie entre « nom de l’action » ou « quantité ». Le choix se fera aléatoirement sur les deux possibilités. Si le choix se fait sur la quantité, on produira un énoncé du type :
30 : VARIATION(prix d’achat unitaire, prix de vente unitaire) = -20
Le lot de 30 a perdu 20€ par action.
Choix d’une série : contrairement à ce qu’il se passe pour le choix aléatoire, la série choisie peut faire partie des séries attribuées aux variables (voir ci-dessous). Dans ce cas, l’énoncé formel généré n’affichera pas la variable entre les parenthèses de la formule.
Série a, b, c, …
C’est ici que l’on indique les séries dans lesquelles les variables a, b, c,… vont chercher leurs valeurs.
C’est un tableau de cases à cocher. Chaque colonne correspond à une variable de la formule : a,b, c, … Chaque ligne est une série calculable de notre intégramme (donc dans notre cas, les noms des actions ne figure pas). Les colonnes doivent être remplies de gauche à droite. Il est interdit de laisser une colonne vide entre deux colonnes renseignées. On doit donc obligatoirement commencer par a, puis par b, et ainsi de suite.
Dans le cas de notre exemple, cas (1), formule f(a,b) = b-a, on cochera les cases (a, prix d’achat unitaire), (b, prix de vente unitaire). Pour le cas (2), formule f(a,b,c)=c*(b-a), on cochera (a, prix d’achat unitaire) , (b, prix de vente unitaire) , (c, quantité) .

Cocher plusieurs séries pour une même variable
Si une variable est associée à plusieurs séries, l’algorithme traite chaque série parmi celles qui sont cochées, à condition qu’elle ne soit pas déjà choisie par les variables précédentes. Pour illustrer ce cas, prenons l’énigme au verger où nous avons trois séries calculables concernant le poids des noix, des pommes et des poires. Nous souhaitons effectuer la somme de deux séries au hasard. Nous choisirons les trois séries pour a et pour b. Les calculs s’effectueront sur (noix,pommes), (noix, poires), (pommes,poires) , a et b étant toujours choisis dans des séries différentes. La formule étant commutative, il n’y a que 3 combinaisons possibles. Ici, la variable c n’est pas utilisée dans la formule: on laisse donc vide la colonne c .

Variable inutilisée dans la formule
Les colonnes vides sont toujours situées sur les dernières variables. Les variables associées aux colonnes vides ne sont pas utilisées dans la formule.
f(a,…)=
Formule en écriture algèbrique utilisant les variables a,b,c. Votre formule sera compilée en temps réel et testée sur toutes les combinaisons possibles générées par vos séries. Vérifiez donc bien la syntaxe et soyez attentif aux problèmes, comme les divisions par zéro !
La formule est commutative
Cochez la case si la formule est commutative. C’est le cas pour les instructions de type SOMME : a+b. En effet, a+b = b+a. Ceci permet d’accélerer les calculs en évitant les combinaisons inutiles. Dans le cas de l’énigme au verger, la commutativité produira uniquement des sommes de type (noix, pommes), (noix, poires), (pommes, poires). Les autres combinaisons possibles, comme (poires, pommes) seront ignorées car déjà traitées par l’équivalent commutatif.
Travail avec des constantes
Dans le cas général, on écrit la constante directement dans la formule :
a < 30
renvoie 1 pour toutes les valeurs de a inférieures à 30, et 0 pour toutes celles supérieures ou égales à 30.
Ces valeurs pourront ensuite être filtrées (voir ci-dessous), pour ne retenir par exemple que les valeurs à 1.
On peut souhaiter que la constante soit choisie parmi les valeurs d’une série, sans connaître précisément cette valeur. On utilise à ce moment la constante K, que l’on doit associer à une des variables déjà définies. K doit être écrite avec une majuscule.
a < K
renvoie 1 pour toutes valeurs de a inférieures à K, K étant choisie parmi les valeurs de a.
Pour utiliser la constante K dans la formule, cochez une des cases situées sous les variables.
Remarque : K n’est pas vraiment une constante, même c’est ainsi que vous devez la considérer lorsque vous écrivez la formule. En réalité, toutes les valeurs possibles de K seront traitées dans votre formule, exactement comme pour les variables.
Les filtres
Il y a trois filtres qui permettent d’accepter ou de refuser une formule, selon son résultat, le nombre de combinaisons qu’elle créée ou l’incidence qu’elle a sur la grille de jeu.
Résultats acceptés, exclus :
Vous pouvez demander que votre formule renvoie un résultat choisi parmi un ensemble. Indiquez tous les résultats souhaités, séparés par des virgules, dans le champ acceptés.
Certains résultats ne sont pas souhaitables. Vous pouvez les exclure dans le champ correspondant. Dans l’énigme boursicotage, on exclut la valeur 0 pour les formules, car on veut éviter les énoncés qui contiennent des plus-values à 0 ou les gains nuls.
Les nombres sont au format informatique standard : une suite continue de chiffres. Si le nombre est décimal (avec une virgule), utilisez le point du pavé numérique.
Par défaut, laissez les champs vides.
Seuil combinatoire
Définit la taille de la combinaison résultant de l’application d’une formule.
Plusieurs valeurs pour a, b, c… peuvent produire le même résultat. Par exemple, notre fonction VARIATION= b-a peut donner un résultat de 10. Ce résultat est possible pour plusieurs valeurs de (a,b) : (10,20); (20,30),(30,40),(40,50) soit 4 couples possibles. On dira que la taille de la combinaison est de 4. Un résultat de 40, lui, n’est possible que pour un seul couple : (10,50). La taille de la combinaison, ici, est de 1. Attention, la combinaison ne contient pas uniquement des couples. S’il n’y a qu’une variable, ce sera des singletons. Pour 3 variables, on aura des triplets, etc.
Le seuil combinatoire définit la taille acceptable de la combinaison générée par la formule, une fois qu’elle a un résultat.
Seuil >=0 : la taille de la combinaison doit être strictement supérieure au seuil. La valeur 0 est la valeur par défaut: on accepte donc tous les résultats, peu importe la taille de la combinaison . Un seuil de 1 autorise des combinaisons de taille supérieure ou égale à 2, ce qui rend le jeu plus difficile, en éliminant les solutions immédiates. Plus le seuil est élevé, plus le jeu est difficile. Mais veillez à ce qu’il ne soit pas trop élevé, au risque de rendre la formule inopérante !
Seuil <0 : le nombre de combinaisons doit être exactement celui indiqué, en valeur absolue: dans notre exemple, une combinaison de -1 n’autorisera que les valeurs (10,50),avec un résultat de 40. Cela peut être utile pour créer des énigmes faciles. Vous devez veiller à ce que le seuil ne contredise pas la liste des résultats acceptés ou exclus.
Limite des coups
Lors de l’évaluation de la formule, l’ensemble des cas va être traité, dans un ordre aléatoire. L’ordre aléatoire fait que les items ne sont pas traités dans l’ordre de leur série. Chaque résultat accepté est enregistré : c’est un « coup » possible. Une fois que l’ensemble des coups possibles a été généré, ou qu’un maximum de 150 coups a été atteint, le logiciel choisit un seul coup dans la liste, celui qui a le meilleur score à l’évaluation.
Si vous traitez tous les cas possibles, alors, forcément, l’évaluation ne retiendra toujours que les coups qu’elle préfère… et donnera souvent les même énoncés. Ainsi, en mode « standard », le logiciel privilégie les signes « vrai » par rapport aux « faux » et aux booléens. Il ne retiendra donc que les solutions les plus triviales, celles qui produisent toujours des « vrai » dans la grille. Par exemple, si vous faites une comparaison de type a<K, et si a est un nombre compris dans {10,20,30,40,50} le logiciel retiendra les formules qui satisfont a<20, car elles créent un signe « vrai » dans la case liée au « 10 », ce qui rapporte plus de points à l’évaluation.
Pour contrer cet effet, on limite le nombre de coups générés. Cette limite peut être drastique. Par exemple, pour simuler l’instruction SEUIL, on utilise effectivement la formule a<K ou a>K, mais en limitant le nombre de coups à 1. Cela crée plus de variabilité dans les énoncés. De plus, les calculs sont considérablement accélérés puisqu’on s’arrête d’évaluer les formules dès qu’un coup a été trouvé. Ce n’est pas forcément le meilleur des coups possibles, mais au moins on évite les énoncés triviaux.
Codage dans la grille
Lorsque la formule est effectivement appliquée dans la grille, elle peut produire l’apparition de booléens, de signes faux, voire même, s’il n’y a qu’un seul uplet, des signes vrai. Attention, les répercussions dans la grille dépendent de son état au moment où l’instruction est exécutée. Si d’autres instructions ont eu lieu avant, elles peuvent avoir une incidence sur le remplissage de la grille.
Le codage détermine l’impact de la toute première utilisation de la formule :
- vide : la formule ne doit pas produire de modification dans la grille. Pour résoudre la formule, il faut donc que le joueur traite d’autres propositions pour avancer dans le jeu.
- partiel : la formule doit permettre de placer des signes faux ou des booléens.
- complet : on peut placer des signes vrai dans la grille : la formule est résolue.
Le codage a été mis en place pour garder une compatibilité avec l’instruction TOTAL. Remarquez cependant l’imprécision de cette directive. L’ordre de création des énoncés ne correspond pas forcément à celui que le joueur va employer. Pour un joueur, un énoncé peut très bien provoquer une modification dans la grille, alors qu’il n’en produisait pas pour le programme au moment de sa création.
![]()
Isolé: si l’instruction fonctionne en mode isolé, le concepteur ne choisit pas les rangées qui contiennent déjà des signes, y compris des booléens.
![]()
Maximum : nombre maximum d’exécutions de cette instruction.
