Не реструктурируйте ваши данные - это может быть очень дорого, особенно если размер сетки очень большой.Вместо этого используйте другую итерационную логику для обхода сетки.Например:
С данными выше, сохраните их, как показано слева:
rows = {}
rows[1] = {“X”, “O”, “X”, “X”, “X”}
rows[2] = {“X”, “X”, “X”, “X”, “X”}
rows[3] = {“O”, “O”, “X”, “O”, “O”}
rows[4] = {“X”, “X”, “X”, “X”, “X”}
rows[5] = {“X”, “X”, “X”, “X”, “X”}
Метод итерации 1 будет:
for i = 1, #rows do
for j = 1, #rows[i] do
— Do something with rows[i][j]
end
end
Это будет читатьданные, подобные сетке слева: поперек строк, сверху вниз.
Метод итерации 2 будет следующим:
for i = 1, #rows[1] do
for j = #rows, 1, -1 do
— Do something with rows[j][i]
end
end
Это будет считывать данные слева , как если быэто была сетка справа.
Теперь вам нужно переставить данные (например, из-за их записи в файл изображения), а затем использовать вышеупомянутые вложенные циклы для перемещениясетки и записывать значения ячеек с каждой итерацией.
Также: если ваши сетки всегда имеют размер 5x5, то вы можете упростить приведенный выше код.Вы можете жестко запрограммировать циклы для перехода от 1 к 5 вместо использования оператора # length.