from math import isqrt

def T(k): return k*(k+1)//2

def phase2_feasible(k, l, n):
    S2 = T(l) - T(k)
    if (S2 - n) % 2 != 0: return False
    T2p = (S2 - n) // 2
    if T2p < 0: return False
    if T2p == 0: return True       
    a = k + 1
    if T2p < a: return False   
    reachable = {0}
    for i in range(a, l + 1):
        reachable |= {x + i for x in reachable if x + i <= T2p}
    return T2p in reachable

def travel(n):
    n = abs(n)
    k_min = isqrt(2*n)
    l_min = 2 * isqrt(n)
    while T(k_min) < n: k_min += 1
    for l in range(l_min, l_min+10):
        for k in range(k_min, k_min + 10):
            if (T(k) - n) % 2 != 0: continue
            if phase2_feasible(k, l, n):
                print(n, k_min, k, l_min, l)
                return l
    return None
for n in range(1, 50):
    travel(n)

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: