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"
*/