結果

問題 No.223 1マス指定の魔方陣
ユーザー lam6er
提出日時 2025-03-26 15:51:54
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 1,918 bytes
コンパイル時間 169 ms
コンパイル使用メモリ 82,576 KB
実行使用メモリ 54,932 KB
最終ジャッジ日時 2025-03-26 15:52:40
合計ジャッジ時間 4,405 ms
ジャッジサーバーID
(参考情報)
judge2 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 5 WA * 41
権限があれば一括ダウンロードができます

ソースコード

diff #

import sys

def generate_base(N):
    if N == 4:
        # Predefined magic square from the sample output
        return [
            [3, 13, 16, 2],
            [10, 8, 5, 11],
            [6, 12, 9, 7],
            [15, 1, 4, 14]
        ]
    else:
        # Generate for N=8 and 16 using the standard method for doubly even orders
        matrix = [[i * N + j + 1 for j in range(N)] for i in range(N)]
        for i in range(N):
            for j in range(N):
                if (i % 4 == j % 4) or (i % 4 + j % 4 == 3):
                    matrix[i][j] = N * N + 1 - matrix[i][j]
        return matrix

def rotate_90(matrix):
    return [list(row) for row in zip(*matrix[::-1])]

def rotate_180(matrix):
    return rotate_90(rotate_90(matrix))

def rotate_270(matrix):
    return rotate_90(rotate_180(matrix))

def reflect_vertical(matrix):
    return [row[::-1] for row in matrix]

def reflect_horizontal(matrix):
    return matrix[::-1]

def transpose(matrix):
    return [list(row) for row in zip(*matrix)]

def reflect_diag(matrix):
    return transpose(matrix)

def reflect_anti_diag(matrix):
    return rotate_90(reflect_vertical(matrix))

def generate_transformations(matrix):
    transforms = []
    transforms.append(matrix)
    transforms.append(rotate_90(matrix))
    transforms.append(rotate_180(matrix))
    transforms.append(rotate_270(matrix))
    transforms.append(reflect_vertical(matrix))
    transforms.append(reflect_horizontal(matrix))
    transforms.append(reflect_diag(matrix))
    transforms.append(reflect_anti_diag(matrix))
    return transforms

def solve():
    N, X, Y, Z = map(int, sys.stdin.readline().split())
    X -= 1  # Convert to 0-based
    Y -= 1
    base = generate_base(N)
    transforms = generate_transformations(base)
    for t in transforms:
        if t[Y][X] == Z:
            for row in t:
                print(' '.join(map(str, row)))
            return

solve()
0