結果
| 問題 | 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 |
ソースコード
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()
lam6er