Example #1
0
 def moves(point):
     for r, c in neighbors4(point):
         try:
             if image[r][c] == '#' and all(x >= 0 for x in (r, c)):
                 yield (r, c)
         except IndexError:
             continue
Example #2
0
def get_moves(point):
    for p in neighbors4(point):
        x, y = p
        if x < 0 or y < 0:
            continue
        o = bin(x * x + 3 * x + 2 * x * y + y + y * y + 1352).count('1') % 2
        if not o:
            yield p
Example #3
0
def moves_func(grid, state):
    location, visited = state
    for p in neighbors4(location):
        v = grid[p]
        if v == '#':
            continue
        if v == '.':
            yield (p, visited)
        else:
            yield (p, visited | {v})
Example #4
0
def moves_func(grid, state):
    empty, target = state
    transfers = [(x, y) for x, y in neighbors4(empty) if (x, y) in grid]
    for n in transfers:
        if grid[empty][SIZE] > grid[n][USED]:
            yield (n, empty if n == target else target)
Example #5
0
from common import Input
from my_utils.graphs import neighbors4

DELTAS = set(neighbors4((0, 0)))


def make_maze(txt):
    m = []
    for line in txt:
        m.append(list(line[:-1]))
    return m


def follow_path(maze, pos=None, delta=None):

    if not pos:
        pos = (0, maze[0].index('|'))
    if not delta:
        delta = (1, 0)

    steps = 1
    x, y = pos
    dx, dy = delta
    letters = []
    while maze[x][y] != '+':
        x += dx
        y += dy
        if maze[x][y] == ' ':
            return ''.join(letters), steps
        if maze[x][y] not in '+-|':
            letters.append(maze[x][y])