"""DuckieDai Logarithm Solver for TI-84 Plus CE Python."""

from math import log


def intro():
    print("+----------------------+")
    print("|      LOG SOLVER      |")
    print("|                      |")
    print("|       __             |")
    print("|   ___(o )>  quack!   |")
    print("|   \\ <_. )           |")
    print("|    `---'             |")
    print("|     by DuckieDai     |")
    print("| hiddenwordscanner.com|")
    print("+----------------------+")
    print("Loading...")
    input("Press enter ")
    print("\n"*6)


def num(prompt):
    while True:
        try:
            return float(input(prompt))
        except:
            print("Enter a number.")


def base():
    while True:
        b = num("Base b? ")

        if b > 0 and b != 1:
            return b

        print("Base must be")
        print("> 0 and not 1.")


intro()

while True:

    print("LOG SOLVER")
    print("1: Evaluate log")
    print("2: log_b(x)=y")
    print("3: log_b(ax+c)=d")
    print()

    mode = input("Choice? ")

    print("\n"*5)

    # -----------------
    # MODE 1
    # -----------------

    if mode == "1":

        print("Evaluate:")
        print("log_b(x)")
        print()

        b = base()

        while True:
            x = num("x? ")

            if x > 0:
                break

            print("x must be > 0")

        answer = log(x) / log(b)

        print("\n"*4)
        print("RESULT")
        print("------")
        print("log_", b, "(", x, ")")
        print("=", round(answer, 6))


    # -----------------
    # MODE 2
    # -----------------

    elif mode == "2":

        print("Solve:")
        print("log_b(x)=y")
        print()

        b = base()
        y = num("y? ")

        x = b ** y

        print("\n"*4)
        print("RESULT")
        print("------")
        print("x =", round(x, 6))

        print()
        print("Because:")
        print("x = b^y")


    # -----------------
    # MODE 3
    # -----------------

    elif mode == "3":

        print("Solve:")
        print("log_b(ax+c)=d")
        print()

        b = base()
        a = num("a? ")
        c = num("c? ")
        d = num("d? ")

        if a == 0:
            print()
            print("a cannot be 0.")

        else:
            inside = b ** d
            x = (inside - c) / a

            print("\n"*4)
            print("RESULT")
            print("------")
            print("x =", round(x, 6))

            print()
            print("Check:")
            print("ax+c =", round(a*x+c, 6))
            print("b^d =", round(inside, 6))


    else:
        print("Choose 1, 2, or 3.")


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

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

    print("\n"*7)


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