atcoder.jp
問題
- $N \times N$のグリッド上に、$N2-1$までの長さの紐と、高橋くんを設置してね
- 高橋くんは真ん中に設置してね
成約
- $ 3 \leq N \leq 45 $
- $ N $は奇数
思考
- 構築問題だ
- 高橋くん真ん中なので、ぐるぐる~っと螺旋書いたら良さそう
- 本番中はループで方向とか管理するの面倒だなぁと思ってスプレッドシートで手打ちした…
- 実際に今ループで書いてみたらそんなにだったので、ちゃんと書くべきだったなぁ…
コード
N = int(input())
grid_L = [[-1] * N for _ in range(N)]
num = 1
now_x = 0
now_y = 0
dx = [0,1,0,-1]
dy = [1,0,-1,0]
dir = 0
while True:
grid_L[now_x][now_y] = num
num += 1
if num > N**2:
grid_L[now_x][now_y] = "T"
break
if 0 <= now_x + dx[dir] < N and 0 <= now_y + dy[dir] < N and grid_L[now_x + dx[dir]][now_y + dy[dir]] == -1:
now_x += dx[dir]
now_y += dy[dir]
else:
dir += 1
dir %= 4
now_x += dx[dir]
now_y += dy[dir]
for row in grid_L:
print(*row)