У меня есть метод table_data
, используемый для построения многомерного массива для таблицы умножения. Первая строка и столбец таблицы одинаковы, и каждая ячейка содержит произведение для соответствующей строки и столбца. Вот что он в итоге печатает:
2 3 4 . . n
2 4 6 8
3 6 9 12
4 8 12 16
.
.
n
Как видите, существует множество дубликатов, которые можно запомнить. Вот код для создания многомерного массива:
def table_data(n)
table_header(n).map do |x|
table_header(n).map do |y|
x*y
end
end
end
def table_header(n)
@header_data ||= (1..n).to_a
end
Метод table_data
требует квадратичного времени; он выполняет двойную необходимую работу (для x*y
и y*x
). Как я могу запомнить и/или изменить этот метод, чтобы сократить время выполнения?