frommathimportceilplatform=''#try: from sys import platform
#except: pass
defnop(*argv):passshow,wait=nop,nopneg_fill_rect=Falsehas_color=Truetry:# NumWorks, NumWorks + KhiCAS, TI-Nspire CX + KhiCAS
importkandinskyfill_rect=kandinsky.fill_rectscreen_w,screen_h=320,222neg_fill_rect=platform!='nspire'andplatform!='numworks'except:try:# TI
importti_drawtry:# TI-Nspire CX II
ti_draw.use_buffer()show=ti_draw.paint_bufferexcept:# TI-83PCE/84+CE Python
wait=ti_draw.show_drawscreen_w,screen_h=ti_draw.get_screen_dim()try:# check TI-83PCE/84+CE ti_draw 1.0 fill_rect bug
ti_draw.fill_rect(0,0,1,1)deffill_rect(x,y,w,h,c):ti_draw.set_color(c[0],c[1],c[2])ti_draw.fill_rect(x,y,w,h)except:# workaround
deffill_rect(x,y,w,h,c):ti_draw.set_color(c[0],c[1],c[2])ti_draw.fill_rect(x-1,y-1,w+2,h+2)except:try:# Casio Graph 90/35+E II, fx-9750/9860GIII, fx-CG50
importcasioplotcasioplot.set_pixel(0,0,(0,0,255))col=casioplot.get_pixel(0,0)has_color=col[0]!=col[2]screen_w,screen_h=has_colorand(384,192)or(128,64)show=casioplot.show_screendeffill_rect(x,y,w,h,c):fordyinrange(h):fordxinrange(w):casioplot.set_pixel(x+dx,y+dy,c)except:try:# HP Prime
importhpprimescreen_w,screen_h=hpprime.grobw(0),hpprime.grobh(0)hpprime.dimgrob(1,screen_w,screen_h,0)defcol3_2_rgb(c,bits=(8,8,8),bgr=1):returnc[2*bgr]//2**(8-bits[0])+c[1]//2**(8-bits[1])*2**bits[0]+c[2*(not(bgr))]//2**(8-bits[2])*2**(bits[0]+bits[1])deffill_rect(x,y,w,h,c):hpprime.fillrect(1,x,y,w,h,col3_2_rgb(c),col3_2_rgb(c))defshow():hpprime.strblit(0,0,0,screen_w,screen_h,1)defwait():whilehpprime.keyboard():passwhilenot(hpprime.keyboard()):passexcept:passifnotneg_fill_rect:_fill_rect=fill_rectdeffill_rect(x,y,w,h,c):ifw<0:x+=ww=-wifh<0:y+=hh=-h_fill_rect(x,y,w,h,c)defdraw_image(rle,x0,y0,w,pal,zoomx=1,zoomy=1,itransp=-1):ifnothas_color:pal=list(pal)g_min,g_max=255,0forkinrange(len(pal)):c=pal[k]g=0.299*c[0]+0.587*c[1]+0.114*c[2]g_min=min(g_min,g)g_max=max(g_max,g)pal[k]=gforkinrange(len(pal)):pal[k]=pal[k]<(g_min+g_max)/2and(0,0,0)or(255,255,255)i,x=0,0x0,y0=int(x0),int(y0)nvals=len(pal)nbits=0nvals-=1while(nvals):nvals>>=1nbits+=1maskval=(1<<nbits)-1maskcnt=(0xFF>>nbits>>1)<<nbitswhilei<len(rle):v=rle[i]mv=v&maskvalc=(v&maskcnt)>>nbitsif (v&0b10000000ornbits==8):i+=1c|=rle[i]<<(7-nbits+(nbits==8))c=(c+1)whilec:cw=min(c,w-x)ifmv!=itransp:fill_rect(x0+x*zoomx,y0,cw*zoomx,zoomy,pal[mv])c-=cwx=(x+cw)%wy0+=x==0andzoomyi+=1palettes=(((247,176,36),(247,207,73),(231,89,0),(247,131,8),),)images=((b"\b\x05\n?\n\x05\x18\x05\n7\n\x05\x20\x05\n/\n\x05(\x05\n'\n\x050\x05\n\x1f\n\x058\x05\n\x17\n\x05@\x05\n\x0f\n\x05H\x05\n\a\n\x05P\x05\x16\x05X\x05\x0e\x05`\x05\x06\x05d\a\x06\a`\a\x02\x04\x02\aX\a\x02\x0c\x02\aP\a\x02\x04\a\x04\x02\aH\a\x02\x04"b"\x0f\x04\x02\a@\a\x02\x04\x17\x04\x02\a8\a\x02\x04\x1f\x04\x02\a0\a\x02\x04'\x04\x02\a(\a\x02\x04/\x04\x02\a\x20\a\x02\x047\x04\x02\a\x18\a\x02\x04?\x04\x02\a\x10\a\x02\x04G\x04\x02\a\b\a\x02\x04O\x04\x02\a\x00\a\x02\x04W\x04\x02\x0b\x02\x04_\x04"b"\x02\x03\x02\x04g\x04\x0eg\n\x01\n_\n\t\nW\n\x05\x00\x05\nO\n\x05\b\x05\nG\n\x05\x04"),)foryinrange(ceil(screen_h/32)):forxinrange(ceil(screen_w/32)):draw_image(images[0],x*32,y*32,32,palettes[0])show()palettes=(((7,97,182),(55,139,223),(99,176,247),(141,216,247),),)images=((b"\x80\x01!\x14!\x18\x1e\x19\x1e\x19\x06\x17\x1a\x1f\x1a\x1f\x1a\x1f\x1a\x17\x06\x19\x1e\x19\x1e\x18!\x14!\x80\x01"),)forxinrange(ceil(screen_w/16)):draw_image(images[0],x*16,screen_h-16,16,palettes[0])show()palettes=(((239,89,107),(247,207,81),(0,0,0),(182,26,36),(239,97,0),(0,0,0),),)images=((b"\xc0\x011\xc0\x01\x02)\xc0\x01\x03\x02!\xc0\x01\x0b\x02!\xc0\x01\x0b!\xc8\x011\xc0\x011\xb8\x01!\x021\x90\x01\x11\n\x03)\x02\x88\x01\t\n\x13!\x02\x03\x88\x01\n#\x19\x02\x0b\x88\x01+\x00\x19\x0b\x90\x01\x1b\x10!\x98\x01\x0b\x20!\xd0\x01\x02!\xc8\x01"b"\x03\n\x11\xc8\x01\x13\n\t\xc0\x01#\n\xe8\x01\x0b\xb8\x02\tX\x13p\t@+h\x19\x18Kh\x19[Pi#\x18C\x02Y\x02\x0b0K\x02I\x02\x03@S\x029\x02\x03(\xfb\x009\x03\x20\x1b\b3\x18I\x18\x13pI\b\x1b\x18\x03H!\n!\x1b\x18\x0bH\x11\n\x0b\n\x11\x13\x20\x03\x04@\t\n+\n"b"\t\x03\x20\x0b\x04@\nK\n(\x0b\x04@c(\x13\x04\x018[0\x0b\x0c\x01(c0\x13\x0c\t\x83\x010\x1b\x0c\ts@\x13\x141;H\x1b\x14)\x02+P\x1b\x1c!\x02\x1b`#\x1c\x19\x02\x0bp#\x1c\x05\x19\x80\x01+\x14\r!p+\x1c\r!h+\x1c\x15\x02!X+$\x15\x03\n\x11P+$\x1d\x13\n\t83,"b"\x1d#\n(;,%\x00+\x10K,-\x10\xfb\x00,5\x8b\x01,=\xfb\x004Ek<M[DUCT]#dm\xfc\x00\xfd\x00\x01d\x8d\x01\tL\x9d\x01\x04\t,\xb5\x01\x0c\t\x14\xc5\x01"),)forxinrange(ceil(screen_w/64)):draw_image(images[0],x*64,0,32,palettes[0],1,1,5)draw_image(images[0],(x+1)*64,0,32,palettes[0],-1,1,5)show()defdraw_rect_z(x,y,w,h,c,z=1):fordyin(0,h-1):fill_rect(x,y+dy*z,w*z,z,c)fordxin(0,w-1):fill_rect(x+dx*z,y,z,h*z,c)defqr_mark(x,y,s,c,z=1):draw_rect_z(x,y,s,s,c,z)fill_rect(x+2*z,y+2*z,(s-4)*z,(s-4)*z,c)palettes=(((0,0,0),(247,172,107),(133,71,73),(157,114,18),(207,147,55),(247,247,247),),((0,0,0),(36,35,36),(198,0,18),(247,26,55),(157,0,0),(231,97,81),(239,147,90),(247,183,133),(55,114,167),(247,247,247),(72,155,207),(36,71,133),(166,80,0),(239,199,45),(223,131,45),),((0,0,0),(0,0,0),(255,183,45),(255,255,247),(255,216,141),),((0,0,0),(0,0,0),(27,58,157),(157,172,215),(247,251,247),),((0,0,0),(223,41,45),),)images=((b"\x80\x01a\x02\b\x01[\x02\b\x01\x03\x19\x0b\x19\x03\x02\b\x01\x03\x01\x0b\x01\x0b\x01\x0b\x01\x03\x02\b\x01\x03\x01\x0c\x01\x0b\x01\x0c\x01\x03\x02\b\x01\x03\x01\x0c\x01\x0b\x01\x0c\x01\x03\x02\b\x01\x03\x01\x0c\x01\x0b\x01\x0c\x01\x03\x02\b\x01\x03"b"\x01\x0c\x01\x0b\x01\x0c\x01\x03\x02\b\x01\x03\x01\x0c\x01\x0b\x01\x0c\x01\x03\x02\b\x01\x03\x19\x0b\x19\x03\x02\b\x01[\x02\b\x05Y\x02\b\x01\\\x02\b\x01\r\x03\x14\x01$\x02\b\x01\r\x02\x0c\x01\x0c\x01\x14\x02\b\x01\x03\n\x04\x01\x0c\x01\x1c\x02\b"b"\x01\x13\x04\x0b\x04#\x02\bj\b\x01[\x02\b\x01\x03\x19\x0b\x19\x03\x02\b\x01\x03\x01\x0b\x01\x0b\x01\x0b\x01\x03\x02\b\x01\x03\x01\x0c\x01\x0b\x01\x0c\x01\x03\x02\b\x01\x03\x01\x0c\x01\x0b\x01\x0c\x01\x03\x02\b\x01\x03\x01\x0c\x01\x0b\x01\x0c\x01"b"\x03\x02\b\x01\x03\x01\x0c\x01\x0b\x01\x0c\x01\x03\x02\b\x01\x03\x01\x0c\x01\x0b\x01\x0c\x01\x03\x02\b\x01\x03\x01\x0c\x01\x0b\x01\x0c\x01\x03\x02\b\x01\x03\x19\x0b\x19\x03\x02\b\x01[\x02\bj\x80\x01"),(b"\xe0\n1\x90\x01\x11\x02#\x01\xf0\x00\x01\x04\"\x13\x01`\x01\x04\"Q0\x01$\x81\x01\x20\x01\x14\x11E\x11\x20A\x05\x16\x01\x06\x110\x01\x16\x11\x05\x16\x01\x06!\x20\x01\x16!\x056\x17\x01\x10\x01\x05\x06\x05\x01\x05\x06\x01\x15&\x01\x20\x01%\x061\x15!"b"\x20\x11\x15\x16A0\x11\b\x01E\x01@\x01\x04\x02\x01\bAP\x01\x12\x03!\x04\x03\x11\x00\x01\x10\x01\x04\x02\x03\x01&\x01\x04\x03\x11\x06\x01\x00\x01\x04\x02\x01\x05\x06\x17\x06\x01\x04\x02\x01\x05\x01\x00\x01\x14\x01\x15&A\x10\x11\x14\x01%\x01\t\x1a\t"b"\x01\x20!\x0b!\x19\x1a\t\x01\x20\x01+\x18\n\b*\b\x010\x01\x0b\x18\n\b\x0b8\x11\x10\x01\x0c\x01\x0b\x18\x0b\x01\x1b\b\x01\r\x0e\x01\x00\x01\x0c\x01+\x01\x00\x01\x0b\x01\r\x0e\x0c\x01\x00\x01\x0c\x0e!\x20\x01\x1e\x0c\x01\x20\x01\x0c\x1e\x0c\x01\x10"b"\x01\x1c\x01@A\x20\x11\x20"),(b"\x80\x01i\x00\x01j\tj\t\x12\x03\x04\x1a\x04\x03\x12\t\x12\x0b\x04\x12\x04\x03\x12\t\x12\x13\x12\x04\x03\x12\t\x12\x03\x04\x0b\n\x04\x03\x12\t\x12\x03\x0c\x03\x04\x02\x04\x03\x12\t\x12\x03\x04\x02\x04\x03\x0c\x03\x12\t\x12\x03\x04\n\x0b\x04\x03\x12"b"\t\x12\x03\x04\x12\x13\x12\t\x12\x03\x04\x12\x04\x0b\x12\t\x12\x03\x04\x1a\x04\x03\x12\tj\tj\x01"),(b"\x80\x01i\x00\x01j\t\n\x0b,\x0b\n\t\x02\x03T\x02\t\x02\\\x03\t\x03\x14\x03\"\x14\x03\t\x03\x14J\t\x03\x14J\t\x03\x14J\t\x03\x14*\x14\x03\t\x02\x14+\x14\x03\t\x02\x03T\x03\t\n\x03D\x03\x02\t\x1a3\x12\tj\x01"),(b"\x06\a\x16\a\x02\x03\x0e\a\x16\t\x00\x01\x00\x05\b\t\x00\x01\x00\x05\b\a\x00\x03\x02\x03\x00\r\x02\x03\x00\a\x00\r\x00\x01\x00\t\x02\x0b\x00\x01\x00\t\x02\x0b\x00\x01\x00\t\x04\x03\x00\x03\x06\x05\x0e\x01\x04\x03\x12\t\x16\a\x16\x05\x1a\x05\x06"),)forjinrange(-1,2,2):foriinrange(1,3):x=screen_w//2-j*(screen_w*i//6)ifi+j!=3:qr_mark(x-7,screen_h-15,7,[(k+2)%3==i+jand255or0forkinrange(3)],2)show()draw_image(images[2+i+j],x-8,screen_h-64,16,palettes[2+i+j],itransp=0)show()draw_image(images[i+j==3],x-8,screen_h-48,16,palettes[i+j==3],itransp=i+j!=3and-1)show()palettes=(((0,0,0),(0,0,0),(190,232,247),(190,97,0),(231,139,18),(157,199,239),(247,247,247),(247,176,64),(149,54,0),(133,172,207),),)images=((b"Q\x061\x05\xc1\x02\x19\x01\t\x01\x16\x11\x02\x05\x01\t\x01\x19\x01\t\x01\x89\x01\x01\t\x11\x15\x01\x05\x01\x16\x11\x02\x05\x01\x05\x01\x15\x01\x05\x01\x85\x01\x01\x05\x11\x12!\x16\x11\x02\x05!\x12\x01\x05\xa1\x01\x05\x11\x12\x01\b\x01B\x05\x01\b\x01\x12"b"\x01\x05\x01\x88\x01\x01\x05\x11\x16\x01\x18Q\x18\x01\x16\x01\x05\x01\x88\x01\x01\x05\x11\x12\x01\b\x03h\x04\x01\x12\x01\x05\x01\x88\x01\x01\x05\x11\x16\x01\bc\x14\x01\x16\x01\x05\x01h\x03\b\x01\x05\x11\x16\x01\bS$\x01\x16\x01\x05\x01X\x13\b\x01\x05\x11"b"\x12\x01\bC$\x03\x01\x12\x01\x05\x01H#\b\x01\x05\x11\x16\x01\b3$\x13\x01\x16\x01\x05\x018#\x18\x01\x05\x11\x12\x01\x98\x01\x01\x12\x01\x05\x01\x88\x01\x01\x05\x11\x12\xb1\x01\x12\x01\x05\xa1\x01\x05\x11\x12\x01\x19\x05b\x01\x12\x01\x05\x01e\x19\x01\x05"b"\x11\x12\x01\x19\x05b\x01\x12\x01\x05\x01e\x19\x01\x05\x81\x04"),(b"P\xb1\x02\x90\x01\x11\x12\x11\xf4\x00\x01\x12\x11%\x11`\x01\x16\x11\x04\xf7\x00\x01\x16\x01\x15!\x15\x01@\x01\x16\x01\x04\x87\x01\x01\x16\x01\x05\x11(\x11\x05\x010\x01\x16\x01\x04\x87\x01\x01\x16\x01\x05\x01H\x01\x05\x01\x20\x01\x16\x01\x03\x84\x01\x01"b"\x16\x01\x05\x01h\x01\x05\x01\x10\x01\x16\x01\x03\x84\x01\x01\x16\x01\x05\x01h\x01\x05\x01\x10\x01\x16\x01\x03\x84\x01\x01\x16\x01\x05\x01h\x01\x05\x01\x00\x01\x12\x01\b\x83\x01\x01\x12\x01\x05\x01h\x03\b\x01\x05\x11\x16\x01\b\x83\x01\x01\x16\x01\x05"b"\x01X\x13\b\x01\x05\x11\x16\x01\b\x83\x01\x01\x16\x01\x05\x01H#\b\x01\x05\x11\x12\x01\b\x83\x01\x01\x12\x01\x05\x018#\x18\x01\x05\x11\x16\x01\b\x03Q\b\x03\x01\x16\x01\x05\x01(#(\x01\x05\x11\x12\x01\b\x01&\x12\x05\x01\b\x01\x12\x01\x05\x01\x18#8\x01\x05"b"\x11\x12\x01\b\x01\x16\x11\x02\x05\x01\b\x01\x12\x01\x05\x01\b#(\x03\b\x01\x05\x11\x15\x01\b\x01\x061\x05\x01\b\x01\x15\x01\x05\x01\x88\x01\x01\x05\x01"),(b"P\xc1\x02\x80\x01\x11\x12\x01\x03\x84\x01\x01\x12\x11%\x11P\x01\x16\x01\x14\x87\x01\x01\x16\x01\x15!\x15\x01@\x01\x16\x01\x04\x97\x01\x01\x16\x01\x05\x01(\x01\x05\x010\x01\x16\x01\x04\x97\x01\x01\x16\x01\x05\x01H\x01\x05\x01\x20\x01\x16\x01\x03\x94\x01"b"\x01\x16\x01\x05\x01H\x01\x05\x01\x20\x01\x12\x01\x03\x94\x01\x01\x12\x01\x05\x01H\x01\x05\x01\x20\xa1\x02\x05\x01X\x01\x05\x01\x20\x01\x89\x02\x11X\x01\x05\x010\x01\t\xe1\x01\t\x11H\x01\x05\x01@\x01\t\xe1\x01\t\x118\x01\x05\x01P\x01\t\xe1\x01\t\x11("b"\x01\x05\x01P\x91\x02\t\x11\x18\x01\x05\x01@\x01&\x12\x05\xc1\x01\t\x11\b\x01\x05\x01@\x01\x16\x11\x02\x05\xd1\x01\t!\x05\x01@\x01\x061\x05\xe1\x01\t\x11\x05\x01"),)foriinrange(2):draw_image(images[-i],screen_w//2-16,screen_h-32-16*i,32,palettes[0],itransp=0)show()defqr_size(v):return17+4*vqr_ver=3qr_margin=4qr_size_code=qr_size(qr_ver)qr_size_code_margin=qr_size_code+2*qr_margin+4qr_zoom=max(1,min(screen_w//qr_size_code_margin,(screen_h-128)//qr_size_code_margin))qr_size_code_margin-=4qr_width=qr_size_code_margin*qr_zoomx_qr=(screen_w-qr_width)//2y_qr=(screen_h-qr_width)//2forkinrange(1,3):draw_rect_z(x_qr-k*qr_zoom,y_qr-k*qr_zoom,qr_size_code_margin+2*k,qr_size_code_margin+2*k,k>1and(0,0,0)or(255,255,255),qr_zoom)qr_margin*=qr_zoomfill_rect(x_qr,y_qr,qr_width,qr_width,(0,64,64))defqr_alignments(v):s=qr_size(v)positions=[]n=v//7+2first=4positions.append(first)last=s-5-firststep=last-((first+last*(n-2)+(n-1)//2)//(n-1)&-2)second=last-(n-2)*steppositions.extend(range(second,last+1,step))returnpositionsdefqr_frame(v,x,y,c,z=1):s=qr_size(v)l=(0,s-7)fordyinl:fordxinl:ifnotdxornotdy:qr_mark(x+dx*z,y+dy*z,7,c,z)foriinrange(8,s-8,2):fill_rect(x+i*z,y+6*z,z,z,c)fill_rect(x+6*z,y+i*z,z,z,c)l=qr_alignments(v)fordyinl:fordxinl:ifnot(dy<8and(dx<8ordx>s-10)ordx<8anddy>s-10):qr_mark(x+(dx-0)*z,y+(dy-0)*z,5,c,z)qr_frame(qr_ver,x_qr+qr_margin,y_qr+qr_margin,(255,255,255),qr_zoom)palettes=(((0,0,0),(255,255,255),),)images=((b"\x1e\x01\x02\x03,\x05\x02\x012\x014\x014\x01\x00\x056\x01n\x030\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x20\a\x00\a\x04\x01\x1a\a\x02\x03\x02\x01\"\x01\x00\x01\x00\x05\x02\x01\x00\x01\x00\x01\x1c\x01\x00\x03\x0c\x03\x1e\x05\x02\x0b\x04\x01\x1c"b"\x01\n\x01\x00\x05&\x03\x00\x03\x00\x01\x02\x01$\x01\x00\x01\x02\x01\x00\x03\"\x01\x02\x0b\x00\x01\x00\x01\x1c\x03\x00\x01\x00\x01\x02\x03\x00\x01\"\x01\x00\x05\n\x01\x1c\x01\x00\x01\x00\x03\n\x05\x1c\x03\x0e\a\x1c\x01\x02\x03\b\x03$\x05\x0c\x032"b"\x05\x1c\x01\x00\x03\x00\x01\x06\x03\x20\x01\x00\a\x00\x0b\x1e\x03\x00\x01\x00\x01\x04\x03\x00\x01\x1e\x03\x00\x01\x02\x01\x00\a\x02"),)forkinrange(len(images)):draw_image(images[k],x_qr+qr_margin,y_qr+qr_margin,qr_size_code,palettes[k],zoomx=qr_zoom,zoomy=qr_zoom,itransp=0)show()wait()
During your visit to our site, NumWorks needs to install "cookies" or use other technologies to collect data about you in order to:
Ensure the proper functioning of the site (essential cookies); and
Track your browsing to send you personalized communications if you have created a professional account on the site and can be contacted (audience measurement cookies).
With the exception of Cookies essential to the operation of the site, NumWorks leaves you the choice: you can accept Cookies for audience measurement by clicking on the "Accept and continue" button, or refuse these Cookies by clicking on the "Continue without accepting" button or by continuing your browsing. You can update your choice at any time by clicking on the link "Manage my cookies" at the bottom of the page. For more information, please consult our cookies policy.