예제 #1
0
def get_neighbours_v2(pos, grid: dict):
    neighbours = []
    for direction in directions:
        current_pos = ut.pos_add(pos, direction)
        while in_bounds(current_pos) and grid[current_pos] == '.':
            current_pos = ut.pos_add(current_pos, direction)
        neighbours.append(grid.get(current_pos, '.'))
    return neighbours
예제 #2
0
파일: day_3.py 프로젝트: Erasimos/AoC_2020
def ride(slope):
    pos = (0, 0)
    trees = 0

    while pos[1] < len(forest) - 1:
        pos = ut.pos_add(pos, slope)
        if is_tree(pos):
            trees += 1

    return trees
예제 #3
0
파일: day_24.py 프로젝트: Erasimos/AoC_2020
    def update_pos(self, pos):
        neighbour_positions = [
            ut.pos_add(pos, delta_pos)
            for delta_pos in delta_positions.values()
        ]
        blacks = 0
        for neighbour_pos in neighbour_positions:
            if self.tiles.get(neighbour_pos, "white") == "black":
                blacks += 1
            else:
                self.dead_to_update.append(neighbour_pos)

        if self.tiles.get(pos, "white") == "white":
            if blacks == 2:
                self.new_tiles[pos] = "black"
        elif self.tiles.get(pos, "white") == "black":
            if not (blacks == 0 or blacks > 2):
                self.new_tiles[pos] = "black"
예제 #4
0
def get_neighbours(pos):
    return [ut.pos_add(pos, direction) for direction in directions]
예제 #5
0
파일: day_24.py 프로젝트: Erasimos/AoC_2020
def get_pos(instruction):
    pos = (0, 0)
    for direction in instruction:
        pos = ut.pos_add(pos, delta_positions[direction])
    return pos
예제 #6
0
파일: day_12.py 프로젝트: Erasimos/AoC_2020
 def N(self, units):
     delta_pos = ut.pos_mul(self.delta_directions['N'], units)
     self.way_point_pos = ut.pos_add(self.way_point_pos, delta_pos)
예제 #7
0
파일: day_12.py 프로젝트: Erasimos/AoC_2020
 def F(self, units):
     delta_pos = ut.pos_mul(self.delta_directions[self.facing[0]], units)
     self.current_pos = ut.pos_add(self.current_pos, delta_pos)
예제 #8
0
파일: day_12.py 프로젝트: Erasimos/AoC_2020
 def W(self, units):
     delta_pos = ut.pos_mul(self.delta_directions['W'], units)
     self.current_pos = ut.pos_add(self.current_pos, delta_pos)
예제 #9
0
파일: day_12.py 프로젝트: Erasimos/AoC_2020
 def F(self, units):
     x_delta = self.way_point_pos[0] * units
     y_delta = self.way_point_pos[1] * units
     delta_pos = (x_delta, y_delta)
     self.current_pos = ut.pos_add(self.current_pos, delta_pos)
예제 #10
0
파일: day_17.py 프로젝트: Erasimos/AoC_2020
 def get_neighbours(self, pos):
     return [
         ut.pos_add(pos, delta_pos) for delta_pos in self.delta_positions
     ]