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: p> < pré> xxx pré>
exemple de mon code en cours d'exécution: p>
Array initial = [1,2,3,4,5]; Array = [4, 5, 1, 2, 3]. P>
Toute suggestion sera appréciée. P> p>
3 Réponses :
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]
avoir des méthodes distinctes pour 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> rotateleft code> et
rotattatoir code>.
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);
Couple de choses qui ne va pas avec votre code:
- 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);
GITUB.COM/PHOTONSTORT_PHASER/BLOB/ V3.22.0 / SRC / Utils / Array / ... est-ce utile pour vous? ou aussi github.com/photonstorm/haser/ Blob / V3.22.0 / SRC / Utils / Array / ...