| Download
Worksheets related to Applied Discrete Structures
Project: Applied Discrete Structures
Views: 15771Image: ubuntu2004
def b_div_by_3(n):1if n%3==2:2return (n//3)+13else:4return n//356def b_mod_3(n):7if n%3==2:8return -19else:10return n%31112def tern(n):13if n==0:14return [0]15elif abs(n)==1:16return [n]17else:18return [b_mod_3(n)]+tern(b_div_by_3(n))1920def tern_powers(n):21t=tern(n)22l=len(t)23return [[3^(k) for k in range(len(t))],t]2425from sage.plot.polygon import Polygon2627def visual_tern(n):28dat=tern_powers(n)29exp=1/230w=2*abs(n)^exp31pic=Graphics()32nb=033pb=034nbase=[]35pbase=[]36for k in reversed(range(len(dat[0]))):37if dat[1][k]>0:38pbase=pbase+[dat[0][k]]39s=dat[0][k]^exp.n()40pic+=polygon([(w-s,pb),(w+s,pb),(w+s,pb+s),(w-s,pb+s)])41pic+=text(str(dat[0][k]),(w,pb+s/2),color='yellow')42pb+=s43elif dat[1][k]<0:44nbase=nbase+[dat[0][k]]45s=dat[0][k]^exp.n()46pic+=polygon([(-w+s,nb),(-w-s,nb),(-w-s,nb+s),(-w+s,nb+s)])47pic+=text(str(dat[0][k]),(-w,nb+s/2),color='yellow')48nb+=s49if n>0:50s=n^exp51pic+=polygon([(-w+s,nb),(-w-s,nb),(-w-s,nb+s),(-w+s,nb+s)],color='black')52pic+=text(str(n),(-w,nb+s/2),color='red')53else:54s=(-n)^exp55pic+=polygon([(w+s,pb),(w-s,pb),(w-s,pb+s),(w+s,pb+s)],color='black')56pic+=text(str(n),(w,pb+s/2),color='red')57pic+=line([(-2*w,0),(2*w,0)],color='black')58pic+=polygon([(0,0),(w/4,-w/4),(-w/4,-w/4)],color='red')59pic+=text(str(n)+" = sum("+str(pbase)+")-sum("+str(nbase)+")",(0,-(abs(n)^exp)))60pic.show(axes=False)6162