Ответ в теме: Поворот матрицы на Prolog

      Комментарии к записи Ответ в теме: Поворот матрицы на Prolog отключены
#2045

left_rotate90(Matrix, Rotate):-
  vertical_mirror(Matrix, VerticalMirror),
  transposition(VerticalMirror, Rotate).
 
right_rotate90(Matrix, Rotate):-
  horizontal_mirror(Matrix, HorizontalMirror),
  transposition(HorizontalMirror, Rotate).
 
rotate180(Matrix, Rotate):-
  vertical_mirror(Matrix, VerticalMirror),
  horizontal_mirror(VerticalMirror, Rotate).

Рассмотренный ранее предикат транспонирования матрицы заменяет строки столбцами, т.е. переворачивает матрицу. Однако, для поворота матрицы на 90 градусов влево, помимо транспонирования, требуется выполнить вертикальное отражение матрицы, а для поворота вправо – горизонтальное отражение. Поворот матрицы на 180 градусов можно выразить двумя поворотами влево или вправо на 90 градусов, однако, более эффективным будет последовательные вертикальное и горизонтальное отражения матрицы.