結果
| 問題 |
No.228 ゆきこちゃんの 15 パズル
|
| コンテスト | |
| ユーザー |
FromBooska
|
| 提出日時 | 2023-03-07 20:44:48 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 48 ms / 5,000 ms |
| コード長 | 957 bytes |
| コンパイル時間 | 181 ms |
| コンパイル使用メモリ | 81,920 KB |
| 実行使用メモリ | 54,144 KB |
| 最終ジャッジ日時 | 2024-09-18 02:13:53 |
| 合計ジャッジ時間 | 1,901 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 17 |
ソースコード
# 0の上下左右に、0のところにあるべき駒があるなら動かす、なければNo
# 動かして全盤面正しければYes
# 繰り返す
A = []
for i in range(4):
temp = list(map(int, input().split()))
A.append(temp)
for j in range(4):
if A[i][j] == 0:
zero = (i, j)
B = [[0]*4 for i in range(4)]
num = 1
for i in range(4):
for j in range(4):
if i == 3 and j == 3:
continue
B[i][j] = num
num += 1
from collections import deque
que = deque()
que.append(zero)
d = [[1, 0], [-1, 0], [0, 1], [0, -1]]
while que:
ci, cj = que.popleft()
for di, dj in d:
if 0 <= ci+di < 4 and 0 <= cj+dj < 4:
if A[ci+di][cj+dj] == B[ci][cj]:
A[ci][cj], A[ci+di][cj+dj] = A[ci+di][cj+dj], A[ci][cj]
que.append((ci+di, cj+dj))
break
#print('A', A)
if A == B:
print('Yes')
exit()
print('No')
FromBooska