Ответ в теме: Поворот матрицы на 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 градусов, однако, более эффективным будет последовательные вертикальное и горизонтальное отражения матрицы.