結果
| 問題 | 
                            No.401 数字の渦巻き
                             | 
                    
| コンテスト | |
| ユーザー | 
                             AreTrash
                         | 
                    
| 提出日時 | 2023-03-24 05:52:21 | 
| 言語 | Python3  (3.13.1 + numpy 2.2.1 + scipy 1.14.1)  | 
                    
| 結果 | 
                             
                                AC
                                 
                             
                            
                         | 
                    
| 実行時間 | 32 ms / 2,000 ms | 
| コード長 | 740 bytes | 
| コンパイル時間 | 79 ms | 
| コンパイル使用メモリ | 12,416 KB | 
| 実行使用メモリ | 10,752 KB | 
| 最終ジャッジ日時 | 2024-09-18 15:52:37 | 
| 合計ジャッジ時間 | 1,852 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge2 / judge4 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 30 | 
ソースコード
n = int(input())  # マス目のサイズ
# マス目を初期化する
grid = [[0 for _ in range(n)] for _ in range(n)]
# 始点を設定する
x, y = 0, 0
# 方向を設定する
directions = [(0, 1), (1, 0), (0, -1), (-1, 0)]
dx, dy = directions[0]
# 数字を入力する
for i in range(n**2):
    grid[x][y] = str(i + 1).zfill(3)
    
    # 次の座標を求める
    nx, ny = x + dx, y + dy
    
    # 次の座標が範囲外かすでに通った場所ならば、直角に曲がる
    if not (0 <= nx < n and 0 <= ny < n) or grid[nx][ny] != 0:
        dx, dy = directions[(directions.index((dx, dy)) + 1) % 4]
        nx, ny = x + dx, y + dy
    
    x, y = nx, ny
# マス目を出力する
for row in grid:
    print(*row)
            
            
            
        
            
AreTrash