import base import math data = base.file_to_string('input/day03.txt') def parseWire(wireStr): return base.lmap(lambda x: (x[0], int(x[1:])), wireStr.split(',')) lines = base.lmap(parseWire, data.splitlines()) def walkWire(wire): dirs = {'U': (0, -1), 'D': (0, 1), 'L': (-1, 0), 'R': (1, 0)} pos = (0, 0) positions = {} steps = 0 for cmd in wire: dir = dirs[cmd[0]] times = cmd[1] for _ in range(times): steps += 1 pos = (pos[0] + dir[0], pos[1] + dir[1]) if pos not in positions: positions[pos] = steps return positions def manhattanFromZero(pos): return abs(pos[0]) + abs(pos[1])
import base import math import operator from computer import Computer inputdata = base.file_to_string('input/day10.txt') asteroids = list() y = 0 for xs in inputdata.splitlines(): x = 0 for point in xs: if point == '#': asteroids.append((x, y)) x += 1 y += 1 def distance(pA, pB): return math.sqrt((pA[0]-pB[0])**2 + (pA[1]-pB[1])**2) def points_on_line(pA, pB, pC): return math.isclose(distance(pA, pB) + distance(pB, pC), distance(pA, pC)) def visible_asteroids(source, asteroids): res = [] for dest in asteroids: if dest == source: continue