Exemplo n.º 1
0
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])
Exemplo n.º 2
0
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