Bonjour à tous,
J'essaye de générer une équation aléatoire. Imaginons une fonction rdm_eq(n) qui prend en argument un entier et retourne une fonction qui prend en argument n entiers avec une opération aléatoire effectuées entre eux. Par exemple rdm_eq(3)(x, y, z) retournerais x * y.
Je suis parvenu à arriver jusqu'ici mais j'ai besoins d'aller plus loins: rajouter un second argument k à ma fonction rdm_eq(n, k) et qui représenterais lui le nombre d'opérations compté sur les symboles (+,.,-). Par exemple, rdm_eq(2, 4)(a, b) pourrait être "a * b + a - b * b" qui prend donc bien deux argument et effectue 4 opérations.
Voici pour l'instant mon avancée:
Le problème étant bien sur que ma fonction rdm_eq demande une liste d'augments
pré-défini.
J'espère avoir été assez claire et que mon problème ai une solution!
Je vous souhaite un bon week-end à tous (:
Modifié par vzytoi (29 Oct 2022 - 16:56)
J'essaye de générer une équation aléatoire. Imaginons une fonction rdm_eq(n) qui prend en argument un entier et retourne une fonction qui prend en argument n entiers avec une opération aléatoire effectuées entre eux. Par exemple rdm_eq(3)(x, y, z) retournerais x * y.
Je suis parvenu à arriver jusqu'ici mais j'ai besoins d'aller plus loins: rajouter un second argument k à ma fonction rdm_eq(n, k) et qui représenterais lui le nombre d'opérations compté sur les symboles (+,.,-). Par exemple, rdm_eq(2, 4)(a, b) pourrait être "a * b + a - b * b" qui prend donc bien deux argument et effectue 4 opérations.
Voici pour l'instant mon avancée:
// rdm_op retourne de manière aléatoire une fonction
// qui effectue une opération entre deux arguments.
// ( ici rdm_i est juste une fonction qui retourne un indice aléatoire)
function rdm_op() {
let ops = Array(
(x, y) => x * y,
(x, y) => x + y,
(x, y) => x - y
);
return ops[rdm_i(ops)];
}
// retourne un argument aléatoire
function rdm_arg(...args) {
return args[rdm_i(args)];
}
// construit l'équation (ops est le nombre d'opérations)
function rdm_eq(ops, ...args) {
if (ops == 0) {
return rdm_arg(...args);
}
return rdm_op(rdm_eq(ops - 1, ...args), rdm_arg(...args));
}
Le problème étant bien sur que ma fonction rdm_eq demande une liste d'augments
pré-défini.
J'espère avoir été assez claire et que mon problème ai une solution!
Je vous souhaite un bon week-end à tous (:
Modifié par vzytoi (29 Oct 2022 - 16:56)