회전하는 디스플레이
시간 제한2초메모리 제한512 MB
화살표 모양 토큰으로 채워진 N x N 격자와 회전 및 뒤집기 명령이 주어질 때, 모든 명령을 순서대로 적용한 뒤의 격자를 출력한다.
문제
웬디는 연구실에서 여름 인턴을 마무리하면서, 작은 물체를 다루도록 학습 중인 3D 프린팅 로봇을 시험한다.
로봇의 능력을 시험하는 데에는 디스플레이라고 부르는 간단한 장치를 쓴다. 디스플레이는 정사각형 칸이 으로 놓인 얇고 투명한 판이다. 각 칸에는 알아보기 쉽도록 아스키 문자 모양으로 만든 토큰이 하나씩 들어 있고, 작은 자석이 토큰을 칸에 붙들어 둔다. 디스플레이는 판에 수직인 축을 중심으로 90도 회전할 수 있고, 판과 평행한 네 축 가운데 하나를 중심으로 180도 뒤집을 수 있다.
로봇은 회전과 뒤집기를 다음처럼 흉내 낸다. 토큰을 칸에서 빼내 다른 칸에 다시 꽂아, 판 전체를 회전하거나 뒤집은 것과 똑같이 보이게 만든다. 그렇게 보이게 하려고 개별 토큰을 새 자리에서 돌리거나 뒤집어야 하면 그것도 함께 한다. 이 과정 내내 디스플레이 자체는 움직이지 않는다.
예를 들어 왼쪽 위 칸에 < 모양 토큰이 있다고 하자. 세로축을 중심으로 뒤집으면 이 토큰은 오른쪽 위 칸으로 옮겨 가고 > 모양이 된다. 이어서 왼쪽으로 회전하면 같은 토큰이 다시 왼쪽 위 칸으로 돌아오고 ^ 모양이 된다.
웬디는 로봇이 뒤집기와 회전을 길게 이어서 수행하도록 프로그램을 짰다. 로봇의 알고리즘이 맞는지 확인하려면 작업이 끝났을 때 디스플레이가 어떤 모습이어야 하는지 미리 알아야 한다.
입력
디스플레이의 토큰은 다음 열 가지 대칭 문자 가운데 하나의 모양이다: <, >, ^, v, o, x, |, -, /, \. 대칭 문자를 돌리거나 뒤집으면 모양이 그대로이거나, 돌리거나 뒤집은 모양과 가장 비슷한 다른 대칭 문자가 된다. 오른쪽으로 90도 회전하면 <는 ^, ^는 >, >는 v, v는 <, |는 -, -는 |, /는 \, \는 /가 되고, o와 x는 그대로다. 세로축을 중심으로 뒤집으면 <와 >가 서로 바뀌고, /와 \가 서로 바뀌며, 나머지는 그대로다. 다른 연산은 모두 이 두 연산을 합성한 것과 같다.
입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에는 정수 이 주어진다 (). 이어지는 개의 줄은 디스플레이의 처음 상태를 나타내며, 각 줄은 정확히 개의 대칭 문자로 이루어진 문자열이다. 각 문자는 칸 하나에 해당하고, 입력의 문자 순서는 디스플레이의 토큰 순서와 같다. 빈 칸은 없다.
개의 줄 다음 줄에는 수행할 뒤집기와 회전을 지정하는 명령 문자열이 주어진다. 각 명령 문자의 뜻은 이렇다. <는 왼쪽 회전, >는 오른쪽 회전, -는 가로축을 중심으로 뒤집기, |는 세로축을 중심으로 뒤집기, \는 주대각선을 중심으로 뒤집기, /는 반대각선을 중심으로 뒤집기다. 연속한 두 명령 문자는 공백 하나로 구분한다. 로봇은 명령 문자열에 적힌 순서를 지켜야 한다. 명령의 개수는 항상 1개 이상 개 이하다.
입력은 파일의 끝에서 끝난다.
이 문제에 쓰이는 문자의 십진 아스키 코드는 45 (-), 47 (/), 60 (<), 62 (>), 92 (\), 94 (^), 111 (o), 118 (v), 120 (x), 124 (|)다.
출력
각 테스트 케이스마다 디스플레이에 놓인 토큰의 최종 위치와 방향을 나타내는 개의 줄을 출력한다. 디스플레이를 나타내는 출력 형식은 입력 형식과 같고, 디스플레이의 크기는 출력하지 않는다.