"""DuckieDai Quadratic Factor Finder for TI-84 Plus CE Python."""


def duckiedai_intro(program_name, wait=True):
    title = program_name[:16]
    empty = 16 - len(title)
    left = empty // 2
    right = empty - left

    print("+----------------------+")
    print("|   " + " " * left + title + " " * right + "   |")
    print("|                      |")
    print("|       __             |")
    print("|   ___(o )>  quack!   |")
    print("|   \\ <_. )           |")
    print("|    `---'             |")
    print("|     by DuckieDai     |")
    print("| hiddenwordscanner.com|")
    print("+----------------------+")
    print("Loading...")

    if wait:
        input("Press enter to start ")
        print("\n" * 8)


def clear_screen():
    print("\n" * 8)


def factors(n):
    vals = []
    n = abs(n)

    if n == 0:
        return [0]

    for i in range(1, n + 1):
        if n % i == 0:
            vals.append(i)
            vals.append(-i)

    return vals


def run_solver():
    clear_screen()

    print("QUAD FACTOR")
    print("-----------")
    print("ax^2+bx+c")
    print("")

    a = int(input("a: "))
    b = int(input("b: "))
    c = int(input("c: "))

    if a == 0:
        clear_screen()
        print("NOT QUADRATIC")
        return

    found = False

    # Try (px + q)(rx + s)
    p_vals = factors(a)
    q_vals = factors(c)

    for p in p_vals:
        if p == 0:
            continue

        if a % p != 0:
            continue

        r = a // p

        for q in q_vals:
            if q == 0 and c != 0:
                continue

            if q == 0:
                s = 0
            else:
                if c % q != 0:
                    continue
                s = c // q

            if p * s + q * r == b:
                clear_screen()

                print("FACTORS")
                print("-------")
                print("(" + str(p) + "x"
                      + signed(q) + ")")
                print("(" + str(r) + "x"
                      + signed(s) + ")")

                found = True
                return

    clear_screen()

    print("NO INTEGER")
    print("FACTORING")
    print("")
    print("Use P4QUAD")


def signed(n):
    if n > 0:
        return "+" + str(n)
    elif n < 0:
        return str(n)
    else:
        return ""


duckiedai_intro("Quad Factor")

while True:
    run_solver()

    print("")
    again = input("Again? y/n: ")

    if again.lower() != "y":
        break


clear_screen()
print("DuckieDai says: done!")
