Après avoir compris ce qu'est le webassembly et comment passer du Rust au webassembly, je me suis lancé dans le gros du sujet : écrire l'algorithme de génération de la grille du jeu
Le programme fonctionnerait de la façon suivante : mon webassembly génère les grilles et le site les affiches en laissant la possibilité au joueur d'intéragir avec cette grille. L'algorithme de génération des grilles, doit donc créer n équations aléatoirement et les placer dans une grille. Il renvoie ensuite cette grille après avoir retiré des nombres aléatoirement. Pour ce faire, j'utilise une struct Equation, qui contient 3 entiers : x, y et z tels que x + (ou -) y = z. Cette equation a aussi une direction et un sens (de la gauche vers la droite, du haut vers le bas, etc...). L'algorithme va ensuite générer une grille avec suffisemment de cases pour que les n équations puissent rentrer (100 * n² cases). Il commence par mettre une équation complètement aléatoire au milieu de la grille. Ensuite, il sélectionne l'un des nombre de la grille (appelons le k), et crée une équation aléatoire dans laquelle k est un des termes (ou le résultat). Ensuite, l'algorithme va essayer de voir dans quel direction et dans quel sens il doit insérer ladite équation. Si cette direction et ce sens n'existe pas, il choisi un autre nombre présent dans la grille et récommence.
A chaque fois que l'algorithme entre une équation dans la grille, il ajoute dans quel sens et dans quelle direction elle est insérée. Il garde aussi en mémoire une liste des nombres présent dans la grille. Ces nombres sont "disponibles" si ils ne sont associés qu'à une équation dans la grille.
Avant de renvoyer la grille, l'algorithme retire les cases qui sont inutiles.