Donnez vie à vos documents numériques !
 

raccourcir un script

abracadabraPDF Forums PDF – Général raccourcir un script

  • Créateur
    Sujet
  • #75463
    michel c.
    Participant

    Bonjour, j’ai un code qui risque d’être extrêmement long et je me demandais s’il était possible de le faire tenir sur moins de ligne.

    Grosso-modo, j’ai un script qui affecte aléatoirement une valeur entière comprise entre 2 valeurs à une variable (points)  et à partir de cette valeur, j’aimerais que soient affectées un couple de 3 lettres de l’alphabet à 3 variables (pointA, pointB et pointC)

    if (points == 1) {var pointA = “A”;var pointB = “B”;var pointC = “C”;}
    if (points == 2) {var pointA = “D”;var pointB = “E”;var pointC = “F”;}
    if (points == 3) {var pointA = “G”;var pointB = “H”;var pointC = “I”;}

    il va de soi que si je vais au bout de l’idée ce script va être extrêmement long.

    J’aimerais donc que soient affectées un trio de 3 lettres majuscules différentes aléatoirement parmi toutes les lettres de l’alphabet.

    En bonus, si ce n’est pas trop compliqué, j’aimerais que certaines lettres ne puissent pas se retrouver dans le même trio :

    PS, PC, FN, RN, FO, LR, PD, PQ, WC,  GPT, PT…

    Merci

     

    • Ce sujet a été modifié le il y a 1 jour et 13 heures par michel c..
Affichage de 6 réponses de 1 à 6 (sur un total de 6)
  • Auteur
    Réponses
  • #75465
    michel c.
    Participant

    Je voulais dire plutôt : j’aimerais que soient affectées un trio de 3 lettres de l’alphabet à 3 variables (pointA, pointB et pointC)

    Et non un couple de 3 lettres…

    #75466
    Merlin
    Maître des clés

    Bonjour

     

    Je ne suis pas certain d’avoir tout compris mais a priori à partir du moment où on affecte une valeur (lettre) aléatoire à pointA, pointB et pointC on se fiche pas mal de la valeur de “points” puisqu’elle n’y change rien.

     

    Ce qui nous donnerait :

    function generateRandomLetter() {
    var randomValue = Math.random();
    var randomCode = 65 + Math.floor(randomValue * 26);
    return String.fromCharCode(randomCode);
    }

    var pointA = generateRandomLetter();
    var pointB = generateRandomLetter();
    var pointC = generateRandomLetter();

    console.println(pointA + pointB + pointC);

     

    On pourrait ensuite détecter les paires interdites mais dis moi d’abord si ça convient.

    #75467
    bebarth
    Maître des clés

    bonjour,
    le principe est le bon mais il faut aussi vérifier que les 3 lettres sont différentes.
    Je pourrai regarder à mon retour mercredi ou jeudi…

    @+
    😎

    #75468
    michel c.
    Participant

    Bonjour Je ne suis pas certain d’avoir tout compris mais a priori à partir du moment où on affecte une valeur (lettre) aléatoire à pointA, pointB et pointC on se fiche pas mal de la valeur de “points” puisqu’elle n’y change rien. Ce qui nous donnerait : function generateRandomLetter() { var randomValue = Math.random(); var randomCode = 65 + Math.floor(randomValue * 26); return String.fromCharCode(randomCode); } var pointA = generateRandomLetter(); var pointB = generateRandomLetter(); var pointC = generateRandomLetter(); console.println(pointA + pointB + pointC); On pourrait ensuite détecter les paires interdites mais dis moi d’abord si ça convient.

    Oui, c’est exactement ça, il faudrait juste éviter que la même lettre se retrouve plusieurs fois dans le trio et éviter les paires ou trios interdits.

     

    #75469
    Merlin
    Maître des clés

    Essaye ça (chez moi ça fonctionne), l’idée c’est ce qu’il y a un doublon ou une association interdite on relance la fonction :

    function generLettres() {

    function generateRandomLetter() {
    var randomValue = Math.random();
    var randomCode = 65 + Math.floor(randomValue * 26);
    return String.fromCharCode(randomCode);
    }

    var pointA = generateRandomLetter();
    var pointB = generateRandomLetter();
    var pointC = generateRandomLetter();
    var str = pointA + pointB + pointC;

    console.println("pointsABC: " + pointA + pointB + pointC);

    if (pointA === pointB || pointA === pointC || pointB === pointC) {generLettres();} // dédoublonage

    else if ((/PS|PC|FN|RN|FO|LR|PD|PQ|WC|GPT|PT/.test(str))) {generLettres();} // associations interdites

    }

    generLettres();

    #75470
    bebarth
    Maître des clés

    Je pense que ça devrait être ça !

    @+
    😎

Affichage de 6 réponses de 1 à 6 (sur un total de 6)
  • Vous devez être connecté pour répondre à ce sujet.