-1
votes

JavaScript: faites pivoter un tableau à gauche puis à droite par un nombre donné de rotations

Je dois être capable d'écrire une fonction qui tourne une matrice donnée, d'abord à gauche, puis à droite par un nombre donné de rotations.

Ce que j'ai écrit jusqu'à présent: < pré> xxx

exemple de mon code en cours d'exécution:

Array initial = [1,2,3,4,5]; Array = [4, 5, 1, 2, 3].

Toute suggestion sera appréciée.


3 Réponses :


0
votes

Ce code devrait faire ce que vous voulez:

const rotate = (array, rotLeft, rotRight) => {
    const leftPass = [...array.slice(rotLeft), ...array.slice(0, rotLeft)];
    const rightPass = [...leftPass.slice(array.length - rotRight), ...leftPass.slice(0, array.length - rotRight)];
    return rightPass
}

// rotate([1,2,3,4,5], 3, 4) = [5, 1, 2, 3, 4]


0 commentaires

0
votes

avoir des méthodes distinctes pour rotateleft code> et rotattatoir code>.

sur chaque rotation gauche, prenez le premier élément et conservez-le enfin (déplacer et pousser) Sur chaque droite tournez, prenez le dernier élément et conservez-le au début (POP et UNSHIFT) P>

P>

const rotateLeft = (arr, num) =>
  Array.from({ length: num }).forEach(() => arr.push(arr.shift()));
const rotateRight = (arr, num) =>
  Array.from({ length: num }).forEach(() => arr.unshift(arr.pop()));

const rotateArray = (arr, rotLeft, rotRight) => {
  rotateLeft(arr, rotLeft);
  rotateRight(arr, rotRight);
};

let arr = [1, 2, 3, 4, 5];
let rotLeft = 3;
let rotRight = 4;

rotateArray(arr, rotLeft, rotRight);
console.log(arr);


0 commentaires

0
votes

Couple de choses qui ne va pas avec votre code:

  1. la partie du code qui doit faire pivoter à droite est la même que celle qui tourne à gauche li> ol> blockQquote>

    Pour faire pivoter le tableau à droite, vous devez commencer à partir de la fin de la matrice (au lieu du démarrage, qui est pour la rotation gauche): P>

    function rotateArray(arr, rotLeft, rotRight) {
      let len = arr.length;
      for (let i = 0; i < rotLeft; i++) {
        let temp = arr[0];
        for (let i = 0; i < len; i++) {
          arr[i] = arr[i + 1];
        }
        arr[len - 1] = temp;
      }
    
      for (let i = 0; i < rotRight; i++) {
        let temp = arr[len - 1];
        for (let i = len - 1; i > 0; i--) { // start from the last index, end at 0
          arr[i] = arr[i - 1];
        }
        arr[0] = temp;
      }
      return arr;
    }
    
    let arr = [1, 2, 3, 4, 5];
    
    let rotLeft = 3;
    let rotRight = 4;
    let output = rotateArray(arr, rotLeft, rotRight);
    console.log("New Array:", output);


0 commentaires