История изменений
Исправление korvin_, (текущая версия) :
А не проще ли, вместо обращений по индексам к односвязным спискам, вычисления их длин, построения списка индексов и всего такого, сделать так:
diagonals :: [[a]] -> ([a], [a])
diagonals matrix = (diagonal matrix, diagonal $ map reverse matrix)
diagonal :: [[a]] -> [a]
diagonal [] = []
diagonal ((x:_):rows) = x : diagonal (map tail rows)
?
Исправление korvin_, :
А не проще ли, вместо обращений по индексам к односвязным спискам, вычисления их длин, построения списка индексов и всего такого, сделать так:
diagonals :: [[a]] -> ([a], [a])
diagonals matrix = (diagonal matrix, diagonal $ map reverse matrix)
diagonal :: [[a]] -> [a]
diagonal [] = []
diagonal ((x:_):rows) = x : diagonal (map tail rows)
?
Исходная версия korvin_, :
А не проще ли, вместо обращений по индексам к односвязным спискам, построения списка индексов и всего такого, сделать так:
diagonals :: [[a]] -> ([a], [a])
diagonals matrix = (diagonal matrix, diagonal $ map reverse matrix)
diagonal :: [[a]] -> [a]
diagonal [] = []
diagonal ((x:_):rows) = x : diagonal (map tail rows)
?