Im nouveau au javascript, j'ai donc décidé de demander ici. J'ai un problème avec le petit javascript qui montre où s'arrêtera l'ascenseur (à quel étage). Il commence à l'étage 0, et chaque U signifie UP et chaque D signifie DOWN. Voilà donc ce que j'ai.

    <script language="JavaScript">

 var temp = "UUDDUDUUDUDUDUDUDUDUDDD"; //

var hore = (temp.match(/U/g) || []).length;      //UP
var dole = (temp.match(/D/g) || []).length;      //DOWN

pociatocne_poschodie = 0;
vytah_zastavil = (hore - dole) + pociatocne_poschodie;

document.write(vytah_zastavil);

 </script>

Cela fonctionne très bien, mais j'ai besoin de sortir quand était l'ascenseur au sous-sol pour la première fois (après combien d'étapes).

Des idées? Merci d'avance

0
Peter Rybar 7 mars 2016 à 00:04

4 réponses

Meilleure réponse

Veuillez voir si c'est ce dont vous avez besoin, vous devrez modifier le journal en document.write obtient actuellement le premier -1 à 23 étapes

var temp = "UUDDUDUUDUDUDUDUDUDUDDD"; 

var floor = 0;

for (var i = 0; i<temp.length; i++){
  var c = temp.charAt(i);
  if(c === "U"){
    floor++;
  }
  if(c === "D"){
    floor--;
  }
  if(floor === -1){
    document.write("reached basement in " + (i+1) + " steps");
  }  
}
0
user2950720 6 mars 2016 à 21:12
var temp = "UUDDUDUUDUDUDUDUDUDUDDD"; //

var count = 0;
var basement = -1;

var step;

for (var i = 0; i < temp.length; i++) {
    if (temp[i] == "U") {
        count += 1
    } else if (temp[i] == "D") {
        count -= 1
    }
    if (count == basement) {
        step = i;
        break;
    }
}
console.log(step);
0
isvforall 6 mars 2016 à 21:18

Merci!! C'est ce dont j'avais besoin!

var temp = "UUDDUDUUDUDUDUDUDUDUDDD"; 

var floor = 0;

for (var i = 0; i<temp.length; i++){
  var c = temp.charAt(i);

  if(c === "U"){
    floor++;
  }
  if(c === "D"){
    floor--;
  }
  if(floor === -1){
    console.log("reached basement in " + i + "steps");
  }  
}
0
Peter Rybar 6 mars 2016 à 21:16

Ceci est ma solution avec divers exemples.

J'espère que cela vous aide.

function getStepsToStopInBasement(liftSteps) {
  var currentFloor = 0;
  var steps;

  for (var i = 0; i < liftSteps.length && !steps; i += 1) {
    switch (liftSteps.charAt(i)) {
      //UP
      case "U":
        currentFloor += 1;
        break;
        //DOWN
      case "D":
        currentFloor -= 1;
        break;
    }
    //CHECK BASEMENT
    if (currentFloor === -1) {
      steps = i;
    }
  }
  return steps;
}

console.log(getStepsToStopInBasement("UUDDUDUUDUDUDUDUDUDUDDD")); //22
console.log(getStepsToStopInBasement("UUDDUDUUDUDUDUDUDDD")); //18
console.log(getStepsToStopInBasement("UUDDUDDUDUDUDUDUDUDDD")); //6
console.log(getStepsToStopInBasement("UUDDUDUUDUDUDUDUDUDUDDD")); //22
console.log(getStepsToStopInBasement("UUDDUDUDDD")); //8
0
Aral Roca 6 mars 2016 à 21:30