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

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

В этой теме 1 ответ, 2 участника, последнее обновление  Васильев Владимир Сергеевич 1 год, 10 мес. назад.

  • Автор
    Сообщения
  • #2020

    questioner
    Участник

    Нужно написать на языке Prolog функции, выполняющие:

    • поворот матрицы против часовой стрелке на 90 градусов;
    • поворот матрицы по часовой стрелке на 90 градусов;
    • поворот матрицы по часовой стрелке на 180 градусов.

    Матрица задана списком списков.

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

Для ответа в этой теме необходимо авторизоваться.