소용돌이 수 예쁘게 출력하기

무한 격자에 반시계 방향 나선으로 채운 숫자들을 구해 지정된 직사각형 영역을 폭을 맞춰 출력합니다.

보통5수학행렬구현시뮬레이션아직 제출이 없습니다시간 제한2초메모리 제한128 MB

문제

크기가 무한한 정사각형 격자가 있다. 격자의 각 칸은 (행, 열) 쌍으로 나타낸다.

이 격자 전체를 양의 정수로 이루어진 소용돌이 모양으로 채운다. 먼저 0행 0열에 1을 쓰고, 0행 1열에 2를 쓴다. 그다음부터는 반시계 방향으로 회전하며 다음 정수를 차례대로 채워 나간다. 채운 결과의 일부는 다음과 같다. 행 번호는 아래로 갈수록 커지고, 열 번호는 오른쪽으로 갈수록 커진다.

    -3 -2 -1  0  1  2  3
    --------------------
-3 |37 36 35 34 33 32 31
-2 |38 17 16 15 14 13 30
-1 |39 18  5  4  3 12 29
 0 |40 19  6  1  2 11 28
 1 |41 20  7  8  9 10 27
 2 |42 21 22 23 24 25 26
 3 |43 44 45 46 47 48 49

네 정수 r1, c1, r2, c2가 주어질 때, (r1, c1)을 왼쪽 위 칸으로 하고 (r2, c2)를 오른쪽 아래 칸으로 하는 직사각형 영역을 다음 규칙에 따라 "예쁘게" 출력하여라.

  1. r1행부터 r2행까지 순서대로 한 행씩 출력한다.
  2. 같은 행에 있는 두 수 사이는 공백 하나로 구분한다.
  3. 모든 행의 길이는 같아야 한다.
  4. 사용하는 공백의 개수는 최소로 한다.
  5. 각 수는 앞에 붙는 공백을 포함하여 모두 같은 폭으로 출력한다.
  6. 어떤 수의 자릿수가 영역에서 가장 긴 수보다 짧으면, 왼쪽에 공백을 채워 폭을 맞춘다.

입력

첫째 줄에 네 정수 r1, c1, r2, c2가 공백으로 구분되어 주어진다.

출력

직사각형 영역을 규칙에 맞게 예쁘게 출력한다. 출력은 r2 − r1 + 1개의 줄로 이루어진다.

제한

  • −5000 ≤ r1, c1, r2, c2 ≤ 5000
  • 0 ≤ r2 − r1 ≤ 49
  • 0 ≤ c2 − c1 ≤ 4