Я пытаюсь оптимизировать расписание всей школы.У меня есть расписание в настоящее время организовано в листе.Инициалы учителя - это заголовки для каждого столбца, и каждая строка соответствует одному учебному периоду в течение 30 уроков.Каждая ячейка содержит имя класса.
В настоящее время я ищу классы, которые разделены между двумя учителями.
Я пытаюсь создать приложение, которое будет регистрировать имя класса, если оно появится где-либоза пределами текущего столбца (т. е. один и тот же класс преподают 2 или более разных преподавателя в разное время)
Я знаю, что циклы вложения - не наименее эффективный способ сделать это, но я просто хотел взломатьчто-то вместе быстро, чтобы сделать работу.К сожалению, этот код занимает больше времени, чем максимально допустимое время.Массив состоит всего из 30 строк и около 56 столбцов, поэтому я не понимаю, почему он занимает так много времени.(Не могу увидеть ничего, что, очевидно, бесконечно в моих циклах)
Кто-нибудь может помочь?:)
function splitClassLocator()
{
//copy the sheet to a 2d array.
//(1)descend through each column from vertical idx 3 to period6 idx36
//(2)start at horiz idx 1, descend through each item vertically.
//if item from loop 1 matches item from loop 2 and loop 1 vertical index != loop 2 vertical index
//log the item (split class)
//GET THE DATA
var sh0 = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
var range = sh0.getDataRange();
var data = range.getValues();
//COMPARE
//main row mr, main col mc V compare row cr, compare col cc
Logger.log("Rows = " + data.length + "cols = " + data[0].length);
for (var mr = 2; mr < data.length; mr ++)
{
for (var mc = 1; mc < data[0].length; mc ++)
{
for (var cr = 2; cr < data.length; cr ++)
{
for (var cc = 1; cc, data[0].length; cc ++)
{
if (mc != cc) // if it's not comparing classes belonging to the same teacher
{
if ((data[mr][mc] != undefined) || (data[mr][mc] != null) || (data[mr][mc] != ""))
{
if (data[mr][mc] == data[cr][cc])
{
Logger.log(data[mr][mc]);
}
}
}
}
}
}
}
}