How to check if all rows of a matrix are circular rotations of each other in TypeScript

1 Answer

0 votes
function rotate_left_by_one(arr: number[]) {
    const arr_size: number = arr.length;
    let rotate_row: number[] = [];
          
    for (let i: number = 0; i < arr_size; i++) {
        rotate_row[i] = arr[i];
    }
      
    const first: number = arr[0];
      
    for (let i: number = 0; i < arr_size - 1; i++) {
        rotate_row[i] = rotate_row[i + 1];
    }
          
    rotate_row[arr_size - 1] = first;
      
    return rotate_row;
}
   
function compare_rows_with_rotation(matrix: number[][], row1: number, row2: number) {
    const cols = matrix[0].length
      
    let rotate_row: number[] = rotate_left_by_one(matrix[row1]);
      
    for (let j: number = 0; j < cols; j++) {
        if (rotate_row[j] != matrix[row2][j]) {
            return false;
        }
    }
       
    return true;
}
 
 
    
const matrix: number[][] = [ [ 4,  7,  9, 14, 29], 
                             [ 7,  9, 14, 29,  4], 
                             [ 9, 14, 29,  4,  7], 
                             [14, 29,  4,  7,  9], 
                             [29,  4,  7,  9, 14] ];
   
const rows: number = matrix.length;
 
let all_rows_are_circular: boolean = true;
for (let i = 0; i < rows - 1; i++) {
    if (compare_rows_with_rotation(matrix, i, i + 1) == false) {
        all_rows_are_circular = false;
        break;
    }
}
 
 
if (all_rows_are_circular == true) {
    console.log("yes");
} else {
    console.log("no");
}
     
 
 
         
/*
run:
         
"yes"
         
*/

 



answered Jun 26, 2023 by avibootz
...