Yukicoder No.240 ナイト散歩
高々$8^3$個程度の点にしか移動しないので全列挙でよい。
なんとなくyield
を植えてみたが特に利点はなかった。
#!/usr/bin/env python3
def move(x, y):
for dx, dy in [(-2,-1),(-2,+1),(-1,-2),(-1,+2),(+1,-2),(+1,+2),(+2,-1),(+2,+1)]:
yield (x + dx, y + dy)
x, y = map(int,input().split())
ps = [(0,0)]
ans = False
for _ in range(3):
qs = []
for p in ps:
qs += list(move(*p))
ps = qs
if (x, y) in ps:
ans = True
print('YES' if ans else 'NO')