Spaces:
Sleeping
Sleeping
| from typing import List | |
| from .config import config | |
| # Checked | |
| # Function to convert position to coordinate | |
| def position2Coordinate(position: int, size: int) -> List[int]: | |
| return [position // size, position % size] | |
| # Function to convert coordinate to position | |
| def coordinate2Position(x: int, y: int, size: int) -> int: | |
| return x * size + y | |
| # Check if points a and b are on the same line and the distance is less than maxDistance | |
| def isLine(a: int, b: int, size: int) -> bool: | |
| maxDistance = config["inLineDistance"] | |
| [x1, y1] = position2Coordinate(a, size) | |
| [x2, y2] = position2Coordinate(b, size) | |
| return ( | |
| (x1 == x2 and abs(y1 - y2) < maxDistance) or | |
| (y1 == y2 and abs(x1 - x2) < maxDistance) or | |
| (abs(x1 - x2) == abs(y1 - y2) and abs(x1 - x2) < maxDistance) | |
| ) | |
| # Check if all points in the array are on the same line as point p | |
| def isAllInLine(p: int, arr: List[int], size: int) -> bool: | |
| for i in range(len(arr)): | |
| if not isLine(p, arr[i], size): | |
| return False | |
| return True | |
| # Check if any point in the array is on the same line as point p | |
| def hasInLine(p: int, arr: List[int], size: int) -> bool: | |
| for i in range(len(arr)): | |
| if isLine(p, arr[i], size): | |
| return True | |
| return False |