이 문제에서의 2048 게임의 규칙은 아래와 같다.
- 2048 게임은 4×4 크기의 격자판 위에서 진행된다.
- 처음에는 판에 아무 블록도 없고, 게임 시작과 동시에 판의 랜덤한 칸 하나에 2가 적힌 블록이 생성된다.
- 플레이어는 상하좌우 중 한 방향을 선택한 후 이동할 수 있다. 한 번의 이동에서는 격자 위의 블록이 전부 그 방향으로 움직인다. 블록들은 격자판의 끝이나 다른 수 블록과 충돌하면 멈춘다. 같은 수가 적힌 수 블록끼리 충돌할 경우 하나로 합쳐지며, 합쳐진 블록에 적힌 수는 두 블록에 적힌 수의 합과 같다. 모든 블록이 멈춘다면 한 번의 이동이 끝난다.
- 한 번의 이동이 끝날 때마다 격자판 위의 빈칸들 중 하나가 무작위로 선택되어 2가 적힌 블록이 생성된다.
- 한 번의 이동에서 이미 합쳐진 블록은 다시 합쳐질 수 없다. 예를 들어, 2가 적힌 블록 4개가 가로로 연속되어 있을 때, 왼쪽으로 한 번 이동하면 8이 적힌 블록이 생기는 대신 4가 적힌 블록 2개가 생긴다.
- 한 번의 이동에서 블록이 합쳐지는 우선순위는 이동 방향과 같다. 예를 들어, 2가 적힌 블록 3개가 가로로 연속되어 있을 때, 왼쪽으로 한 번 이동하면 합쳐진 4가 적힌 블록은 남은 2가 적힌 블록의 왼쪽에 있게 된다.
- 이동 결과 게임판 위에 실제로 움직이는 블록이 하나도 없다면 그 방향으로는 이동할 수 없다.
- 어떤 방향으로도 이동할 수 없는 경우 게임이 종료된다.
예제의 빈 줄은 입출력이 어떤 방식으로 이루어지는지 이해를 돕기 위해 의도적으로 추가된 것이며, 실제 입출력에는 빈 줄이 나타나지 않는다.