From af1eb1c281fc29bf2190d4756dd6ec3267b73a9a Mon Sep 17 00:00:00 2001 From: lolabird Date: Sat, 30 Sep 2023 11:41:49 -0600 Subject: [PATCH] Add labs files for Chapters 7 and 8 --- .../image.png | Bin 0 -> 34703 bytes .../Lab Approximating the Value of.md | 100 ++++++++++++++ .../Chapter-7-Exercises/Python-files/Lab.py | 56 ++++++++ .../Lab Experimenting With the 3n+.md | 125 ++++++++++++++++++ .../image.png | Bin 0 -> 33215 bytes .../Chapter-8-Exercises/Python-files/Lab.py | 87 ++++++++++++ 6 files changed, 368 insertions(+) create mode 100644 thinkcspy/Chapter-7-Exercises/Lab_Approximating_the_Value_of_Pi/Lab Approximating the Value of Pi/image.png create mode 100644 thinkcspy/Chapter-7-Exercises/Lab_Approximating_the_Value_of_Pi/Lab Approximating the Value of.md create mode 100644 thinkcspy/Chapter-7-Exercises/Python-files/Lab.py create mode 100644 thinkcspy/Chapter-8-Exercises/Lab_Experimenting_with_the_3n+1_Sequence/Lab Experimenting With the 3n+.md create mode 100644 thinkcspy/Chapter-8-Exercises/Lab_Experimenting_with_the_3n+1_Sequence/Lab Experimenting With the 3n+1 Sequence/image.png create mode 100644 thinkcspy/Chapter-8-Exercises/Python-files/Lab.py diff --git a/thinkcspy/Chapter-7-Exercises/Lab_Approximating_the_Value_of_Pi/Lab Approximating the Value of Pi/image.png b/thinkcspy/Chapter-7-Exercises/Lab_Approximating_the_Value_of_Pi/Lab Approximating the Value of Pi/image.png new file mode 100644 index 0000000000000000000000000000000000000000..e150809fe2755177de7e2daecd9aac7cff670b0e GIT binary patch literal 34703 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 ay$%|BQfFuS&gKsABPXRKSuAe+_WuEy(m84X literal 0 HcmV?d00001 diff --git a/thinkcspy/Chapter-7-Exercises/Lab_Approximating_the_Value_of_Pi/Lab Approximating the Value of.md b/thinkcspy/Chapter-7-Exercises/Lab_Approximating_the_Value_of_Pi/Lab Approximating the Value of.md new file mode 100644 index 0000000..4dd777a --- /dev/null +++ b/thinkcspy/Chapter-7-Exercises/Lab_Approximating_the_Value_of_Pi/Lab Approximating the Value of.md @@ -0,0 +1,100 @@ +# Lab: Approximating the Value of Pi +In this lab, our task was to simulate throwing darts at a 2x2 board, count how many landed in the circle out of the total amount and then approximate pi based on that.  + +This is the code they started me off with: + +```text-x-python +# Runestone.Academy thinkcspy course +# Chapter 7 +# Lab + +import turtle +import math +import random + +fred = turtle.Turtle() + +wn = turtle.Screen() +wn.setworldcoordinates(-1,-1,1,1) + +fred.up() + +numdarts = 10 +for i in range(numdarts): + randx = random.random() + randy = random.random() + + x = + y = + +wn.exitonclick() +``` + +My additions and changes to the above code: + +```text-x-python +# Runestone.Academy thinkcspy course +# Chapter 7 +# Lab + +import turtle +#import math +import random + + +fred = turtle.Turtle() +clara = turtle.Turtle() + +wn = turtle.Screen() +wn.setworldcoordinates(-1,-1,1,1) +wn.bgcolor("tan") +wn.tracer(100) + +clara.dot() +print(clara.pos()) +clara.up() +clara.goto(0,1) +clara.down() +clara.circle(-1) +print(clara.pos()) +print(clara.distance(0.0,0.0)) + +fred.up() + +numdarts = 100000 +insideCount = 0 + +for i in range(numdarts): + randx = random.random()*2-1 + randy = random.random()*2-1 + + fred.goto(randx,randy) + dist = fred.distance(0.0, 0.0) + + if dist < 1: + color = "red" + insideCount += 1 + place = "in" + else: + color = "blue" + place = "out" + + fred.down() + fred.dot(10,color) + fred.up() + + +mypi = 4 * (insideCount / numdarts) +print(insideCount,"out of", numdarts, "darts made it into the circle.") +print("The value of Pi based on the numbers number of darts that made it into the circle is", mypi, ".") + +wn.exitonclick() +``` + +Result: + +![](Lab%20Approximating%20the%20Value%20of%20Pi/image.png) + +Order really does matter.. My first solution to this lab was mostly fine, except that the dots were being colored wrong. Some dots inside the circle were blue and some outside the circle were red. It was supposed to be the other way around.  + +Initially I had fred go to his position after the if else block, but the problem was, the distance was being measured _before_ he moved. So distance was based on the previous loop's coordinates and coloring the darts based on those rather than the current loop's points. It took me a minute but I finally figured out that I needed to position fred _before_ measuring the distance between fred's current position and the center. \ No newline at end of file diff --git a/thinkcspy/Chapter-7-Exercises/Python-files/Lab.py b/thinkcspy/Chapter-7-Exercises/Python-files/Lab.py new file mode 100644 index 0000000..118ed1a --- /dev/null +++ b/thinkcspy/Chapter-7-Exercises/Python-files/Lab.py @@ -0,0 +1,56 @@ +# Runestone.Academy thinkcspy course +# Chapter 7 +# Lab + +import turtle +#import math +import random + + +fred = turtle.Turtle() +clara = turtle.Turtle() + +wn = turtle.Screen() +wn.setworldcoordinates(-1,-1,1,1) +wn.bgcolor("tan") +wn.tracer(100) + +clara.dot() +print(clara.pos()) +clara.up() +clara.goto(0,1) +clara.down() +clara.circle(-1) +print(clara.pos()) +print(clara.distance(0.0,0.0)) + +fred.up() + +numdarts = 100000 +insideCount = 0 + +for i in range(numdarts): + randx = random.random()*2-1 + randy = random.random()*2-1 + + fred.goto(randx,randy) + dist = fred.distance(0.0, 0.0) + + if dist < 1: + color = "red" + insideCount += 1 + place = "in" + else: + color = "blue" + place = "out" + + fred.down() + fred.dot(10,color) + fred.up() + + +mypi = 4 * (insideCount / numdarts) +print(insideCount,"out of", numdarts, "darts made it into the circle.") +print("The value of Pi based on the numbers number of darts that made it into the circle is", mypi, ".") + +wn.exitonclick() \ No newline at end of file diff --git a/thinkcspy/Chapter-8-Exercises/Lab_Experimenting_with_the_3n+1_Sequence/Lab Experimenting With the 3n+.md b/thinkcspy/Chapter-8-Exercises/Lab_Experimenting_with_the_3n+1_Sequence/Lab Experimenting With the 3n+.md new file mode 100644 index 0000000..913bba1 --- /dev/null +++ b/thinkcspy/Chapter-8-Exercises/Lab_Experimenting_with_the_3n+1_Sequence/Lab Experimenting With the 3n+.md @@ -0,0 +1,125 @@ +# Lab: Experimenting With the 3n+1 Sequence +Instructions +------------ + +In this lab my job was to take the initial code, graph the iterations and find the max number of iterations from one of the 50 sequence starts.  + +Initial Code +------------ + +```text-x-python +# Runestone.Academy thinkcspy course +# Chapter 8 +# Lab + +def seq3np1(n): + """ Print the 3n+1 sequence from n, terminating when it reaches 1.""" + + while n != 1: + print(n) + if n % 2 == 0: # n is even + n = n // 2 + else: # n is odd + n = n * 3 + 1 + print(n) # the last print is 1 +``` + +My Code +------- + +```text-x-python +# Runestone.Academy thinkcspy course +# Chapter 8 +# Lab + +import turtle + +border = 10 + +def writeData(tt, itr, height): + tt.goto(0-border, 0-border) + tt.up() + + if height >= 100: + tt.left(90) + tt.forward(height+20) + tt.right(90) + tt.forward(itr*39) + tt.write(str(height), move=False, align='center', font=('Times New Roman', 30, 'normal')) + tt.forward(70) + tt.write(str(itr), move=False, align='center', font=('Times New Roman', 30, 'normal')) + else: # this is here so the last bar actually fills + tt.left(90) + tt.forward(height) + tt.right(90) + tt.forward(itr*40) + tt.right(90) + tt.forward(height) + tt.left(90) + +def drawBar(t, height): + """ Get turtle t to draw one bar, of height. """ + t.begin_fill() # start filling this shape + t.left(90) + t.forward(height) + t.right(90) + t.forward(40) + t.right(90) + t.forward(height) + t.left(90) + t.end_fill() # stop filling this shape + + +def seq3np1(n): + """ Print the 3n+1 sequence from n, terminating when it reaches 1.""" + count = 1 + + while n != 1: + count += 1 + + #print(n) + if n % 2 == 0: # n is even + n = n // 2 + else: # n is odd + n = n * 3 + 1 + #print(n) # the last print is 1 + #print(count) + return count + + +wn = turtle.Screen() # Set up the window and its attributes +wn.setworldcoordinates(0-border, 0-border, 40*50+border, 150) +wn.bgcolor("lightblue") +wn.tracer(100) + +tess = turtle.Turtle() # create tess and set some attributes +tess.color("purple") +tess.fillcolor("magenta") +tess.pensize(3) + +alex = turtle.Turtle() +alex.color("purple") + +maxSoFar = 0 + +for i in range(50): + start = i + 1 + result = seq3np1(start) + + #print("Number of iterations to get to '1' from", start, ":", result) + + drawBar(tess, result) + writeData(alex, start, result) + + if result > maxSoFar: + maxSoFar = result + +print("The max number of iterations was", maxSoFar, "from sequence start", start) +``` + +Result +------ + +![](Lab%20Experimenting%20With%20the%203n%2B1%20Sequence/image.png) + +The numbers are not very readable, but it gets the job done. \ No newline at end of file diff --git a/thinkcspy/Chapter-8-Exercises/Lab_Experimenting_with_the_3n+1_Sequence/Lab Experimenting With the 3n+1 Sequence/image.png b/thinkcspy/Chapter-8-Exercises/Lab_Experimenting_with_the_3n+1_Sequence/Lab Experimenting With the 3n+1 Sequence/image.png new file mode 100644 index 0000000000000000000000000000000000000000..6e7252d2c4323bc08f5662cf21750fbda43a7fab GIT binary patch literal 33215 zcmeFZbySs6_diH?Nh;kbAW9=}0qO1z0RidmxPWwbcQ;6PNhnBnBMk!54Zr6a@B3YA z*8DRwYhtbWOP+hrbIv}y_h;{Gh=QCrItn2Q6ciM?q{KTVC@7dQC@AP#BpBe6oc*5& zz(24K!jdXTNJxw8@@r5~+rI{%VfpJ*=D}g!Q}X8 zg<09#LLfOkg~ws!YWV2!YBzvNZCYSkIyS{tycc{toZw3o6=8HZ%Gaodca!)n2cvh`W6v@dy2*3V zbtL}~1&u_Fm95|lgMdOr?`m+A2yDm4kfRXn_8gny&mLG{P&!lqx_j>{Y9ERA^?=KnTZ(xwPUvC8K{3QxYf*iOgGzRB? zws`>!N1S5!j^)23fx2R#5Yzs>Fc=OnW0;$g;NKb8NaSl0V1LcNTIcmwV@U|Njuizj0h^x68-v*FS5C(y;a4dY;U^QA=+& zaBNOX@?*{tust}_Hk8jfh(iC0w5wn6m3X;5%IIEnR#wa9u2%cbnsA_8+S|DgmjNqM z?{4BK>Ct(oRrZ{8JxnaieI*uWK%M)Z*<-fzaS&CXox0<-5+j9kAQ&3%_L(gl*V0`a zx(fXJFY1q1+IVF?C%beRHk>uXP4%!I_02Iw^zeJklN7ggQX*N`1Uz~Dn0bpdDjy; zGPg9wL0;4IRt2-Ooo=4Zd_2JvUFWKc%x0COJo#k$KrP*A*9Ehk00-9Gygz9~!&Pc; zTX6Y$-@22gi=AWG!tYTvRjTGXw7VDOlhaq?o>o-;Z;5m^t!GsFRok1WCM@j+Lc0Nr z-t{@-{QKoh>Yj&lur6(R2$ZfuU9Vvtkhrl42an#<>9@Fc7l-;O9Hudmd3d+p9{rFW zVAgZq9~VJ=r)WKQ-A^@IDVTrf4@$T1zLMXV^+1#*oj4yqxDX#s<9K_&(s|^1mi>i5 zmiHq4ERs}>{?z`gfk3^|`wA3{BNf?l-8o|BaXMq_e2d#*IRh_v8~U`)r{=RheG`r! znC|w_mvFFx8b$mj+Y?m(*=t%b^PxN?^6mCQmdxWd*OP0b?)vqQjj9gs%Rs@$n}^sc zy{GAKRuOn{kw{e@7DL%7XZ=mHf}X2y_^1RyDB|hv^C<%nFCFf#+B;4|)SYQcKd%3* zT4r}y%vzz>bv{a`3e{OEOc1=eGSP)y;r}uBhK1YCGN6mWSA?vy$^D|=MDuye=Aynn zcbD$Z?WFrFOu0OmPcG$c7bi~bf*pp0K~>2vCzu3e>yG%Ymv8TCD@idr3~oON>bR?v zNZ-yx5e%kJoSyJEb`q9ETkMV(=~vrY28iIoa9CvOJ?zWjDHgvyx;;ks*{DkE*R{P( z_l1``ZsGI3>cI$cK;t#PxuKJ*ut(CV-tOIbx;br7yA8)>B+#?Fm^kSh*;{?=RQ@0* zaQ;mfv!l}4w8^BR$-0j^C@(vEJ)!gb-1e2lw~)AzR_~Pa5!1|?Jf?4mNp6CA7jyfp z)6pSS$(|$dMZ@Ke^lu4@bsJAlIQY&9TMV|jd<0C-m@(U?C!A=I5{f+UQWb5M?N@i? z`UBoUMM4jxdtIv2;-18I-CeeI?9X%53$=%3u%_PB+mPuuc`X~s*Xh)i7qyPE*?q+v zDPOtRvv~46$S(_YBKywQgSg^h-mA^WC(+`)QFyq+LaNj4zzZFu;5OXYQEL`o)Wv|& zzFkyX0;BYu$fxP)!98WNIr{ns8!C$quZs*@)!@o9S=;%pk8^{aNYdvjy$7kiU;Ax7 zeL@b2dL6F9irE*xE-yGlTxy*C2mFz&aiSV_?Q@vX1+XH6Ko@j>r-A6C;{(4=tys znH&hTxw#W@QaTw=(rt9?F3J*YWqnj8Ul>72`0%T%f$s6w-1yU71&_9M>+!KeWwUwz z*pBnWu}g>L#O~Vi)#EX=^&CTzuFuMe{?g^Xz(eZo!NEe{NT>07qUmvqlZbLKf$QZ9 zsvV~&zK7B(+;-0avelBL(EhBOhoO;=ZHLD;Tt`0Zqg_TsC&k7H{I zt#z9#MPjrMFqsCj>X&XF9enP-MskMiOy{B&oQ()LoM(2f{z__J|CU#E^Qc*5-QhKD z9TG>h+H%Y~F+Dpvf1V_G)lz_c|1)OQr$3~YRaIcchOOtL7q}-PdtR!_Sr59E^yxUys>V*Bjc_ch%d%_gVKH zUpT1xGo@h?WAKP&^*2T1RvO%v>|oyh*iPH4&1B7R|JEEA7=Fs7cP(r`{_r^y2o$2eSvSx@|l{UOe6W5Q-X=A(OW&@`RiLoM6! zQ|?Y-xI6cm@Q<(}UDv&(wNel7M>isM&cg`{R_@NDQB3bjmkT96HhtbUn7fCv_z~W# z^!3G~r;Rv1|9}mAADhg%Yl>C|N;;gtOxN|<{^R>a5=^hXvv6I{d9Ea`RnOxfblzie zO?pA+zSH?2^~d!_KCQm}4c6w<{n|9^>nmFQ?s!xd-8J{U6@8zvY!x!68xE#K(#JES zMJJDgIjd5agnixVbkA#rGw_Wm>-@p{dWUq?qt^eApGZM165FT`8-#Fe(d(83Sm5sJKh`s%A{{I=O$6l(^0c@pd; zphScS#%@+Y&oa(z+ioxYqa%7I)*YS>+ohO1qE)YrFq07PDl(l~XVa~^5Pw%)F3}jG zOESwO-i5XbM2uT%o1j@`1$x_cUDn52t|%{1XDIGdp-N;Rn zeqHg}q3Y=I_yhE;lhnsMx~%E(W8{LohK7Q=a`u>jA7v$0C@yu4@cS6-QY0h-@;P)` zm%m2jXGpVGnYtgyeDsug%q?GJWfz8y9$z6X>Ujj@qSp`G`$d`9ZPp=YGLv~JkTLwY z#GK_IWwWyM6-cf$W+eLZY?6+^TJNrK!P$Oj`%1u)jLS%dno;$>!$8qsa)?#AF6UAC zp?GU^#)YhDYlh%z0t&w5<7i}mZ0YH{P+l5I1?2*xgWJ*R5#)lBZ3A&hP0jqrZcvlq zQaR5C0&du&RaJ$%6zhV5^jvl4$eZc~W(=)ghfg<;90RJs1+a)=PIpAO?WmF%a6Qu- zJKvwPWrNI?&-eYS0H?w`ElHbl6|P~s1#jdm@bJxjxw7Ql%_~;w+2oQq*t8i-^E~oQ z!sBJxiA@Ia;P{Bg>7loXaq7pV_(4&m8_SRLq%8*Vkr`Runb$eX}^NlC_jG)Xl9*eN+)Wp~btqIY!F`-%ZQfFk8{+G#(6*=(k-Ytv+rKbov-7 zPcx{qW=I^HuWUI6iU_?Q)D&zxi6W494ipwDnk-Nzp%&@Nhtb?$UxQhx#E{!pC?Y%k zqO77pkHNc@Cdf^(P(;DYy#lLqyl1tSiM3_xJ82VCje=!Zm^;^&t8jt%|$uqOD zjF)!s2_v>%S1z^&#~wB$9gndw`uB&>4;~!+=roA_87^;(HAC(VW_=je6{v+3sCmn7 zpUw|xKR5ocvWR-Dj`b2?73VVB>+toK-J^?fbUpTd;2prtsc!08TpFK--LyJ86+Pbw zo@{l?*1uM1z{MlLm(jf)%F24dFX8CmF+CPa=tl|ik+s^9udaOA_YL_hi6xzTu2(Wv zL+$&q925CONeS=BYuw#^&q6HmU>%9{y0fhyQi1jB8&h59M=0y3e#}fS>+fnAt=Pl_ z+@8f1<^~tw9=pe@SsuE`DsJ}b(!H^q=%WDKx%(ddEI#jXHvNak)6=yM^eXjtr z;o)0;dd_e5t+p8~Jx*f^oPKoZ8It2djkKdUIr<@7lh<$%8nd|QH4-XJFgv`b*FJpj z(qCh$b9SK2SH+q%Rac+9v9Om_er2Snh`e*SOXx<8 z=(Qh7e9Xe=m?YnHTBMv;w3WePC;i?}nzfH}y1lfdCckANRlsNHm2O^$)Ut?x0#%clPe?F4FPS zZluT4WL3A{kL1b3EdJeI!N-e?RPc|?`XAdP@+`a*`n+Bzds_!ttFO0zz8SF5FL(@= zx+!qxK{7m7=k*Hb!SM_hJ=^AohaWGNq^EzmcCSYUFBM|JDDB=D<4%xttGK(-Tm~0F z6M*6skgr%2kF~JKw=gSsH#E>tBbGR5e;j*OAgM_*c@M<~m>2X>_nOAdm zgkhFl<7(bQ-s_TZho01Zc%G?}yY`6SX=Ul+xr7dKF;QEN>%yR>$W}y|z=@9Qx1|{C zf%S@u(8qxM>&ps{3$g>fEfN|d{Fkl!xpC$;isEI)yM5|1f_Doa@W>uFR+5V8+VxZV zbtR;-+eH`|8TZkC1pLVL19^Dx>TA7R$sW0zefBE|b-GggA_-Psr|>Z_xWiarmXqsZbI%XM%rFJy%u^wnoR$`h(xlGy-d3NdZ<(7b zQd0wQo@ullr3u$uLZPy|rO){)^W6?sM(7lFXY#4XVVR^h)7z7oLE4likHGlF9#-nw=+jc`zJi>$H|dXqBF6l7=in?TpY(XF>fR5u z+}%4>ut)fgO46;U_t{O|4<=I|tB+fEQ36jraq>QF?t1~XQWM2#*k%^!>S!;rz2$gI zi-w;sxR4&%)keN7dg$|gQ-oHwTHmhvRYA6(J_UP$qK`a3ca97-|T2+v3E`2;=$$2o!MJCKO5_( z^_IkL@ew=A#VOnCunZaplZ08aw=yKeyachY9J@u;Sqa73d8L{jKvr>49q%2@v&23d z?e>(hJikBje{!$s97ovL>?TR$Y%R)sRUy+(JXAy~sCwi1pr^Jr$lX9E83Z`-#H+&< z0K7OfU zO_PMRJlB&NXc%=?C*k+0TbPSHo!`;D$cT%|W@2n}m=qhW3y4WQt@IsWXA} z@}+XO`qn0eqchFBlg&c?RhbQh-r%bKUg)?P=0{}7+uNlo-Osk%0cM6L!OHlu$kw-p ztbOLbBxIH^(|u0Q%@HHOWM>H*K}Ywys4X_(1aRfl(YIXQ3-w9bGXjsUea+I|_ir$r zknYR{Jxo+za|!$yAy{eIj_@MLc$hrq?WYZgds_)3>TZ|~KImaU^JS zdR2S$&p$c!zUCQr==M*0tT(stTRo9lUJnf2_$IKTRW#U>$X_Wce#j@0C+x_QA0!~~ z>xM39RR6NpEwWlhu-sx*`=(`OS895e?It#hIZaX(J0pPQu~c6!X0x|y$!YZ+bw_ zI9UaE7Ruz!_KR0rTpTO{idO>SuR1TT^F&Q`Z+n~BK|&vwYq#g42zQzD2qwSDT9A6R zInKvs-Is%K;}Z{$m(GUO@P-<H7 z*jV4>TecUzlHEU6Hc8TU!9gRs1zb>Aqjz+OyYlODu!}%2x*|JBW(l8#m$~n6hgd07fmnp|fxQ z0>nB1tT`C)dIb8<{?*M;Fc@k2P{jg&){_$e>+N&G9sUBwmH=SfyG;O9iuq^#U;qG< z>dheEMyd~R-yh2FMV2N?$6r0_preU};xE~7#h=shev z=5Xj)uXv=PbucYHK7qQLTJzEo+?@f=KX4l>8v^6E9UjV{Aik;Ri@})Wdwt^jpZ)+8 zTnjva^+W%6{a`Sl7~!udasCmCjSS%D`Tkb_!O!0T__^5g803FPgur3hQcrYq{(Ipy zC7?P~;e&AhdKvEkRm9#iAo};hi)Vl#JQFkiXBr?%0Mid~tp3LV-*AX-BT>Ef{nr(U z0cd*1JBRSsmOx^_k;b2%rTkTH@@NV2@gG*J?LU^@1sVQ6M+D`5?@=}IB>@UNv^HvX zQ18t5sBiytn<~0Eh)ThU8nWA zThOxNRr=kb=o$px4PWAQX3(~^v2am^_2Bgn_Y(BlSj!Taz@A#Z`PxDD7^FPKOjNki z`hJ4{yvS%-=rB{_4=XkR#=Mf#o@=CD7D9OT&OfT_lJ;q)|1#>*LNPUKQI4O|mqd0! z_V4Om6kxUGhh*|*ZVwFIMo0sxN@My(u-1IcFFq% zfwb6ojw#gxMHD=|3s#qtEd!YpwTsuVIbQnGT_ z5!vLnB}Z98iw7E_D5;b&JAFHfDaLtt+1QE_Lpsmkn+_%OeLP#F%#NMm`c$psTQeK! zap!rW1+R-RDG8IAhhMr`?S_ya-p z-Eq$&DrJy23fvx#MveoVn5_*e`gpL(AfIT>FpbZP@S!Z1V8amU(-Qr}4@HqI$!z4+ z6)CLMcL_55#F-(gie<^9R2MHc1`DOE-h8#nXxLpJ`#}y5gEiO$UKT8TgAt0RjE6Kf zyM7(It9b6>GP~*)LlCwc%SD_-QQ&aiIY>VqyAf5)ZDTlu$_L+=yzj=`An34WwQC^0 z9^)^p+iU2qs;Ol5MTWh=BfGLsMu7wg)TIE^RA5-VU2XJU_)hDihM3EDk_7k+9~Y!H zag~-1Tn{tiebKUa1Mb{Y)&3pagf8cH6~Sb6Ttuuk=@6ab}Q zP$9(1q_A)D8OYB ziQy+p>o*LL6wtXTtLA)L?53{iAo4*&nR_te^^YH9(%z=W_jDGpRp;%bVARSeWwPi;^y)kYDM>(~@7j=>NFDQ(ye%R6_cm zrCp)*nB$9_R8HgmVh7pN&f2lyuE5I6D4SjMw!?CXt0h{tSL>G}I}t{R`DsJWvFj)s_sirh zH>wyS?r%5ZbMwKG8(0Ajc*a^kZZ?t@I_!9DSCwjK%Hu0krliDXr9&)?^*;%TEd!ymkSa2(}7}7YHl%3%ya-k&?|M1`SLnPL7EV!9h@blkPKr#9tP1R%9jD+=(&sRO0`+p z-(Q3MLreL7H8`M&=MK@P*u4sgoV8YNGLY3~Z+^eE-LI;>d;Gnu(JI*y^Wmeub{Riq zOZd{rP*&K{WP544vwS{a{M&e4Q`_5Cd!}q$7+LV)jpg2n+4ECj|5KD=~^dL z!v5j5nuzdC!E0t}igkZ3_>%=P%xB9fR>$i0JMRb^<#vU+t00-H*Y@-Dn5RIS9gTAA z%G6f~CDd?E1!NNuKbML5z(!nC*6jo%#(QzD=9QQ7<%<&6MZlQA{#w+oQR8;Lx}W_{ zd3iIlPnDC!RXvJidD(1xxQ?}SXf4nV=fUe@PDr=kFlIoe$M*X0nJV%~^aGCRV6ri# zeUh)57tybX6dKgXVC{u03l6OVh`DRohM7$xW(E}AySK-GhVYWwNod{RXEAlxl zXDl@i#FD~D&3Ut_U6L4MlF2lj!cZ`QIH0cgO|(M3?r>9J5t}Kq&vN{6GJkA=hnSe+pikKaxEt!c1_B~MXGJM)o_ zl6Do?-(lT>LAk=$liYwDx~&F%>N&ksI+WLk{R>;_`712GukU{5xM)mG~GWeKXF7;_Tp`;dTiJch%IX+ zQv!(P!%RSQYqK)-j~$X)GAiSDk~{i#$no{vumWbg>Z;j_5=TU-B227ao(1MR6u`V7 znG&t}%SF5dYpY$aD@Sp(bGX8_@du$Lrt08~cwy6NE~mj@8J{WEkCP74QahB4=3V0l zlB9jCC2<3$>v)w{ErBJIofFchfnO-;BGe0tym!yprIOr)wNzLMF~`y9@pfd8KllKGGVjgWi)s6YX--YWh?D;1qPS4xH2!uahs=V z&^3t^QYH(dcN0V1g)efVR-h3t__?K)=IPP+bCtMj&(z|Vo)wxJ?nP}Xlf9YoxLA@8 z3EwOb{}gMk(Ec+T0~+Z$Fz6DbsEx3ddrbO38hJ#Dw7)K~J>b5Sk2|coIu&rd$5d4X zuQNRH+PqQ7(YUx}*SboZk$pT-p?r~fDhp-edrS`%qL@SWm~Rn{&vNdM1nkXuenWQm zw3ibf65he3kc&g6P0$zswTS-iCoBrL3FT!}Iq!q?{AdVCE>wS^3%>X`Un3As&GvYYm&hJsLK|ox8X-z@@Ze>4j}}5ET)+ z|62+JC_qjKW^lMd;-E|EVK+vq4HQ1u7;2l6b2bK1OX%I!c|x18BRTZ_+C6>~6>H28 z8ck$wL-D=RlU!-9;p7F0qJU{*#&9a7%!N3d)m<_)CUr4F^mxDa!Qd8{5WE&{vy~V#(cMlv4)jLEXo5EMIDLp zK;A0JSL1J9pO0CZx=0&Svx?GvU7|YhQH+6wBab!$$mT&9*i*vFE@Axm0p}3faaRB3 z;k|F=r7iV|KlhC!!xVI0F5U`3TaS}Kfv|Gjm7aBA|3{O(L@7%n(f;paZM1&EZyNVI zfdrd3n|h%)r`X^ARiMZ!sy4ZS7BrJ*bt*m?{ILkQpVJu;zoxZRUs2Zuj&fDL+>W&U z%tT&l{LZ53EV%m7bKfg|RwIpJWtT<4F>yN6XJQv+do4M92HbzIgeD|nhl5DGZym!% zJRZ}AD-;S04J}{|qQM{lrN#T`KoHw=7;{X-gT3z(nBud{c=d<^A!J`}fk2j_fiCN) z7H)()J}9{iE4qiFC_s9yY6eY!ST#~mn4yueg-`OeOu#w*!64YlJ0I|~^LRkDqN~5T zLI!=Y_x*MMT>oH2Vx>0Yv`(-s7mCGeu)bymL_ zp8^OEz+e|mbFNrOzTXJk?H?dZp+`Ois*i9;rjAqreq9Zp+jv>OxEV=afijblxrF%x z4!GNv{G@l7Xt*_=6}&pXG^W= z4M`UOFRPQn(?i1`GPt%W(Vr35())ZAXfrvI#>cfUwB8B(K(?! z$wWOqhJck)n{|^;jS*LTuCF-n8%d#gKD!fthnes&bix7{cZoZ8^RAH&!Q6`77tSBC zH4u;1ZAc&T9&W*UuO3jZm|+*bjG|U1OW-}!km4sUEN4VP2TCz!FgVYK>gRiCXn;B( z2HbE?iDr$mdsP_iNPiz#DltzN+QGxJO@34oh9{4H2I%aI_wQ&^2o%Ul9WNeS&6kK% zTeikzq`Gx3Dvo?FWJj%B(3!@+54$tEQ-Kpu?=(eUkF^qt`rP*e9#u}M@xu$Mc{A=xN!jb;S=5AD`GJVHCd zj4=*z+MY&YAH6`&eGP2&T^Z6zac zgnVr3ErP)pYF-vz7MQYq-7Ik>N^XR2pCJ$IcAj4yeV%k_Q`j69Rn09MP#k{7Grw}& zF>`;OWVe&>v1Beb9ha5>ub&6V#Q&D#+NAKsLA{!~#mwM^GsV86o3W#G@_^?3G*iz4 zjr9|&3VGY?kDN}O%^suNxd_C%(yJfpS(ZtNP-OimnV4A*E#2L<_6* zr15Vql|c`BKeck0Im>L@N7=|>`H9&B{hQI;yW{uAx+A^uSCE3rgv8hh^Nw$m2Mnj* z&ztIi%uJw#5G!Iw~RLA($x4G;YcNFfQvrX6fyXxV$|ms!FL#(rc}=My!KNFf7`l z?H;u*@oG_<ZGmvFQvfxs zJ{t_{H=r=cX9OS@Rkoj5rqDd(Cz&J2-MF_N_N($OaY|<9B210rjoGyGpOACMnuC$~ zGYQ`WQq6LNINH49D_AmOG+S@igWu)PR;^lOnElXy1E|PLq_spTe1(_~VsMVuC12!H zOSt%(FYn!f?XFamC%mQ-Gqf|6+z^+QLf+y_TcmE96tcFbI&%~_DCA7xPc4Q`Tx6=s z*&;#4HccQdIWh6GCJ$Aa?JND7ukN)0=9p7*QZZ(>xg#a@^Mt$sCcnbvP9(47!`WO) zHMVmUbCJh(H9vGmSkJ-<&%r_C0KV&$-G*k_XDWw{4THCinYpVq)~pO5w>}#Qem_wm^%~gkZ3DAbS3*!Xq)#*qCs;+jpbU zN^e1$D}N2ZA6@Kt*rGVT31~8-MkH(0lf+0>$dKo^w~!(!Sage$dg(Y(od!oYn`R@> zO#x7Ylq^c#tRG}jg8uCz9(3w#`U5=*x>WGZk&4G!+`;--T6_t%3vK>T_gVHs!+wgk8@g979c zajAn$$}sL{NkM7%k;&T3G4sNAdOdo~2_{ORaBt$p2DD5{S#G`s8J3R}shm!yOgf#F zd7!Zz<0dHV;55tNFDbqMO#TdJ1`C84#IZ1LUY~9HqJhOb++6jQ!&=k8$WbL}!R(_w z`a@3q$AhYD(raoTtT%wt`{2?zb7(mX?MJkIm#vtZ-k{_s)^%_z!5n#abh_LA%1lKb zVGpYs4CT)Kax56X+|Qa!WRqv~C`s6eJGQl;r{Fb^Jt1ny1T4Sc*<$(`oS8%!c?9;`$Z$Xj)ds%t!Zfbju>hy6$Jt$(K zM(8AGp?Ca(XCu4yZM#VSiadFlzu5BEWvVygu-Wl|Gl+t+E?F}ltc8-TUB2wsyS3@w zEM4oEiNw5Wtg4XxEVKVbU-FThb0r^Fa;8SG)d|RgCd>8rEsb!eOOyv))PxUDgORz- zD9@TM&NdB_#kN1^qEcC zX;`}helzIwp3$6fL!fm^QaJUm$G*G@w)-#G?NE zH4HSdDsLC3^h(|9K#!;W?Bhh+)Swhyfq2Yb3U0{`1D+Nl-5!1|Hrze{!xqCl@AW+( zAB7R|ejD}p4wcP%`tz>78OfRNYNo7@3kG8-bC$+>NTE23UdMIQx@4k&wGzs9sSUrK z*sL<1q>1&?@-70x1=*$*8Y23$L;g{Q3hlHx&Ta|44aPiUKu$`K+{ds-jt8GUnG^hI zCcj_&3oR6ma$FsNv+C}43%{V5DIof|vJ?0?>d7r{M6~+y{AzH0e3fd(R9!T$SXj#_ zn=cGtQy-s(XQJH`rYLgHi7l@-tEW0+R^QX4R8ZLaL%}IM14?3*y6UPFctfBpsk}{e zm1Cq*2Vf6oCnOHR)@8*6`ZWosZ0l2uIxuPsqta;h_?%={>?ooKQ0fAv()B*V`5kjC zR&YwZACIs2&NnK_P2)P1Yfx9tI>sbtDZb&}5lq$wJO+tleioRp!^ePjvBA=Jhz^rq;tz_i6u_u<()Viq$Eb z<-+!paW})Kv=AB#E$BC4FiAvJ2L6PYrxr zxr&*Cg~6)M1sAH%hbFwsAkT&n)J@C|B!!RP(bp59_?Mt-9#N6ZF~v17B>cqlE2+LI z6s|;mQXVgR6ZZoi8c9P1ik}$YN<)Q-604O^2LKO#s;;^ge7tCgyt2rEof_cP(qBH* zb$R7DhdOi)_X!5^`>vGFCm1?@V(Aomk{n}#Md{;sZWN#sR}FO1V7V|tXKZ`{ED@qe zRk!_T0B*z~(9y?{pUnGo^>7_w>wny3GjrLB%lRG1wC7n%dOx6$jFVz$RmjS`5(xB* zJyKP-G!HZv>G}rAFP2)0wSQ9M)Wj)Ot9yloGZrLSIHq7H8ruXvl3GW+9Su?6hr!j3 z&iRRo95Av=Ot((ksWAM!oA7(u<>uZtsvc1Ji2^#HQTJYvIRaEA$)I5bKlODAK9e>m zJBW{6oQmQDbjKit%csqTY=xiUVm3!L_U~Gi zw_-TPsw`Q=B-0Xt-|`%kKIA{Y9DeuGNxA|$^;G($^Q2F&(@IxnVy=;sx}{Lp`_Tiq z`i3aLHU6BOajyFK2cbc~+d2{Pwl7~UxK)3eNpf!J=m^U6#~WH&=hZK+tX0q3+R`N< zBelh#pBfT)&4c0%vv)#H0>Mre7tdvbQK(s?2P7F{S@TP-&b{4>A9Es90{X?d)GLyI ztj^Gn4~D}aGGn(s%^pvDu8Ay#X-ApZq<`L<6XfrRqyYjV2t464RWMi)u7^3p$a2pF z1wHu0>SMO4>Qs*?!e)zjqEfD&=6G)o9b~--u%2V#Sv?s14Bjle5=*nT(7-U^R-Z7j z>?xOxIMRIi5%XcA8bH5a1p!*%P=^DwE0mGqGr3AX3f!X6Jf!XHF-X;nQN*_n2sXd$eoZ{~XT3ipZ*qm5FLQl_ zt?=t%(wUW_3+?$@=b8GY9wGk{3kJhO7rmGnz?GPxmy~MMJW|^@Sw^-tr;6z7Sp)oj z*Ns45p$=wu{gu_EX3g4&(rDW@&ub@(b8pGEDV5yT@@7051v*I6L=AHDdVCHiFNCMr zpYWa9V{ZcU%3fc1_Ad4bDXXIg09YKkfdf!xadtu}cv+ypUDp5PKK|IuK`Rv&*~M&U zuUh#r>SdCY<1BkkA(A;@)0^5*M%<^%Fx-N0pUJz(P!#KgVD;VgK9_$gu#FR}YcJRe zd(h;j`waOFQ?vvCw^Nc>`hz9mjYV0u=H3KM4lWtIGMI4BnFBcM25&3f*Jc$ID*{pn z6+81SRR%l;*m;ayKPNjb8|TL$g0R+LR)c&6)4&BE)S*v_-I z^$U&=fEa7A6i7OZ69`iN{WvQd=(BY>0q;Y;1%qZF1yIIwx_|9L;1agzbE4qF!t2wi zfw_7oq)9HluPdKaey<<=1lZH-oZz=IlnQ;SAEl)*tyLsG{5=W`LV#?Bg`@dGH`|nC zAvsnlcO}$LtP1lRB5+*STS&(zvq4z$j&6-m?e)>HTUb_F+4pVTS&yK)l0R)g-(h4R zopeYXME=)cCV@V;-R&ZO0bC^=G*s4l>Aj(Lpr5e-QRP#q#i(%M zjM?;kIyDWp?1qhX{xOxyI1B(g=K->k+u;?xk&;C~oA0cI7}l^}J!H?oGXQQJV2?(P zsv;fIbD8Y(O~uI~wUK#tP3_8{w@)*)lz?$nXF|50Ei8WaTdP4`wt$O7o2915`upq- zahbD)w3Uj*BNjg<@^*hWpR-xPV3Ab>ZF`n%xcu}i9J=2>UIQj2{!Bu|>ow?2HWDDVB)}wf zP_e4Bp{i`{rMvv_L=pga=Py9OgZPWrz{j)}uPg}EPo!ol$<2Rj zeFLB!mW$_N8!A;!xn9U5YcY7qN@*eba^3`!B) zt7Fm3Uv^qZATSLW>|fx=j+CqmQlr)%`ef#y3zALgV0FJF;Ll<@cYf9Lf>Jx$S!Oc>VR zn-2N|BN1=2H{#u%WqIH7sjwJ$HOu|R_IlJJGWk!R3XU_$V2Azd+$fMst#FEz^ zLT+FLt*I#7l=Wc)6-qS-YJg&`3jpeoHibcn1v=>nJAeSf0T80MnAzW6sLLGYCy{zv zmt3RPp&}X5oE~t$Lsn=g5P2scy3>QGS`l(};4gcch%;&`awCKHuVv;CA)LAaIFnrU z{iTj!0SS(SW|NyD2jJ#rAOc^$7b|Ofxgms*SC9M+7O5og;O%xSHroDZS$|=nt_fhLm&kBC(=VPaGOYoh{>W;jmSqQMO_gINGAA_KHY8R8v3)aH!+ zmeYSa);V>5pZ{-Yq_9n^u+N)^V5T!HzJKGiV6`r{5E0clW4`swSWT_BJz=>!A30@3`mN9_bIHC@s z9GR}$Lw;Tkc(!{O&;>=bDKzO-?dcK>H$R*`L~q5%xY6OryKvV?DBqBT0Icod%iJx}Z-#Y)B1yGyA`D2z)zU%-S{0Ta;2-76fT@H+d(jF z=UMRcf)E7^Bx4{9ELl36*oGX&y2Fwg4m3q(91-e;((UOnQnBDrp)wFf{_ zSa~2h`>(0XvKlJL_#oN61a^xAJj!od|EmTJK(vquLFI!uqTfFD|IG{1G{N|9CbdV0 zho^<-A#oyE81QxssmKAt;ou{f(v+{H&3_UUNI9xYXjz>Jru;fn7SCY*NnsTC`zK*x z@-jfKpTC6-%Tjh3HD8uD0+V$ML%gr$prENB#ijj0wj~cXR=Q#2i1Fei{oA6shSOqh zH~_$bltc#P(3v9g{=TVHy`tkUYKBnF&e5c)_>i6hd1nyYVqalFY;UZrh4qH{nRQTv zMO3Lsml$xK<Enq$p9Wy=}Uvej>w*%@Feg zX6=Avq-6D6+#Rdx#aV`TP4(tWAXQXNWvu04&OBfhdTNu(IHfe{PbgXK? zBry)^Xv|@J^WolM@QXydWTxYsLm) zidW{_k^W9{z~Bf-2yHr1bo%oQs)Q5=QiMByho9#l5KsgW8IW}UE*3U{V&VVX>o`7J zknO=W@SHO3Nl8YbgJ*4nVIMMcZ$yF~w&A*82(BmBSolu>v$*cJ{96!gv=8r4oP)W}P2em-&~GuGE$beV9IW9yKox%<%l z0x0m_BCYvzV(xN(_y%(=B^4tRW32Z&C{<%$uEu_j1Q31!lzXh~yrnafV@IHdC1iw< zrD(j+ZtdvV2P0DbefqQK4HQ#`8{^o$oR}yG(Aq!~52y>RTcl8LZff-U6WDCv;<@l0 zcslPUEz~L>>&TaTy6!pz!QA*jPAd&X_V#1VI=KhZSR3vzxR-(3{wagG9`1D>3rbrs zm$%7F$p2Rp-3I6wwM_uO6`k$WeO#n2pXlZf(+h8>g&-@Q&Me9s;RXvRmFED!5)I|O zt5M9Rh-ZPiJFM0J)4!$x4pKZPD*`aNi6uw;3mASFwRXYNoBYm?Mht{qWwPN~@mXw_ z!HaVJ34n_LnsfZbfmVdLXn>a-Tlp&0C8Q`(Jf38L2$`NbWdR1{+qiraP_Z;TTo1T1 zv9B|m5((f|s9O5tBRuYjnP!Qd4jQ2%<`Uw(@q=M7iV)A-&WT7~fXLGz0j0#^u1%Zk zC@Kw0IEK1XA;eZ2kAaBo4|8R zDtdml(T4qipTy$kf4CyX!Edt1;goOH`lV5NFN0VdQqsNhgF=WP%)wJY2t#e+xx`6x zchF$tAtv@Fef1u2h5)n%MfQH%jLwRIORgiS`H|a!QS8+|8cMOcI3%Z3TnPg&3Y-eKIwr$(CCz)ho+Z}Ua+qP}nzMbd2?{~l6|GN9^ z-dzV(wQ8-}Gi<8fl!J-&s1%&x4(4v6lBVE=uw0Ig=NRV+Kec#P$({!L!HEoL+a?vb zIJp@sVePK$h_;5TTM2+IoCuOZ7ZBJ3>uvP1Zp`VFuxbubGQNjXcCr?{oX$E8XLdV@ zcrkiLew&)i>^Q*zePO)|_!kV8pQ1qa?d#bFj6hEzaMrf<-zp%mYJLrOw^ztS+c4O5 zF_<1RNM&V}y*sp3p4=K?Ma}5`!lzlP)=IZ*Oh}1MaV_)AzK3gkdR>Fy`U+pfwYt!L zi;gxi(jfY%Bzs8J9gA0&e*@0~icaciIoW@1eW_ul>_AQ*?XTu5yVtff*2>wbpxIBz z{=CA4!q(7E4Y6#@JF2-WdK*ojlW3wv;R;PIukY`W79C9P7 z6FpI!^Vp0Ms)|qy1DHB)N6bZpJ%HE0G~|)@gej3#`r)*~Dmghrt%jH=f_OzYWcW+u z(y`DnBf4$u$|7!#9b{VH%7N|5NwU-aU`urRAs?r$QVfi*=F2lfg;QNfo8H6q^tf36 zy_vH;?&K|q*8&p~^fKimvBt_09&f`DZJQgayg=q+>`Op8Jbb(Sd)5?#zMo zRww8b`Yn0_uFQ4<0Mv^NomQk587@P`|Np~sZowhq&qmK2v8#Im+ZUqSOB4-pPHg2&| zV*w%{@masa?#STNN!vy0_HWhXTwayVzk7dHREiRqp>)k%z6(-KVx1({er`A9an_m{ zPkk??Tc_1g^k~!(?P{}LZmp74?97+XI%dD5|9FTf5>7&c>{3*05 zI$~G8Z9bEC#UXVc7krkHCCnHgq(4Om5`lY)o~?pVs8@Vv9opb}_o`wyWmS#-+n`=w zd^pqJN#Ec?_74;AAy@*FQWZjc&spf*_ebK9KAM8ZV{eEr6U}YWzqx1`Ie3_qndelR z_T!Q2-MV1)K}9?9!Pomd2=S7k&t9i?7XYl9eFLKgVz9rb%b9V4o`wBeHI$1+w#q;2 zH97pohK5yY+2j^ZtSQ$SOI)~JT>5N04ToMch_!an>ihYDlE64v=FMEi2USBjQUmYoL)`s*jQ;| zJx4i)=kQ%BoVGH|y@{mC77p+2R|)-rWmo>;sQQj#Bf{3&;DEbg{9ldhA5d`zkIc-< z^D_^Qy>9YvN)8!05tt`TTVMO#^mqI#ggd-|)1NxMQe;15gVBKg^NT+zYBwH>j_b70 z>r}tp?=_EKyAaRd=_1by*#~`g_`oE(^EIzn)W|1o$9 zvCVo0m)2-+3LY$~zrO}JFb-cxV$y78Tfb*?LkGw+^@Z1$xY@fg%UaGAdVyI@MAJ&0 z;h!=`XP^lb-d~`Iwz$f{w z82S%ortpv;xR55-Zp1eWlF#xL%Dkl)-66ao!7h7x48!6zxM|*bULXJnP=I|oIrDiX z(u7oeNv%tFou^Uk^)%*F@(R2i>bs{?O$(o^CFe^1y95-6wLq}D_qDz^Bx#TklEcGi zsq+)cY3P#zrZW6aVH&3*XXMvTea{v%)e61OY5^JR-FVN_SO|1jPRYPt%$4 z(|?EyLLG3+UC9J6wTgVcYNqs$dgpazAx0eDGBk~3r#5Aj1er$<2MPnL4P7rFVjXF- zCG5A3mK)t!*+SG#FbCE)FO@eGx-?`WOuiDCvf8iEBN4AM6!-P!w_{$CmYd6r$t5p^ zt{ZJkx!-_^k^*?dE9#z}+T(t|93vmIS?hs)TH@?1BAS%;Fg{BhHb-zeqdzvHn>dY{ zRv)T`*vcicWeVSdR^q~*T-rcZ;6$|121O}=`pOWhZv!cOoz?}z91f-3Hl43-lTyyW zSyuUWzP!cp@v=!M6}c8sdQsLWsCw+(BX%9GcMbDD6zC2t0^45xZ&~xnk4gb8XNIv4 zq^fl$hcLicyn9Gf#q2uMFL1Ix(jU!RAlF;s7Q)&uRy}?xAYzhceG>{GrfU-E2`HV= z_rB#YCMcd*JXip#NDrPV*ibap84pFUOuebY1vTOZUq%Y&M8?vN}kQ5*u;g*c@ZI>Go-2&x&~g#L`(Uu5!vZx zWAi0iD>qp?zk>-&!?6^-bss~vqYSnZquPJ*oMGa%J5jF9yBAEeH?$HHI#SD)PKDlc zcPZD>)h>Asn$^k#9K2Fk6 zAPFFqcS2ktc3&4&JNSX?kEH}aE`^O+m>S+J$%fa{aqXO;iKUzP z>lor!aF~iZR!f$YF;f*+njC;Or?Y;Pv-k z_+Fs!nP3w%6@gu_V5F;RlKUEO0Mh?A@#^M&+O5uh*6r*p>AAL-wns6xXv{L-v^0;a z@lA|IExh!CE29tdRV_z|*?^1V6x@fL4t5Gii0*AFmRObImv-qZa)UDF-4X{Frx$K) zS}8!iT>SK?p5rOex5R2D^@FTf%vslXms~gnEJ!UL1ftwRS|70T-H#!UFfsV(Oe57N zW^r@?#*`2eP`=QOTyR(Zty10QINybyptT}H{+TogErS3<%cq&p3*-iv=B ztG81VA^8&5w<2-FkXeN&=~hc|S~>c?O$ILB>&m1bAGqK+aZ=k$au8ZM8^xesM#+H2 zAlkz4p11=qI~W*O5@u7`pnL8k1A(abpio=sW9et%T{r!ynAJyFgdPJf%NmeA#lY@7 z7C>C@;xYKn3kpvI^Pd_!pHM&4pE%Ny3BhAK`|*~w3dWadg^ z94D@joE;jdTK>v4j*$K-cOj*UF&$|99?DPcNF!UexXbmMEAx|Hb{J%yT+mIwRH+y} zsViM!`eHi#XDSB}Ay}+&9kY|gT1c;=2z|_M^MCr^Jx9@o0C=f7HbzH zIo2UoMH|&?MmjnE)?y+I?0-<9Z(xq3F|$A#tq9P)8PJ*%E{pSIDw;0Pq_exfoc*4y z&&0uR;S=bJEu(_|U*w1$>;=`{TI$`HW*RKrL5BnwPp;ij6^fg&QPkM zoPY#aL#=hK+f%!pA*~HrXMTGIK46wnjuvwi5DpC{5Yxs%iS2-}U?Hed6UA$j&t$Ng zU!RY$5~wmZs41FwX~=FZg`FzAIJ=4#TFA*5OK0Mo@$;CeE zT3BOqBi}x60Ydihn(_Ap7!jaJ<9>=$ZslZ{8_Xl3hmFP^baMxA5!#wKr4il%dgPiG z@@1nlzXCfF3i>o`8Lt=iO_4Q`x`9h9Tex7{J0#`|>?~vWuZ9al0REarW$g?pt&t{q zfEPs7m@njf)e{BI^uca?`--sSwN!))H9175><8~~(Yb9d%E3p%h0@ag-3acAcQH4v zWNSl)GM?w1XgZ!U=-9}Q1bBH-p~LO3%LW#k|p0@9gKs-k_$S94Kk>WKVyyQX$V$H?x-@CHbV?2 zB9rZYJ${1C3Y!D-YxBF!*Hq1kWzF;B+O-WLF+fZXLz3Vx9=t?}HseRyA??%v4jrei zYLBG$Qm(Hz73XGV+{CZU{2xRP(Y1=aynnB&@g&S3$P+5xg$s8)G_uW4er4+NqJ){_ zrT_JY`#0JP%MOY|Opw!1#4qdxUYs~10N@XL9^WokxU4FNBSTs_oC6 zS&HoS%_YaHhTJG6`pQdPk>!4~-$5wgxDsmk96;AI8}LPTp*tWPIPvo%7fwi>(>x$ZwOz%AulJOC2Du`bT;@dkRed}5?wD{Ub&dn3fEB9UQc;w z8X0buZ^vyQ{8*M4*gKFOwX4skHbq0DboXJ|o~`^^N)9fbR>49hZTwCabS9?u3wl3R_%3XW+u<5%HtnA#whdLP z99h>ot9L3bE6d7aMWbgT6AgZgWji0|wO^nehy(*$MRXB>`as~^ZI!)X?is9kQ)K!D zZ6WR!!WUF!^gIit%u{8tCD4U^2FrMP9>6)btUEl*Pl()xFy2t0Nuke#okyr$SN8@t z9fkPL-6+nN?ACj6g{_GU4vIlduZJBVAVcq%2v2v@%H^s{%AHu~niNH#g<&SrXfdkR z(hZ_>-cgFA4h9=e_fpAXW24*1w`@5iWL0h)E_4*vRK`7BVyr}BDY*9eXgP$%({cUH zl)LWP)|TLg-xrE3ZpQ#C0@x#AYiJ2dQgFJan90APQ(pcYL1UW2F~MseQRGzU%j{9o z)~@lNR*Vu$o}4JUOHj~;GIDK=>j&)Q!EvJNq>>gz z&txgnNUL}s3AHBD;fQ4NfG$$`L7z%R8==HK&~X`n=?%GasZrw%a_zz#+jB|D8ln85 zb1GE>Jyr3Zf%JUsYtKwH%&KHQzfk^38O@rhNQoYe9=>zA$6C4Jcz0#gM5FBt8`4^L zRcvBb=U3L&A?(@k~a*tIbdO8lKz;ZLq)Z;I% zdwX)+>&c>jOhS}kFTeQpVu;2?)9ckN_1rb6L}?k(yvB!#>*R|C+%|vkg#%FIa;1z_^MgjJe;@<>;cprkqH;ry*({oV(7UF}$Y9r37+K{yT)fBAV*|U~+vgvL0|_L+-X{?suc={r(C2oS?tY)$tGr9>uiXo3t{www4OJyj_&4y+ z+ikE}Fd9HZq<$G^t0zo8s$`sLG-?fayffIE(MZV04SVj=@#Zwj((>4_F&YVFCIgb!Xg zE^tonuXDpb!eGc84Hu*YT=q3+uN}u<+wxEbCW3I2ixH{9{>uh5Ri|(OdTMfD& z3d#gS+QE$|wTYei1|3!LG9ZD9Vhk2j?KsrS){x&$HxdWI>t9jco}&IzB+SusLcrq0 z#J+?BE$}4rfQVT+)o#R2%T$biZaDL9m&4m(?Q5%&}iESowPSFa4D_@(2y-jANmT7K#AyM#QmAD{UXdo&6=SM3c< z1XXHqjQu#UO4oZ_Wb^6rc7o6EBZ3(EXA&(fmBCd{tr|5}#@k;Hx%(6c)Jo-v*ql2G zo1IZpn)W@aU6&#rls`CL(>ESM$a5mj=q;^(8g7D-WjQ@OJp$X6C~<(>GdzR+^bv0V zu&tViFb6iSuqu1D{QFagAi&?~roJfgh4ak>99NFJ$uhgVvyA=b#_KZm?rH|V^8#IL zVSe1w<74?ga_k+3&DH{|`LINd?N!VfKQFuL1Fhq%PVe)!u2Jo6%cN>T*1JEh`7p>w z_i(ELZt~NjLeGqiWx06^y-M3>D?NF$k%by|nY;oW*Z^`vfT9~DO=f3`w6pWDu5_I0 z^Q{q~!`c}>wdLqkjXJgA*-LG$onrd0(T&3xmg~;+gbG6C3wil)W^5O_jJos4i(1xe zF>Qe(qhlD^-vWTyWIB(ndKNZnm~?N7lXlePd68Sr`xNB8V$R_&`5|?Dw1$p zO5Ndk$V1<+hqu+%`vN~3l~2suqr#7kavH(yEeEA2Zi8nxG&DQk^m-xYNII^IKH`GM zkLx9WstFE07{lC0qOB7{EiXN6G_dNbQ_Y2jN*%CPt7n=}@O(&05zC_)F2z7+LC~PAo6Q(R zA+%T(>eCL6jNQ?(wN$T8bf(SL$B8!HmYD41*mc6!A*a~&_jfu?zFx`^;#?+KNc>r5 zM(gjvNpp?$__JA9xY`m2iSzaUoS5yre(DT>V6yuk5$i)le^ZsTt$PvfolY6SVNIDE zU~?zb!Y!F`?)leY^m{XSd;a0!!8K;JrL|S8FKc`J@7)U?5x%s`!MhBdQfR6DGQ0+ zK9#1X+I>2HJYVl1Tjn&l5@VcY(H0|^_70Mb7xN#4(}IbVJ=36K$Us`> z!*DdVbZc>`cP3_Si<^;V*LbivnbtyEJN6x#QR4b?xE+KfXu$$>m zXoYv9kM1;<$B!*Oj$dtw^vL=QQ;EMz$OFdMKC@G4c~$raDprR1Nwd!?WUY33JT`5C`h%;B25hoAe=7~u z!_e5&|Bc%e1{bPpSt#;zLr0#dIqY~(y3m?x0-pbpGWeoT@(k}1(Qq?jogAHrtI}jA zBvl6ol$MhhHr98Lqb7eeeE+tKq>y3EDj}pR2sW>vmz0^HxiUr|gdrh=?DSoQ14&cM zNQFV6N4@;WRv8c%M^a5dTU7`SwmNgmTqlE)PjABFtP!sP-{#@bvpYT~te`_P|143B zS)b{H#t5USK0VbVuO%RfxGrPcWA>{E?I%V<_nSJL6f&`k#fGe)jD@D6D+_rr8m^H! zuPn}ZG?uvTQAMH(`7gL*SixO06PzyA&>*rP%eGd(p?NW4{vtOw7Z9h!grsNZi2yJZ zz87ACz)f(_HX~f?{W6E^f<0+%G?B>-OXbZ^sJi0er1;fHY`o6~*ZS39!*Mtfv2i zG3OG+fmr{%QY*Azr7kS3K6MsOux!}JtjoFMqEYU>5IuZdQ*b*HClhN0cy@*&je#v+ zK&rjJLaN)FnsRH=C?+ zHAKs7FgvVwJ}ls+qgKg*BkHo^<(kRc7W7xl_9Otgtp2*Ab-|7oV~xjV9!2B8c*H3> zJ0)7Ct<7XUO@{Xv;LH1bh|?eNLBOo)%k1YQWVN|7Mr=dBZ0Kxd8r1n&tIplokr@lk z?OK^G!Q|G2rxFQNWn%@qO;`LEIAyO zsER2cDZLphDxwvE=K5fl_(nrXCTjD`i2>jn2^MMAr0=jXh) zEw18_%mb`GM9-+{3Tt;m0=*~`zvGm$|R@HMe< zk@k?Z)^%a}D<2yGq>tRwyv@-%T6rPp@b^2voOwuTGp{KAyjhk_Y>3;7pi~t5Rozw` zM@>RGCILOQH?lbWcUh&6m9eCwDUKf<NML3CjFIFDP7#Kh)}q;LGuZVZ7za z6iCvO@BmVm7yOg6$^+;Fz4JjOm`iWghuQ)IF(i?t;xzR%gf{by|%O0qLwtEqSgQ^XGa*sE|MG&B)a5m@W;?g|Wu5AqL+|7AHiRcIsJ7u<9 zwROaU9MOymt7iO`+;^pPVN+3-q_C2nia|k7j#0vhJhnE7Twhh5L?fPKQ)H>`BGYWz zUv`@H^7Qlo1K*ZyYaHd`;rp;8xsm7fbrrs871k%|P=?%oqV2>ARp=G+SDWn?O;wXU zm%h651@UamEQs)Y|MA18gH=mB2JXOEx znP(qclPI}RivgNRyRbf+?rYf{Rn!Oal3NhAIb}0&3JK<9S{SB&+1#1_*w=Ooi^~2o zyY&b)-aFFmttNMRehkAT@8v~t|G{;bG3xPYiz;bH2iLp$i9N5Bj`Nl;tRSKyplg!% zJJ!I(T3nhXQPOS#7Iq9Thr-(F&tDGc%o2<=IrW6>mFbOjiP8$P`31!1J=0T5akPA7 z%u=OPT}0XD4=ZNX!DBI|>%zF1MwWuaXBHk>&&!tf+Qr?cAT&tNeBD{B44#&(&p z_)G@c{W;vbPo>(>h)^RIQ2`tJkA}x{PhMYMTvBr6wFoOU2^{7i+^Bl7@{@(J*QZ2* zx7O-XDm7s2H^CJWz0(0WsWkm+}$%TOGE0O z`m6a`SSRI^hj+>{Z4PyMzTss`elzvA3B3eVcC@gp<2xvg(V=yZQcQw~ZE^XD!aVLE zwZDG^(C~Zj9e?-0Y42@Wy0L7nts1Ly(UcbQ#lg~P7XnP zMZJ)C5N4}?xr`36i~?f^IWYw%J3*d*WnRh9rVLR-`0(&U=Tw^8U4Dt|%S`b@5^KvG zxyC|vR#5 zO07y~x1}R5Z)a(m7}k-mjfjplmU>)$F7&2a31p_HY zm}hrTn&V}~8F1J*MJu(JSt<5G}$?gsRn&bcj6zhR$eCqh4ioMay7Xzs- zr38Q^HxPWp`2f0@dd*n5+`pna`6?(*|4}u+n!KPJRg6^Ys%0yEcWa7=K}1GN=-&-1 zU&F=3irK#DLP5DpQb`BMrFyp@f9{#^vGc4F33w8n#1ss$I<+A8ymiVxRjRVR;h=Du z67dYLQt%Xt0NT(dtX2BWIaZzX5qa*-+pz>!}x0Vte2u>I)fuJ&HX>SUM=%X+}iXfGIL^r-e$2^&t%t*@$JD|8a zfsSc~@hA)_vLFYP!^D+l7SiJ6B>H=>)GlBfJ0ltb1p*;L;Ukg&Y(_rr{hS#+z|7?~ zakPxB)uPSOv4Kc&ie?19-9Lw3PYI~ujJ1s04RjI`5?LI+2H)S}4ep-O8T7fi)z>roRG@EfwPxd>6jy9}dk3D@D`0r=G3#y1J~Mq#HpVyWT#tFW zB0?cz2tGde+!<_#ze4q%`QRX-p`XQu=I7@Agosh=*2O4|3=DYAkD%r#%F14F(An8k zR9l+_1qCf7(Q32v?P;j{_+%Cpi3#}tw)6ki*SoOUu8)k2{Lrnp+@Dm+$V^X53zH1f z60d0deB^sTd3$@a#b#4aNx!|mH8D2+W}e|MB_VOXR*n0{X=7ufR;3#**R{N&E+r`$ z7-F<(=QT1i>X))JHaHpGORC%C4#i!o?FNzmfdraeb!%U;e>nRM6H{R8l;GPnidKKx z(3Q1n+&3W@O`)?<>Nzkjr;?iQ z3^F(fbL&;TMp*mhICoQ|kG`)gK|6J$gO>;0%PHucxUgMH3Uh206m$4(pa`5y4T^14 zI;jp4%nZ_+#za)VYp8BVF5b6~@LfG#H`wXJANM!fI|_XMC|rGTvElhlo77oeF0Zmp zp6lf(ds;1uX2T9hsN!O7aLJMAAL4cTTwdg21}ca(>W+he3Rt=Onm<-JM(&&0u5))P zQl9m#_jKf%!{v5fwq1)lJs)c|(l#9@=sw*mzxl5r9tl-Y4Z={8-wVttrD7>9Rao!W z=zo;slNp@G<<01S!bc|HVkRzD=(D;kXct}Qu|RECofm@V_~^nENQB!-0$>Dsmsp~Mldk3v^qU*w7+&dgM$}MWSG>#VSogp zBqkwEV3 z`r%W>#F+i#$B&SpCkSp6s#=5fmaNJwQYkeY9!Kl=RZ$ZY6Vv#OCWlc!U6+@$Ww_JD z_u26bM@Pq~sCcR?egzE?0Ri8#!vntPY|S=f4=EV>Qn(U}V{4Ni^~!o`RmH`S333uL z?;ib*80Iy<+p{_@N?EMrGC7!*H?nxxZ+j*tRHeMiPha4ue053rJnIUAIm|*x!_np! z=4sWNFfe|MO^}}M?HzS^jEb_kSy7ci?GApvU)bM&hT$V2461?Qr@oXC@l&+aIp2`d zqMAoWvvKj6s-l78-a}$7Z9KosXo@9`8HBLA5~KRr{eEtD^EvKAL=Zc0LM?&>d>0j! zZQ_1r;qmFJxt4q6aIv^sQ+^$FyNJ72&H-jxBDKS7 z@wKK5zt$emxcBsaaWJ@^dCOGakux`?s8db=;f-_tG-uCE?B>Rw>!#cpRr;|C+>sLd zW+$*azK7g=_-`q7DxRQ#x4HoLB1YYS@~74rr>2wUw_Du?;~yIas_~Kz0tM`@$zc#8 zK8tqVuL~U+%&stp;Hda+pR{7&n$kMIFJ%PJJ45a0>pI=9ZxW@@37qn(t79$TxI@uV z6ZZ}nfE^@2V$%bz=*V#dm)P!DSEn(aFrh00m{ZCTlOUcd)P1;vBp_InzVL zOPJf#gkfp>c{$O})fk=aE|;d-30wUB)-QE6+t>eVX?ca8MLx{mpWptRUr|bt(Jf9) z5ELGo-Om5Q`QAA^G}O^@d1i&tHe-UEqq(Wc{b`qxfR;8Y6(T-9o|ux7@o3$kCE-Wo z8_WVx&@N11r1U+$7%*Y3$~~^@(Li(~s{SO2_+%%+XUty6NMATAuhI_cMYuZh6Ti^1 zK2(}fGne*adD3{=%T7hd?vaj#*0QrL9w>A^~FTu z^=X0Oo<%T_F*7^--WhTQffr?=RFuVjeONkg1-#kdVDAXw;wd1b5GA0X^l8pa;xMVU zvCznZ1ql#S?(gB?Y8V;EPH(~-55OZwFyDkrN=opSIuX)-BF9(iwoY&m6t{nV8|AP3 zOW+RDfo4kjSJ?26SJR8VPkC9{cd6XCOix-GVi|M863HWgY6iF9C%llOrc%!>(uOL#%{rf*`rM3CN>kotFO+3QxS zxGpa!QE%<5oQ4kyC$j)9us@Q0Z&%7Z!rr=8xAMzv_;|asUQ_8#JC>`wZ^iG&Op#BJ z|F$?dWU^Qj_pOP40{`XTf6?E`di3d6R#v)L2|5i{=I~EWPjq}UM(T-b?j2lRYig^P zTR*?eb^=p8Gtk<%HcL2mqXwJR9u{``tWmYftj7ls&4<^3cc>xGJu$IPopWL7c`2eQE$u;`}lkr8}*AJD(z?tQR4+#ZGPcIWyNldrE zA@o82nT>^K30H52$YtanqZbak>;ftERGeXok{IJ}vc8Z`)LJdh`;!qk;A)F3xw(^a z*}SdR$BYi_=!I2R2*5oMJw010FPboC{elo-=~0!Gkky9>zccgVvH5*)i$?~LOs%)N zEvst@i4(D~*c``+{A*cVS)tZ!$^igye+12m%VH4BR2%j)>gvKa(RK-dV*bjgAa;Sf zKn%S!FE0B%(FIHJ(tW38PuXj7yjc_#E$7dzlp{|`IdWiHsEzwioq+&|uO=iUP>+u{ z?}$}esnO}wV6+j8j|<~5pH<*dGBX^lKezJg6_}E@cZLZLJ9k`Qq7fIQjZbAv82pz18&on8|EbuXCf?=QS1} zmb#2b0C~D^I$80r-Q>B(q|LhxH8F88Dzi95U0etdm)F*~sIe3cUB(5bom0E$VHe8C zeRCU}h%o`0D_`8~0p5ABF~2gCmY6x-cX*R%m4$clc)1SZH(W5P)*W!oVgH*xB>6FT z({~ll8`Apv=H`#a(ujZdADd&uT42S@Fd}UwbCu0N3F;}NX-3=I=iT+Q#wn~;Nx|Xz z9l{p|eH`Kjtce~X$cBrn!6uzy9h{pgh7CFtj$wN9asn~4(;it1&vGH_Ep<-x3NY=VQq2;)&)$1^y5Zf^F=GG5(&pgu29?(d=gP?3<) zK|YZRhyG!+UoOmzgD)2xdi)J2%#;uoP!57T_9yt?aU}t{w`W}CULOc;^>zwu-ZX}oWIdUC=T zl1;zy4W5sMnc2`6rwE{=uHEO&H)@vt>4o>CwDe=^#_w{{7v&6>>F+n-OF~3exKdC* G@c#gfrnyJ} literal 0 HcmV?d00001 diff --git a/thinkcspy/Chapter-8-Exercises/Python-files/Lab.py b/thinkcspy/Chapter-8-Exercises/Python-files/Lab.py new file mode 100644 index 0000000..e5c0ceb --- /dev/null +++ b/thinkcspy/Chapter-8-Exercises/Python-files/Lab.py @@ -0,0 +1,87 @@ +# Runestone.Academy thinkcspy course +# Chapter 8 +# Lab + +import turtle + +border = 10 + +def writeData(tt, itr, height): + tt.goto(0-border, 0-border) + tt.up() + + if height >= 100: + tt.left(90) + tt.forward(height+20) + tt.right(90) + tt.forward(itr*39) + tt.write(str(height), move=False, align='center', font=('Times New Roman', 30, 'normal')) + tt.forward(70) + tt.write(str(itr), move=False, align='center', font=('Times New Roman', 30, 'normal')) + else: # this is here so the last bar actually fills + tt.left(90) + tt.forward(height) + tt.right(90) + tt.forward(itr*40) + tt.right(90) + tt.forward(height) + tt.left(90) + +def drawBar(t, height): + """ Get turtle t to draw one bar, of height. """ + t.begin_fill() # start filling this shape + t.left(90) + t.forward(height) + t.right(90) + t.forward(40) + t.right(90) + t.forward(height) + t.left(90) + t.end_fill() # stop filling this shape + + +def seq3np1(n): + """ Print the 3n+1 sequence from n, terminating when it reaches 1.""" + count = 1 + + while n != 1: + count += 1 + + #print(n) + if n % 2 == 0: # n is even + n = n // 2 + else: # n is odd + n = n * 3 + 1 + #print(n) # the last print is 1 + #print(count) + return count + + +wn = turtle.Screen() # Set up the window and its attributes +wn.setworldcoordinates(0-border, 0-border, 40*50+border, 150) +wn.bgcolor("lightblue") +wn.tracer(100) + +tess = turtle.Turtle() # create tess and set some attributes +tess.color("purple") +tess.fillcolor("magenta") +tess.pensize(3) + +alex = turtle.Turtle() +alex.color("purple") + +maxSoFar = 0 + +for i in range(50): + start = i + 1 + result = seq3np1(start) + + #print("Number of iterations to get to '1' from", start, ":", result) + + drawBar(tess, result) + writeData(alex, start, result) + + if result > maxSoFar: + maxSoFar = result + +print("The max number of iterations was", maxSoFar, "from sequence start", start) \ No newline at end of file