Rle en JS

Bonjour,

Bonjour,

Etant débutant en JS je viens vous demander de l'aide il faut absolument que je parvienne a réaliser un rle en JS. Mon programme devra demander une liste (ex BBBBBBNN) et le programme devra donner 6B2N. J'ai bien compris qu'il fallais utiliser for et if mais je ne sais pas comment mdr. De plus je pense qu'il faudrais une sorte de compteur...

PS:Merci a la personne qui m'a rapeler que j'avais un cerveau XD

4 réponses

  1. Modérateur
    Mais oui.
    Il te faut une boucle
    un IF pour tester si la valeur de ta boucle est identique à la précédente ou non
    Une variable que tu incrémentes à chaque tour de boucle et que tu réinitialise lorsque tu changes de lettre
    Une variable pour stocker le résultat final
    1. var a;
      a=prompt("Quel est la liste ?");
      var i=0

      for (i=0;i<=20;i=i+1){
      document.write(a[i]);
      }

      Pour l'instant j'ai sa... donc en gros il faut que je change le for en if et que je rajoute des variable
    2. Modérateur
      @maxrzkEn fait il faut :

      Spliter ta variable A pour en faire un array
      Boucler sur ce tableau
      Y mettre un IF pour vérifier si tu as le même caractère ou si tu en a changé
      Si tu es sur le même... incrémenter ta variable
      Si tu es passé à un autre ... stocker le compteur + la lettre dans la variable result
    3. comment je fait pour que ma boucle ne tourne pas à l'infini ?
    4. @jordane45merci bcp de ton aide mdrr je débute vraiment j'en suis a mes premieres heure donc ne le prend pas mal si je ne comprend pas tout tout de suite
  2. var a;
    a=prompt("Quel est la liste ?");
    var resultat;
    var tableau = [];
    tableau [0] = "B";
    tableau [1] = "N";

    C'est bien comme début ?
    1. Modérateur
      Non.
      Tu ne sais pas à l'avance quelles seront les lettres....
      C'est pour ça qu'il faut SPLITER la variable issue de ton PROMPT

      Regarde déjà ce que donne ces lignes de code :
      var a=prompt("Quel est la liste ?"); 
      var arr = a.split('');
      
      console.log(arr);
      
  3. Modérateur
    Bon.... je suppose que le week end a été dur pour tout le monde.... et que tu vas t'agacer si tu ne trouves pas rapidement la solution...
    Vu la simplicité de l'exo.. je vais te donner la réponse.... ne pouvant assurer un suivi de la discussion toute la nuit... :-)

    Donc voici deux façons de résoudre ton exo :

    Solution 1 :
    function solution1(){
         //on initialise les variables
         var result= "";
         var compteur = 0;
         var liste = prompt("Quel est la liste ?"); 
         var carprec = null;
       
         //on transforme ta liste en array
         var arr = liste.split('');
      
         //on boucle sur chaque lettre
         arr.forEach(function(element) {
          
           if(element != carprec && carprec!=null){
              result += compteur + carprec;
              compteur = 0;
           } 
          //on incrémente le compteur
          compteur++;
      
          //on stocke le caractère précédent pour le if
          carprec = element;
      
       });
    
       result += compteur + carprec;
          
       alert(result);
    }
    
    


    Solution 2 :
    // Autre façon de faire :
     function solution2(){
         var str =  prompt("Quel est la liste ?"); 
        var counts = {};
    
        // Misc vars
        var ch, index, len, count;
    
        // Loop through the string...
       for (index = 0, len = str.length; index < len; ++index) {
         // on récupère le caractère
         ch = str.charAt(index); 
    
        //on compte le nombre de caractère correspondant et on stocke dans l'array counts
       counts[ch] = typeof(counts[ch]) !='undefined' ? counts[ch]+1 : 1;
       
      }  
      
       console.log(counts);
       //on construit la chaine de resultat pour l'afficher
       var result="";
       for ( var key in counts){
          result += counts[key] + key;
       };
       alert(result);
     }
    
    


    Cordialement, 
    Jordane                                                                 
    1. Bonjours désolé pour mon absence... Merci de votre aide mais je n'arrive pas a faire fonctionner le programme....
    2. Modérateur
      @maxrzkTu as essayé quoi , où , comment ??