Untitled

 avatar
unknown
python
3 years ago
1.1 kB
49
Indexable
import sys

def read_input():
    line = sys.stdin.read()[13:]
    x, y = line.split(', ')
    xl, xh = x[2:].split('..')
    yl, yh = y[2:].split('..')

    return int(xl), int(xh), int(yl), int(yh)

def calc_y_steps(y_vel, yl, yh):
    steps = []
    y_pos = 0
    s = 0
    while y_pos >= yl:
        y_pos += y_vel
        s += 1
        y_vel -= 1
        if yl <= y_pos <= yh:
            steps.append(s)

    return steps

def calc_x_with_y(steps, xl, xh):
    x_vels_with_steps = set()
    for step in steps:
        for x_vel in range(0, xh+1):
            x_pos = sum(x_vel - s for s in range(step) if s <= x_vel)
            if xl <= x_pos <= xh:
                x_vels_with_steps.add(x_vel)
    
    return x_vels_with_steps
            
def solve():
    xl, xh, yl, yh = read_input()
    count = 0
    for y_vel in range(-1000, 1000):
        steps = calc_y_steps(y_vel, yl, yh)
        x_vels_with_steps = calc_x_with_y(steps, xl, xh)
        count += len(x_vels_with_steps)
    
    print(count)

solve()
Editor is loading...