-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathJavascript.js
56 lines (50 loc) · 1.96 KB
/
Javascript.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
let size = parseInt(readline());
let angle = parseInt(readline());
// Initialise un tableau vide pour stocker les valeurs de la matrice
let block = [];
for (let i = 0; i < size; i++) {
block.push(readline().split(" "));
}
// Effectue la rotation de la matrice en utilisant la valeur de angle
angle = (angle - 45) % 360;
while (angle > 0) {
block = rotateMatrix(block);
angle -= 90;
}
// Boucle à travers chaque diagonale de la matrice en commençant par la dernière
for (let i = size - 1; i >= -size; i--) {
// Crée une chaîne contenant des espaces en fonction de la valeur de i
let sp = " ".repeat(Math.abs(i));
// Affiche la diagonale courante avec les espaces ajoutés en début et fin de chaîne si la longueur de la diagonale est différente de zéro
if (getDiagonal(block, i).length) console.log(sp + getDiagonal(block, i).join(" ") + sp);
}
// Fonction pour effectuer une rotation de 90 degrés de la matrice donnée
function rotateMatrix(matrix) {
// Initialise un tableau vide pour stocker la matrice tournée
let rotated = [];
// Boucle à travers chaque ligne de la matrice
for (let i = 0; i < matrix.length; i++) {
rotated.push([]);
// Boucle à travers chaque colonne de la matrice
for (let j = 0; j < matrix[i].length; j++) {
// Stock les valeurs tournées dans le tableau rotated
rotated[i][j] = matrix[j][matrix.length - 1 - i];
}
}
return rotated;
}
// Fonction pour obtenir la diagonale de la matrice donnée à l'offset donné
function getDiagonal(matrix, offset) {
// Initialise un tableau vide pour stocker la diagonale
let diagonal = [];
// Boucle à travers chaque ligne de la matrice
for (let i = 0; i < matrix.length; i++) {
let j = i + offset;
// Si la colonne correspondant à l'offset donné existe dans la ligne courante
if (j >= 0 && j < matrix.length) {
// Ajoute la valeur de cette colonne dans le tableau diagonal
diagonal.push(matrix[i][j]);
}
}
return diagonal;
}