"""DuckieDai Rational Symmetry Checker for TI-84 Plus CE Python."""
def duckiedai_intro(program_name,wait=True):
 title=program_name[:16];e=16-len(title);l=e//2;r=e-l
 print("+----------------------+\n|   "+" "*l+title+" "*r+"   |\n|                      |\n|       __             |\n|   ___(o )>  quack!   |\n|   \\ <_. )           |\n|    `---'             |\n|     by DuckieDai     |\n+----------------------+\nLoading...")
 if wait:input("Press enter to start ");print("\n"*8)
def clear_screen():print("\n"*8)
def number(prompt):
 while True:
  try:return float(input(prompt))
  except ValueError:print("Enter a number")
def read_poly(name):
 clear_screen();print(name+"\n");degree=int(number("Degree: "));values=[]
 for power in range(degree,-1,-1):values.append(number("Const: " if power==0 else "x: " if power==1 else "x^"+str(power)+": "))
 return degree,values
def run_test():
 nd,n=read_poly("NUMERATOR");dd,d=read_poly("DENOMINATOR")
 flip=lambda degree,values:[-v if (degree-i)%2 else v for i,v in enumerate(values)]
 nn=flip(nd,n);dn=flip(dd,d);same=lambda a,b:all(abs(x-y)<.0000001 for x,y in zip(a,b));neg=lambda a,b:all(abs(x+y)<.0000001 for x,y in zip(a,b))
 clear_screen();print("SYMMETRY\n--------")
 if (same(nn,n)and same(dn,d))or(neg(nn,n)and neg(dn,d)):print("Y-AXIS")
 elif (neg(nn,n)and same(dn,d))or(same(nn,n)and neg(dn,d)):print("ORIGIN")
 else:print("NEITHER")
duckiedai_intro("Rational Sym")
while True:
 run_test();print("")
 if input("Again? y/n: ").lower()!="y":break
clear_screen();print("DuckieDai says: done!")


