Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
One-liner as multi-line solution in Clear category for Find Sequence by CDG.Axel
from typing import List
def checkio(m: List[List[int]]) -> bool:
# non-one liner for clearness
def bound(x, y):
return m[x][y] if 0 <= x < n and 0 <= y < n else 0
n = len(m)
for i in range(n):
for j in range(n):
for b, c in [(1, 0), (0, 1), (1, -1), (1, 1)]:
if len({bound(i - b * k, j - c * k) for k in range(0, 4)}) == 1:
return True
return False
"""
# short one-liner
def checkio(m: List[List[int]]) -> bool:
return (n := len(m)) and (bound := lambda x, y: m[x][y] if 0 <= x < n and 0 <= y < n else 0) and any(
len({bound(i // n - b * k, i % n - c * k) for k in range(0, 4)}) == 1
for b, c in [(1, 0), (0, 1), (1, -1), (1, 1)] for i in range(n*n))
"""
"""
# previous one-liner
def checkio(m: List[List[int]]) -> bool:
return any(((a == 0 and i > 2) or (a == 2 and i > 2 and j < len(m) - 3) or
(a == 1 and j > 2) or (a == 3 and i > 2 and j > 2)) and
all([m[i][j] == m[i - b * k][j - c * k] for k in range(1, 4)])
for a, b, c in [(0, 1, 0), (1, 0, 1), (2, 1, -1), (3, 1, 1)]
for j in range(len(m)) for i in range(len(m)))
"""
Oct. 31, 2021
Comments: