Вертикальные песочные часы
Задача.
Дан двумерный массив. Число строк равно числу столбцов. Найти сумму элементов, расположенных в области песочных часов (вертикальных – синий цвет на рисунке и горизонтальных – белый цвет).
1. Сумма элементов в области вертикальных песочных часов.
Код javascript:
var arr = [];
arr[0] = [1,2,3];
arr[1] = [4,5,6];
arr[2] = [7,8,9];
var summ = 0;
for(var i = 0; i < arr.length; i++) {
if (i < arr.length/2) {
for(var j = i; j < arr[i].length - i; j++) {
summ += arr[i][j];
}
} else {
for(var j = arr[i].length - 1 - i; j <= i; j++) {
summ += arr[i][j];
}
}
}
console.log(summ);
2. Сумма элементов в области горизонтальных песочных часов.
Имея алгоритм и код, для получения суммы элементов в области вертикальных песочных часов, нетрудно получить код для подсчета суммы элементов в области горизонтальных песочных часов.
Подумайте чем отличаются эти две области: горизонтальная и вертикальная?
И найдите отличия в предыдущем и следующем коде javascript:
var arr = [];
arr[0] = [1,2,3];
arr[1] = [4,5,6];
arr[2] = [7,8,9];
var summ = 0;
for(var i = 0; i < arr.length; i++) {
if (i < arr.length/2) {
for(var j = i; j < arr[i].length - i; j++) {
summ += arr[j][i];
}
} else {
for(var j = arr[i].length - 1 - i; j <= i; j++) {
summ += arr[j][i];
}
}
}
console.log(summ);
Так что, если вдруг на занятии вы разбирали первую часть задачи (вертикальные часы), а домой вам задали вторую часть задачи (горизонтальные часы), то вам повезло…
Хотя, ладно, такого фарта в жизни не бывает :) .
Всем удачи!
До новых встреч!