"""DuckieDai Quartic Zero Tester 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("+----------------------+")
    print("Loading...")

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


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


def clean_num(n):
    if abs(n - round(n)) < 0.0000001:
        return int(round(n))
    return round(n, 6)


def number(prompt):
    while True:
        try:
            text = input(prompt)

            if "/" in text:
                parts = text.split("/")

                if len(parts) != 2:
                    raise ValueError

                top = float(parts[0])
                bottom = float(parts[1])

                if bottom == 0:
                    print("Cannot divide by 0")
                    continue

                return top / bottom

            return float(text)

        except ValueError:
            print("Enter a number")
            print("or fraction")


def run_test():
    clear_screen()

    print("ENTER QUARTIC")
    print("ax^4+bx^3+cx^2")
    print("+dx+e")
    print("")

    a = number("x^4: ")
    b = number("x^3: ")
    c = number("x^2: ")
    d = number("x: ")
    e = number("Const: ")

    print("")
    zero = number("Test zero: ")

    first = a
    second = b + first * zero
    third = c + second * zero
    fourth = d + third * zero
    remainder = e + fourth * zero

    if abs(remainder) < 0.0000001:
        remainder = 0

    clear_screen()

    print("ZERO TEST")
    print("---------")
    print("Test:", clean_num(zero))
    print("R:", clean_num(remainder))
    print("")

    if remainder == 0:
        print("TRUE!")
        print("IT IS A ZERO")
    else:
        print("FALSE")
        print("NOT A ZERO")

    input("\nPress enter ")

    if remainder != 0:
        return

    clear_screen()

    print("CUBIC QUOTIENT")
    print("--------------")
    print(clean_num(first), "x^3")
    print(clean_num(second), "x^2")
    print(clean_num(third), "x")
    print(clean_num(fourth))

    print("")
    print("Use these in")
    print("Cubic Zero Tester")


duckiedai_intro("Quartic Zero")

while True:
    run_test()

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

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


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

