From 6f99607720cc9ce3c7a9b13d0087bacc487dbcc3 Mon Sep 17 00:00:00 2001 From: Vadim Bendebury Date: Sun, 20 Mar 2016 18:53:59 -0700 Subject: [PATCH 01/14] python: first draft do not keep buggy executable in the tree. Signed-off-by: Vadim Bendebury --- .gitignore | 1 + checkers | Bin 270393 -> 0 bytes checkers.py | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 77 insertions(+) create mode 100644 .gitignore delete mode 100755 checkers create mode 100755 checkers.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c6e18b3 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +checkers diff --git a/checkers b/checkers deleted file mode 100755 index a2a93b9a092f6e15f2e532c1a3a6533fcfebd33c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 270393 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 qJ5t zuJbyqn(LfJIBk(5fE-813C=Zf-f_uwc#|u~{PMZmT!(LJ=Qv!j<~TfqE7wVF$lq4- zTaN0@6?l%*P9RsyFP}!p6-bW5v$}G{1t34d_(Q@)c#gw!lyV%NE(Cgs^MI=yXRbg9 zhdzMkiVnHXeu?ufT1XRmzATI`vMGN*7AzsT&gTN*St_|sRg74^NIc5vieGHtCG(f> z6z4cRx+B-&;T$;*Z};XnXA6Y!T!}+NSSHuuy{H`X%Nygl&Z16)@UVwmhevAUIvP$$ zj>A_D#&N>Vdm7S3hXLh1iyUV{Hh+0=M2^G5E^?fd6Zp$Fijgatz$g>{O&~mY0h$4x z<9sFbZ2`%3l6nx*A9J-_hjo_Y@Kxm;htJODI)9TmpZ~~l9>VV^hw)s8Z?WbYn)YoN z*Koegmh0$7$~U8PorY3EK0K1^@afWA=Y09yB)=>BQl`f8H^(6)*Wq(=qZ~dRm+SCh zu_l9CDXX8|wsaPn^QG`jyFJORWWw$A-GkxQ88dMIA0d%MR*K33RmPH&G1;67>~LTv z6I%{!TzgKgz7cdCpFI&Y^MGION{FX<1a4q=dirM2Yyp0UE5}M1M@;9*D@=pF0hl{n ztVpm@KDh-XT|P(0&gQ0`0{ZANB+rnft6FSGz683-%zC=|8X3vL)?*q*Fp=C5EQ36@ zWp&G$az#G!$efREPWr9MAk42rY^AJg0g|kaw;FlNfZkGv#Mi(|*^h4A?)4@dRWiQ@ zgapqKD2J{zuS8Zdzs6vn^vD9(vlXJ9 zNW*H^Vv-Z9fj)We6+jOHbc}~S+oL&S5IiS@pk}yOecKH_$QQD59Bwg17|oTQF;{xY zCW?+22%UHa9PtTMen61g<|%$2D03a2Ntoj#_v0^z)Es9p zC?kyK3LsYiInI=9LU`XZ$NciC9JKoW{Cyq2IZj?T#tEOz$IH|i_Jt636+-@9D4s<4 zkz77{VMX}xTEQwHe>;jXG#&Es*HV7LTl)ks&mk021`pDo&8o56+V3F!9fHV|h%b}% zT0pKIDD>)4*&@xC*=jbX*$9P{Au?&JK*&BBz>x?dQzE`hR!sr9k|DFUp3Ev>&O|7r z49c8yD(Dhq9@oiGPxVUmXAl*AoCbmfRzLt>p|*;7q7lwXvJV3J41#DO5nl@)l2kzM zQ@_An)egs&><3^hwAw<-pcchEy#^-)*-ZiMfFMF8;tOrZDj?gZ@8J#fdP2tl!;fec zQU-;V9BzYbijZ20AQC0wOI%8c`g zM0|-n!=!*b7c^7W!Fq1;B``lB6jBBymKJw}J9WyI9LsdZaHrG)?0_KfH4f2UXn$yh zTj_?jyGJ`5bQ6xHE#adZc0Rz>2%@P(d`)jiwdUrc`K_zxGr3lKz8Mo1f(55t!7$fIqBVT8x<4QR3o4FhW!AGDY+ANM{O zJ`HU6ywrmIhO4XLDsPIX{elk}{5;5h9;P^2Pxg4oJ=2xVx`r|f=YNIW)_get#ok^Z zSs|(4cAaLG@np&#S=o{kdOi75wUZZ&FWm%oRn5Q4Xd`G^h*UBPd@1P_E0AOOjc>{RO}=f){P$PY_MJDvT9T33M-C{8Y8C8)+)YeKF@RaIamO`xcbtPh4*+vNLLu2%)KZ?emTg=JjYR%b?dw4Q z6G2)ABVv{)>|V)N0%sZ*@@u*$mbcy$JgAsLzAH!|7?E7WBp(QZ7h93pl*6Z6x0>Q} z(#Stmdk$DM`x?c#$G%4KAy>B%;N?a>-HKYaB7A_hGHJl^J`H^{B$&EoR0_f8P)qo} zt9=BZR}ef?i!BL>{R2N%gfF}5`nnzI{GZWmjlzC?H7UV{ID#jnkYbTj;q!7ueevB} zy9a27B6xYk)ff4X|7qxAU=|`2lAY>TUXRYR{+FTe1llzl<8fx=`+ad{8i*h!U<9XQ!zJdmNA&pLP%Q$c9HEe`lvdJxFd}Cnbpe7W$hYM@ zk`Kp-cyIq~(aIkcZUyEZghH}YSZO1WEbXi5(5B>1)gA@A>{ar`*A(Ld z86HFTx%GTMO%Vu2?fYqUeZMsG6ufCSEL$YB_vB0fOAUf#TwNgiu>K-ErpadmQHj-j z9FVnF$;Y7!hh+<|uljyh6V574#StbY;L~v>mx0B;7obB3Vn0T#2p>J0cO#<5|5E3t zz3au@JPh#~is%v#R9b?^BV&pYM=&f%_Oo&Lm9iK}Rm*gOBw;fczS0K5}z*U7(B) zzlMfoGYhMU{IbW2V&>Bo!F&2u)TMiS>aKKqzA8R}UjG}1vxOaBgY~N|lQ2<})h4%+ z76T&N4Gpa#e$&csv;mOBK%4Q|qD-U+$)Z8TG`?Ce1$8j|qLm#zD3~kjVE92RyXi}U zd8-bF-?Orlz7$L}&*YOj-e}ZxzR^gDUgp;-I#LU+lnh{@oy+wdge>Os^@#z?qs%A|mbS9`m2Rn5ty>U{*K;xE;o2pnidIHq7RiJUhh65T7Y^ahTrxD)gW@2Pg zKlC68J=7`9HK3w#uZDw~7blS_7_>$v^=S^TU1>-Ys3ZR!*h_+}_ zw~nK}2CU#Km$?-tHwqZ8kTjJfIS$%|?%?b5U#ZWob@$84M zY6Tk8P%Q)&q)l7Ka}AOTPZN;TMFreM16z4?K_A$&>x zMqS_%C^-dpO@mAHYuF3XZoXnnc8}-ttFA{pIKJvK;cyU&<)0Rb*M&4`MdLmwh4zPD zv=ytUwtQB+dXmz8 zPDNwdaLNfL$pmhGxVmDctJFvtJf^pWZ)QT~4BtF%d!32S*P12mlZBKr;h7YVP)beF zvrz=cAGY#+3csBfaHd-52@_syY#CD{$u?J%V$>?e%-$*yIpTt@N~NCYpsx41K485< z6QDZtTo=d8${jo0acjOi&{)=jxvp+o!#dHM-Wl}s@H-w5gVWd9$IkX{>?J~Pc91+Zjy`}EfSh;gFdo6(`$ z`1I_v+r|%u?Q{c(9{}2WZ30~{TMm0Ve-!iv&2*2>8yJ~eMqP;*3FEsy-9_R)wL8GF z-PRlbD5p!jc&$YINEnZGoA-Y_9=gL|R=hNS5bNmZ@7)B`~QUD9!W&#Xt{@dn@x&3VG) znO?I^@JA@!b}-udWAY?-OrGqI$@p3l$K)yQm^@XF$&r3BXy-a z&SF@tJ5n1dRqjY#O*VIwHps;;H|5rtkryUoa*4?mN$kA2!@QgCvbvd>!F#zO3%X=0 z8Y&rWUHx%Bs_$`lP12nSoZZJPeOEP9r(=nKj+>vWu*qPx^4Y268cB17&D6O{%cBdN zM@*d6)+$pxH~?wSSI1^yY_iVH!q{QG5FVq)21+wEPiY(Dh>V;~t^!8R<~R~lnk{Mr zI#j(ZxWJ23`wLz9&=y>$Lbl2d_pj$jReudxNoza**fcSY`raPO-a=TeQc`_Ot~>6J)Z_jrcibOccibNnKkko>ANR+(17>;| z`{VvB*CD;_0lzY^J>ZTC0of|Rc!@F6-7LTm>24NagtTTM z*j6TfmHMS|BmCmIEF}0}G_Ry+K}mIwqD6}U@{+jo#J@y)TBB@n|0In zG3PBAg8!TL;NK2F+BV+svAzf#M}Fp##nqYRl|_Z+nMI2;=N1)pKdDFW9$A@X6-DJs zic2z!x^~SJi1ojw%$!qJv-m$CU*7NJ{FD21UsAE4qHg$r4|H7gdC z8t;nRsPC>_iz+Kh%jP19`javuiV7`SRy41$nryrp zDTZlrO)(GNAWrJGM52JAC~mZ@lCi}#<@t*W%S>)d7MCo}FDxfdO{Ia=ELl`8{PPMI z&#Nh%Q(lt4sIt7QXob$JbV)@KRW2;gCxHeYBZ8T@beh1ErISl4Dyxf2s!NLV7njs% z(Bc(~Yf2X8msD3*N+Dsk{5ge-OEeaRr|nn*AWD}NGqwljTL5dql4xwDJ!q(URHtI>_USq zL4?Vz)Q6_8DMNh=r>+Sjh0V;ssXbN1ojsU(A=Ft0699lp*7c-$@<-%*^$$hd-awlF zoXSFBfga*u0@Q}l%+}BCJ z5Y=n>CfCC9xs`r@L*}xYl4`$OL=Rmj>tnj|cn0aW^4%7XJpWBUk2c}<^XP`+`gz@% zu-5)vxBfqN)d9*aeSimrbY@xG$i-wPP;0qFpwj_y$BkJz=N0;GONV z35Ae=I?rz4f^TS-O{f+4JfQBgo4DY|+GP`J1zzUKyquSbCeO9YCe#W%6NZ999e{$L zx63Bf3iNb|3H`ZUHi1@PuuIFrG;435z6gSQx!?l zT=3p-JoNwS3&m~{=k!7CD2r>T%NYJT zi}@>XXS4t^@oNXpbb1{5_On2uQ+g#nKF7h{?nE}*DdlenXIt9|!I0gKzz_$22ZKK@ zf#TPu4{_Q$OPtL6hB%|0A%unOo|^eyq`*9#7l(@3cF(9Y^nJus=-ki}XX>&&CVrDp z3Dja+NdPndxkGUY2qmPxR=e z)0b*JTm$YFC7ev>B1Bleo9r%0_;;>yo~R-&trow5)`2EYY2ELrk@+Itr`$*!_qba!_$>4YKggog<2B!rO1 zq^lqE2$P}bQAs*8lNqN63_;ncuCDH>OjlK>s=8+eA%rAq^jtIus62$+b3CXVd3qHj z0XZ7N<6OCj9LYtmMjp!H0Adm$M6aIz_gZ`HU3*tmcMUO9$NnX=YJYp}wbx#c@BMuX zJwtm(hu?T~_mECX+Sd$Tb>0dl=3Vz`Ext+1qcphn{QHJ~Y4GX`@Xy8P z4R07O4L_!{PcNebCgD!&~lT;Yy0q3U;p~xCFkM4;m-`;HGJ3h$A;hk0JmLNm{B~{-fQ4bJ1}kac?19P;K0WQFEkW&kAd$S8hGITJ%fXGnxdrup9e0cBheZ#vi8y*viME5VzXqllmoC>mr zB!~m25O}YFe_9h9-zM<0tf|i$ zmF`z25It#k{wDUhmtC$s{U7dg*Q1?%2L5lZ z`DX(BN(2AW(7^Ea!57l#oC)}w4gM>DUkKE?@UveX+<5-aef2BfA6kFYSBKwx$M*W* zMHjpmsA{No)7{I1SDa5MeqreNokQn5DjS=|&ElwrzB}kMMiwnKbpKfckFVVI*zjc& z(T7>M)6icHqEEx+;X5vhcH78C{k#WgNjffWqk-Q$fDz{{PG5b!fupY`@XK4lX8}BC z;9tU6Uo$vHgF*2382nA>(6a`&oELrHlXmN^&m0)u!9##u^j;m0!SVB=o)3>|&+jFS z;P8rtWDUKWM(A`~o)%^^^aOnn^Pe=Hud+tIhvcBc3m`b}T|WBW;pJDzduWwCZdI_~ z?kCjDn~Kn>h4^^rlpeS-ryaxC4Zn1GctM_^)pwWO`T-7e7#@`yglOJlHy#_}^1VMR3}>JutC7I} zY~a5LFlY|^+({jrUpjqY_&nKzG}i|V{y$Hl<;X~f;CCAQalnsa0lZO1g5L2tyNRRD z9vi%fx=hauZqj#ra6Jvs`v!9tf;k$Tx&Yg2VfdQiyYC*p>UH0bzThV}YyA&7GhE%Z_(P~FQC@%wc7sy)BEb-yO!^J|L}VuRAYXLT^t&`nAi?u)%Fe@yL0$O7ip*I z`PnV{wl8BB{oL?<#L*5AhdJ<7{DVcZjUK;g-QdONKY%^~oSZRS? zZ}49}730Bs`dol-HSm`Q2L5pPss-g1=*4fbTYpO%hnLiO0RN$Z-*7q_dJeTu>-uX3 z{uQk26@gPL7FRU%cDMb`2iO7@hknyxL0S_Qm^k#$XWFdMh*>=05I*WrAw<-+#n}yc zLqm;!>?Jw|QRCE#MY(yc5cmnJ9kFiIxJ9G+jZ+tQY}3a7;xr$vA29I$ah&OfR5d;4N=?Pw7n|}Q@+Qa`8 zlXEXM@Y{e3&L6)2ABR6f>vkPvsk^^A{P?vWzx|tcgU;LDqSd~8yS7A+9DsoKJ444e z{_OA@U;6|36rxZcwmK2vqP{(3;5Y{Pnt|VWIu?~{C2yN__Advjd(6NnQ zzyD){6Xy*-Fvy%BjfI6Z4LuSJ-0d;9kG@p<`Wx7pcVpAtA7RHEr}W<6or1UisG*wI z82BN)bq5bdbKQSj9=z-VY~A~Z?~ZoW^LA(hpL3icZMI7d3?zfS$s7``ojnHsP2z0M zvpsmLfgg9A4YQpF{t8;zKD==AV?rWnw|&&^ed#pY5VYIAXy9)K14GXo-gW>OlG%J} zZ{1GqEOe{^f$C|;AeDw&{}@Bfj@W_7=(q# z?!W7Ok3r(Q@9Xyuf9C$-H~z=ruMa;kRK0WPf}8HY|Gg3W@P^&m+K0{<05RHRo9qz> zC-sn{kWU);eXgtYVdv+ym0!hvzj5#gwL+ipW`l#Z|GKn75DD&&ii6|>A~Y9n;? zaRZ}o%4b{%@WTfFE4SI`y^k9Bt+Ds6pVnU9jrZ=}=Wpiib}KPk^zJ+C-rq*3kdVeN z8vL(m8!@9!eR`LH|9rr97xn4A27Vlrd)M$QmZ4zMX{W(I_lD%)|J7+^2K)V?Ud&)W zRO8kvY;2kK@u#yHENOZkK-^23U3F=(a9pjg4KwAZ*v{~{gTlasOW){)%cPNO5O!R0VYlZc*xBDk$V8{l5xy#$RM?tpHQpCPLEHeK0XyT`EHF(WMN9t;}b@;ghxXo zplQs_5D#l9i=L%0A_kV2==?W6aR18&FS{_}wNlIyL|Ibo52PJTRgjWNAw{7|^|N(x zbT>s8M;v~NUXN<0Xnd%rnHnGN@0E%TlNuj-GDSf`;7;;8wVNWp)1z(WcM|JT#nsF`)vdL$UICc)TB$1sOC-?(SL%Bgi3YX_nz4`mM@oMkV&d~9JP*fD_1RFRVrPzyihO9T{T;(l50Wz zDkEinOIztV_(QCe^0PtnaJdmg@8q9+kDiEs&~bc_56q3y=V@P8g6nR4*~qTTFVE#h z*iUZc%1U#&TDoSTR3$eoTo&rZ!`Fa$xN_6P$dwBtR|5H71B#W)Id>=WAMrnVf)1+S#pP2p_|+cwa0s$Vf;4_+~X@wobG>k)oU&y}jp za`U*}X?>O6AV$PBxV^QVeYLr;UZ^gV*mJL3U1+VcyEI=|UTjLWIj+}QiAG31L0lQP z%@-CMr7K3@w4?uSAK4y+;Ywj~83TkFY3jK0Q_;B2}Syu+@EV9y4QK%hhI@ z6ZDb#$at9B61IF4+8PhXM#Gd(v0De~@Yf6LC2C9Ep!im9vo}5RZPPUOduMa}Kh{8D zCVz0xOdivZUEwVpyfCFzbT4esGNDB{6OvD3ZK+hPV0DF+ay5`WGfH*pKm>_vpo%cg z6opv#rG-*`8%m6DG!doQT6nm$xP)7yI$<_&{)(U(!gKvLBl~GW7M8-={5&vNfI%yKnh4B#oOwvEpnfPYk8s-Vz10_eZHZ#V!Y>aSOn1#Y{*P$?}nSsHw5g6S`!8G*N z&ghE}S)Py*BL^DkIA*4gz<=Z6%tVOqp4k%4Yz=32gflzCncZPt@l)71UYV^eHiE@P zI%z`?4HFjlL^q0!r78w&ra4{&h7-vWE}gtgn1IgH+=5ukTshJ^mP^HF(|gOKF**>@ zcK({pz^g^HMjt~|8O!DfwoI)amKIAD5Kd;R_IO(_LH?umJo-LnbKcVq$>n4T^U?(V zfLm*`hQqYN>-O&7xnpk_HkN0@=@6@H;yOeOfU|RCV!qOxUo0#%m`o7q0OGI1>HY*P z@Nw`f!W1QD-;KmcNS6(%_0cC`L+k@vs`{jop~L)v1H|FvCV9Isr^*h;M4xul7jpdX zn649HXHR~%i`OhZFq|ti3-oP1@70EBCsJC4bHA+j*h4yg#3b)*#|2~e+fHV+X#-Lh0;+^8WbR~0i%V5RjI}VB^NY1Y6HRPetW_6A z=4#7`&gwUQ-pCWPSjKUv`U0zF8F6liVc>|m`EtDh4Mu$dfeYZ1NiS|<7De4b?jkNc z2*HFLLD*Gz+j6;hBrF{(qY2b6F4ybI%MjmyNU}LbrwA;g+iVsH!W#)e@M?7tAx@++ znU@9N?Lm<=0U*}1wc27~ap^EHRf~A48$IU*@l6-=6ZG=@fjz~_K@i_QLk3$hxFT%l z!C7Nj11BREGsLJ?mJrG~UnSXwl?|d+V3NnI90^_#|4$kd9-BhMTdsfs!De zW-~SrOM%d3nSdRl4Fp_=*kPV%JlTu3BsWQl4=@FDP!dsKr7eZN(YNM^c(jN>KzqDn zlT?&A&isKQ(NQ8FF%2&fX3{#a^}Jl2ubq$y*hCYcQa&>$Gy~Z4SQhi;5@dZK94I_u z_!oF4q1H9NZh9_H8=l%M9b2kZ!PVqO85u+HpMi!K%uL#c=W@*&sR)<_f+nO07D?Fe zVqvMdTrc5TBj_u@Rdc0cxdI-1sfK5Sf`}Z+8hh@%V{x_zx5vyS(gCM{WAZx7RJ|J< zD(Z76>T{E3pE79-tAlVcadvZ9GNe88O+V0riP48wnj-wMT(N*u4Q!K>(OoK+ ziY2y9!M;;&%ptax=O@C%n>_l=%Xk_VkL25&;ziz>&u6as1PzKuHKJq} z=TXmuuFp3!#pXLX1Cc6_wTd#H&WFWq4&Q1=d=fK7Sl9i9epxV@EkUO$D~Pyw5H&`z zq+F4y%q5WV*dpmK>QLc)(h#IXdEpp!4kV!r6srJ)~H7oCY3Pv z9NgF7jI_AOep=L3<@Y9!loz465Yv8GXcD)FyP~^gqsk1#$tsq8c(mL+jBkeXQV_n} zGlM3^Xp?G34i*V#d#EDCo|kG67K0vJiNHUanFxfgUOS2&2vZ=V?FMLbIL$~Qrtl&= z?9<@v7?zOdqbD-kXp6IC_JIQ|!Tz(enGZ zr1c5ugxD0f7qXE>2eKpR0(cErh)5?Vb|PZRDMPN2E!Puo-)U~xKndF<`Mn%v#}^_z zy`a=w&NJnaJq>~jH%@t{ddJwCOb3*}M>+>d4m3hfd6EIZnyRR))=SY6D{9_?eum2H zhLRNqA7EZUGDdh{Cajki4jcLD7gZ2eircJPX~*tx+jfF}Vedk#E;ir5>2Nrk7zS20 zsmUJZGsBbZcek#5PU-lDyuJiDmu=zcU~cqOp&57P?X+18!Mu;Al)n{1|GU}VPQ zLw4e@TrWW~g6fg9#xxj^y!vfr_?|2M#FlOrATmw%)rNHDvm=p;=X zD_XJn4(Jl}pB)KG4EBd4mFY^kw%lMzC|}8N^U7FIPti(ohSZ~#QiYfT(4Zw-xctIFQW z79uYdBQIMhl!9c=iD~GrILL<?(4IkNe{EoNs0?%C7A z5vIDGM}4;S;8=~Pn1nH6Vh3t=nTEob0&G}dW0sj$i+EYE;t~#IbL2cha|)#$v>jv_ zZ6Zjk0qLPZv1QPeu=*>QccCTo%@UNyctlr#s7uK2*6IEve2WcpzMrG|(TIq0_0?i& zH7*^rvyYTf;Naahdz4&ZkEnl zqf3o(reu^1QOJv{%$^b~w7V$THQZpGR1Ga9xhnC$V{A@cikVY^B>QN!_{x|5`Z9Pr zV4l)VE6N%*a;vR%tEw50tuamE1|hAmnb4>I(r|qNPZLmC4K;G&2QGkfJVNX zY~1OQ^Pgn&3-L2jEoa&Fa-LleT5kF7GbC2*YK%_p}Y}i+FG{*>FId?)hHqoaR6vQU^H2MhW&)2_r=Ri^mEc+ifhG zulwyhL@|pci^#wwSRpGoaE2BG1wyh>&Tn3`-^KxGr^OJ zjS@{nj_2d%-6>Azk)c~0l0c6Went}%5APgfSvTJ|0*AA4ic3$ugae&QaKhpN>mybf zyoWPtC}j%BGmkLWeEC>ujuVb}_@v)v*f@?}P(LUwxk`YeZHe6=y?u$o)S-th*ASR_ zJYe_UqveLif6auKNgg=#GR zob{}|j1RWkeuO6oyP*nZwnAj^-1}OumjX1N;NxXtfg0UkTWU97MvleJ1mH0UjbXcaB?Tjw@w7 zE&o$&$%?!)`iohd(8;`Qxz=~FBW9N6Y`Sbk5)G?`8zgK=oFRt)0qPNfrwj8>rqhHd z(0H{Z-OXVXQ58qFSCg+aQAH^GCq}jvjkQm4dh+u}b2r%6k&MBJ@#hR4P_~kTQH?#q zG|wcq9Ob40!su~V%y;M98r*^uG&RHJW#QMocp(fax+{lbi~fj1@C%^Yo04ZP55xHNs5 z+zWJ}TI54NTs{CAsc0#74CeC3}-3udq+zv0Vk@VuY)v`#O`eZc%8>Ue^LLq`*K|05&#P? zk~Qv9O(pSS9k%}2Zk|EXMOkrL5TH!>If%zC6urmh>yGpD zf2JX_33_4tjqN05IN7@kX-*ev@=t$dLu>Sh*M;t<~Y+!5g|?#xxN!(&J);u!Jc=5-7+mb#N!J zxYZZ%e~Gh%w=yZIlhmzKbmWc*2NF0LA!mP|O^&lNb|>`DT!+07b1=;y!HVA9mU)WR zPk3Eim5fx&*qJfK00^R}1lV^&gQ*bn7nhAmsV$7Icv@MQx%pjrE3RMiY;giDWn|p3 z6w1i-5w3?*Z(8gz(QP`fNjG{g^xANhScGqnB^M?_(0~DjbA|SksVFy2QnxdR(r_ji zO%R0S!DP_zAz1?+WPfK$6wazOw}++JtZ>YeJCB0*x026SZWcPp-tzyMY}>~nb7B36N}k;OYr9k^MJ zUP0z_&d^*D1kOmuC5U7*F0)v4gzy3c-UT^^k)>;P;H9(deAcU@)|Ae~B(<(^5y%a& z&^)a6NGL98Ze%-svv4pcLa&95jop`Rca5J2N%mFzFJ}PzV=#^| zhx{>4)E{A#HUm?P68-T^b?`?-FLx&czH=uv);4wm0(q84v!BmdxDHv>{h|}Yr23!L z3k8_ugJeMSK%y2ZIDBHB_7_ynZ8tmgADTz{}A z>HHzi%}_48Uq~Hk3&j01lg1&_DOeVYG?mjtnAmuz@!zQn#2h6ngy3mcFeg^TVMs?w zecBA50wM_x(psrdVaE|ADPpo`Z+-D65f>Kn*tGMS_+-=D9W@DXq!P~OiHl=NO?Z^C z*?hwK3U{^|`S_r0*_13-ip#QO?qPG+)H&@!I{@pD5HQwS^MOhe%5;2TP!X|y%(K@J7T@orhCsa zEFa)g2h~*JELzY5bGQLfiDH936w*Z4rjfG=Q%B9j?$kX zg&OO~87dBon#e4qLEt2E2zZE2m=w^w@aywx1jMm^v`>78GpPr~9#oQ~K}>M6Ya32k zOmy&(xLDFD-pKcJ+)naFm&0QL{R{QHoLG_RVVYo4Qjb_;agI=@8`u=NI7M5W43kbt zmL}}M6(gz>V4-G&)UM_Qj)})PB=`RCV=AFdG?vEM7?uEqSNce6Cd3K4T^Twm>(a1ve`ph zO&BcwMB3jZALgrmVm?TYLDS$Qx7KA^`-WSILd!ZOC?rHgYqp;_mPwA(0?I{Nw_|h| zCNhsA6v#7F$u4zzDBf|B<=fvhYsR1ZDFK!aY6sRRif@G^*bCniBeA}{B)K`<9>^#B zad3c35Uz;g11v4HL7cK1M_n#2m8(o$vbS8+s_dz8w!?#VM9%Y!uz`I`3$eW2Ek-dp zxILLC)kkOGCsUGQWS|LJ*}V*`TTNI-ttvO0=6*pPmeeCjK!lAtNwi{p;~(#gO;~$! zKqE1&#X>Vk$u_cbN#_9Bp6CrQ|-&54I9hZ8NAr49;%(kS4ScoYbb%x)%?5@7SEhh3K zUmfh#udY=~!R?U;DSfOu8IG}!zB*dw589!xWjVfsC7v#bGli&nwkY@?a~uGObH9*I z<{~kgE9Ph(KSzK>{i8*86bKd}F|P!2j&38^8eSL9V>c3BvXJyf;8f2Xaf4gXn{ZxF zYN%^A3gK`_1PG!*griE7qs3Q`+bZGgOS1Wqc&t8=u!MQ?FHlHsJQ9a-DU6=6&HXfu zKxcNs3RD&ixKhLIi|7go{|@!S&I^6n2Pt zRXSqP63-XPi?gJXU^QX~1j{Qb7TwcV7|8R?rjHbz?5JeO0j~~?&0Kk*+-&67$2P)1 zSP6+N0}<}cQ#wh|CQKf$6>ulXg<<5bMenek_@LwPjP7oBnB0T<3E7N$_44fYB1c3% zn-RUqa^Cb$98s5nXx(~&K%;8>UfcSOd2sa)7Ne9lUHKf+$+KeT;Cw-_^Uf1Drfa2N zu)4-4>oQ71>04sW9J|Bm%=`wy9Sq(FtCjy0Fvl2LN%K3!ih0dy`Wjm zCT@0HaHu%<2W}m&F4e@C#lPkc(j$KSI)T&vZA2|G-_+f(VY37Z+VT3`x)}p?;F-Z57Fw z%|EP1+XNh_*;K6K-!CXKm-F(7M}d3&@_9)mvFh1!I2Q*J@@%b8pCe=^vLksSY-{0F zqm1Y#*(5OL=4!1O64pd2D%ls2-r}i^-UTHGqV$8ia0&N@`T50VWa5b(wZ;0cVi^kk z@_f0NG;%&dDf zW6Esy81XBw~qxIZGlaPU|x6v<5sbRQ{tU6)3< zolCa2aB@BM5LqZ@Qo1EfPwQTcmXOcXMEG}YekH~-cmhYZv^SkBX zcpSE@^Du_9P2u-gJ5IAV&1u{4UDj)F6XsX2`RH)cnBOfz#(CA>}ctZyOP>YT`ni_-`9MAMev zkB6@SGj9jwF0U1CALF^=V3AxEoyc4 z%#UHyDxtBZd$_cS{H#P{fP7TbEkR{?emgE>kG+ZzuprAdZk(~s8z+TRcRMg21r^0Qu+;^VM@tyvLZlkh z99uQ&J`!qdF`UPD5nN58h}BF*o@fEvIK^F_+Qyv}*Gfjjn>}-wk^>rfp*>KKD^@0} z9iyULkJ~lc|3G!Z0(f(n_G!^tFWsDrvB%N8WXN;eik?+ir_k`FttJEWU0qt@JT5a5K zTU<6@uT_cez;@WGGQnt1H}chGxE=9Pr)5e5%t)`pt0AXF(?r@R=UK<<3Mh-&`%tkP zF%KrxWitwl!Ds=*c7FHNb&2w%uK8KrpqZP*G!4G7W-~s!R zz;d01-Zs2Q@o=elq*Nb8+I#*%iQUO(0IoB-)&lX*r^qFjz^M(R<>)ta1WPr__fX`p zkIV^kkL05RdJLy?) zhbJ=E6sum~HU`96ZItTGyg!0zSl5;od0i9Qg*pt}c5R+*qlE<=FXd}A-QpHOe5qbr zDl8x{O615YjPzBk36jf=fUyB$V{r+B`VP{E5bI5pF5^*tn`n*L6JJCs*+^@o1~JZ$ z^e3Rd^}3{k^p;n9nR$$rcJa?$g1(6lj20dhXsq3g|*P&7>N`1%@>?44-) z(60?Sj0lGByU^bJya-`o1Dvsgw);|$HwXar*|1CfcQR7TjhclK{J{bm7AFrwR3~Bm{aBa zIy))~2^2BbrxQ=HJGFDp${gJkJ$g4D6qJsIT>82Z^hx(Df*Sm=3pl4GEa0GHNf_D2 z+r$g`6kPx~iMEb|Y_3l(R_kD=hcRJtwqiKTu76?Vf7nT=MAPajL*lD18|@2ImrcIrb@_40aC}ido(`Y!n$LGTTK^i zDkiGYVO6=EoWwlaLOb#h{9)4Goj`VAtQn=OLMb;wiaEhvoqI^Gi6>_CBBSd;a8Hrp z)p3R`Ndg@v73Ur#bQX-dJE1Pa7?_;FALhvy?PW2n=*TIQXbSCVBS_Aq-3F7$6q@rU z8cPVBX3XkRht$FS0Bb4}+d>@y5_uT0I|xCmL1ELRZ}G62TQ_a>wOG(|2tKS;3yZ8i zibhsxYXmSebvrp+xytqyu1Xmet~Mjo{RYkSknd_US|*^*n*t*Xb3kb&gw9KTs5^1y z^l(6<5vhn}fLMr(wq_@hKp{qB31=)DtkbRXks8A8;p!US4x5@=+imxuz zX37o_%cA?&lh{Go*u@?@2@(QPDC)bnkCSRkr+D4!h#Ywv5_zOp0}eJICpyXt#Cp7N z!5nKd=g8q>cxdedGSK16WY68utW^aA&-_S`?9eU3!ePZ}G}_x29DZ+WNwJ`_)gWMT zsOAIWNPi0pK8;d4ovlmd7}I~UvZH13%7|xGfn4PGuzHt2J2cFFU%#>#32sQg8G~64CG?PJxRnwbQ;~w8czab z?=;?BiW=Fp#1qxnrA{?hF&c|)+R3{t5&$}JLRtK^snYGuk$jgel{=;(pZ9Tt$2#vm zR9uX6*7Hlqd^Q?3mWqpRA_)o2FR?o=`-2~1rr5$_GS{dxa`>FPx6oTY1*Qwe|D4{= z^0&AkK45e86(QetXIrpVK!b0OX<=jqXXp!JgfzvzG``sn?l8_)kG!qIL@B3D#vEpQ zWU1SGTpoAU*kuIB1yEh3yPzj*IA~*FD`Ci=9n|}2zz^H zVnjfYWn-V?15zy;l=j;^QD|}W5d9Q6$%`BaJ2^zExW5A{M5sZL~j zVa<$&V(;N2#lYp;d1{%obgaPGF@flEYtT`)XO zBEWK)HYaCqGw}D55{Xp(c~V`rsIrrIHO4hN{MPC<;Csz@)r?VSb(ypir1XwiY2332 z8O_QcpxUF%$(XbV7%Xz4UXB>}u^16yS{qRY=A0ms-5z05T!`QuPMtu!Hf?yuis)J! z`KYP--PrOTJCV!Vty#f@nZvnBorV3iomrV>N>kajt3?wN(bpJTL9>?m=meQybZoL~ zX$B)-gimuKccD8RZKrL>r1wsSu6`XG_pZARV2)KAVDoqaX?|gPmOs&5}BqkseC$ zF|cFuQ=J)(T||#MxGO>Hn~=GcpxoL4O8MggpN&uOm0+|sY(lTRGWvN< z^ix>|_>?4s2PWanyu<&(52Wir*U8mV2s=c2)5!@lcv?O%{v$ikAFKSW>iBvZP)S&etgWw#DYFCFk5p zq)LF&-7}*_C?x~sknJCtASfiIVbLU__RxXQXnaxbRs?#%%D3XGu zgOyQ*UPF19oDGlYJ|)QBtni%{UpupAHep%XOJ-F{G5|L! zVc=w**J`c;wZUl2uJBq^(^?s6fDTg(^mJnyCt5PGTXXvpt?kDb4zILAd)rrJp!U`h zsnOX`7z>}!ZPbS5i!^bg?6`J95$i*u%y^m7lWA_ScH6ub{=%HJF{Y`eSD?q$qm=_7 z0xzpt%D*{h6_~Bn7M0MZBgw9Lv~~`K%Fx8j4$Pi+}Up>Xw>ij8WEQ#vzZJr&? zPe|4#{Cpy^sI?_v7fXYx@E>BB5No3c{D8@Qw?+NB=AScB#E(Uy-Tv(n1i9~F99U8N+ zfMl}l-529zJAE1V0xA(==ptg0iK#`Dw0$I!3~QymMUI3cvX=d!h)8$q%D03_*cF_P zDkWhi-vDo!o)T$1J15e32m(Qpu;|WHlOm~7xW#h{_CxQ{NbRnuF>}tCOcu>*orgCU z^5kav4qb9dgq5A!P%72)$Fsdp^(weL2rpe3HdE3IxKMo>kTwJWta^Nrvimr#T#pTt zHXM7OEu?gB@eowHdN#)-32X_m3aElz$Nc19@06TfY?sJw3F4#Y8n7%uI&}&4!`AUt z6{u$>3JN)Ku~n$nBEtFSoru%N9>}90>zgTWZ0vB^=~C=u*3uP(~GPp>UdoV>6k3dx$?|%1dG#SI87G!*HNA|dIz)ndhA7< z4U;S>Y)Y|&m|P_@BeKatY3YvJvTtT$P2KAxy6V7EV$8VaJjoZhDWbhExMwyGqb!!I z=+N6C$0*~}N?>tjp8hm*_E_KN>3LMvl}=|rHQo|0K!fC_ay5ExQcL69>voIRZ#u?x zc|(Q}5B&MY8AOWUKnaA|Xww}Sq82oPjxj~c){|AHN!bz}DN!0jNI;yAGaD~={TW^C zx_Gk3^erEIUkW$j4;BmUrs7RG#h}B2ShZ_ng~M#YX=~y*JGP4C9;8k|D$8b+b{6T- zqc~UUNqZd_f-~VG!{!b>v#s6E;Rt(~>D8_f4bG!;%B@$Oni!8AhsmAv$o^O&a>mm` zf<M&SXiclB(yS)>apRE>i z_FCgx+=?0lu1p-7V|5};8mTCu2xaH=H8LiViUWEJa+fR?ked>jCgJQ~ULqGwq)y}{ z`8UFl$AMV}fP2s8aR1B>GD&h5Scvl7fNhSW$yHxNsj15_y6eJHvpE*ZP>`TCFBS@3KgX2S}YuAbuUsRa8lOWuOl!} zsRS)rXx0RQO<V-;*dmsn-u_`KMZbLCbGz`5i5PpyiWVUU1P=Kz|o% znbUGi%WJgUuH`GVyjjaPX!(m;zE#V&Y599v{=Sxfs^u57{DGEFYI*9#(w}u&o}=Zt zT3)H;MlH8$d9{{#Ew9zGpyjNVuhsH)E#Io;+qC>WEq`Cj!!MNnSb3LT->v1lw7gHt z`?Y*P%P(p9u$IrbMA}=gWlqa6E%zqMdA+vs9=*2m-Fj{1AM5plTK*3$zp3S^FVgYV z@`gk?r`J~AuGdz+L$9s;1HJyJmX};A?OVB5udQ6vYb%fH^)W5)((-OCzpdqWwEU45 zOZ(5$awSo|Td%GBj9!0M%SRLC`pa}aw7fb|zD%!QuH|i7*0ubjMEQBWw(?26w(_#e z<$YG}(`zeVsn=G%S+A|U{YrV>%6s+N$}j2l!&<&zqtqYKa$};rUazfuxn5g2r`J}# zN3X4XQm?HX9+mf5xlymJe5qbfY5A%|`M6$NIhK?5tlX#9H)?rTqWo>Wevg))Pn4&R zNqc8#`Da>wQOncD<-V1#)N3nWuh(~KnVZo5X?atk{2RUgikAPJD4#ni&s%vwudTdO zudVzOz5bk*1DoXeK`noBvs_!bqSsd5tJhW*wn+V1Eq{HhT)$JxKhW}{T7EK7KBm`J z4qmPO(egSiuh;U{MEMrIw(<}4+RCr#wUrmVMB2CVC3j@N3?u0QJ$Zd z`c}SKudV!`UVli-hZ5yudTr&vwbGuIXX*9XS{_W4zpmHs)bhbZ`31eU@)5nZ@=3k6 z^4ja<{Z`(r*H#W)FZWN;azmorrq@=!S+A}9xL#ZNuwGmFs9sySep=pV-yJv`q4&cPRYrTE0We4{Mp^hm-tol3z{o zvz_>}BtN%WekI8-td`!cmL4SeizI)Nr2i+Hei)uIykw=}rzHMN(&Hq3PtwN|jo*^^ zDoG#K?UZ$F-<8BCiRByw8ym+faOXjZLzuZdY`^$`FY%74vWw| z26%0NAHib-_iT~d;o>y>Z_ghZoWfNQ98$mtUq%0%68+>~ zIsAJn{BYYJE_S|sddNZz{f&cCK(V;1>F*?LWaF5=gcTnH$`De@R z;H4<3sy+XaQ>XaON9Y0kZLk}1$!+LQF0RAB|N5{0TC-|jK5dHOU#3C9-zF(s|E->t zhj9O2yywpzp5iCY){fr6S29M_PwT&egCc&=*jRh_>ht$%#Zj%896$U1O5*uX=<}b@ z=g-!L>3JGwd%rz@6fhdsb@-qDK7YoPmRtnSmBRgN{V+fsKm6yvtIvP;45_h1H@&~J z^|zI;#kK$ZE$gSa#x3im;up6|Y5&@Dc6}Fq_|H%5nc`a$d!)wcQn-JU{r`E~q33P< zr}X(LeV!M$dpZb4yx;Wmjrc$I{DCO~2U7>Q2zKi_lB;MR*!8>c!+-vspP1rX_xyy^ z*!z4b?O&TeyZ&wb@Sp$U@)Y0t;K#&iS_=2CJ!j?Lu|A;>S@EuZPgc|q$M!etj^GWt9#bj1*z_96NF6&cUJ za!j88|6b&E9zT=MZ_($Itb||F-aqmYfj;N3Ja7Ld-*51= zatOWKGC0+8YY3a#_!R%<5PEVfwf-rA@fGp7SIFnSk847+h1OEIB_zN=NBQ0>+C#MAe@UO`m#1;(%t>gI| zzz2i%!M(~q*>f8e{`mxahr-W(=9E?ClGu&`jN22hzlE=Dzs@tfb$;IfIK6i?(au}B ze(O5<2;gbo^{kgIkm@v;KTT;e`bJ|5x~I0)7S_8~~?thr$hCzd+%iNWdo) z9_*b$ixGXCR`^r`{wjqpDcta6UEy~qe1uyIg4-GXoZz1m+{SI>MtQH*w{g2A z0k?6xSK-NVyHDXG(*5A89lkf%FYir$??3`>-#eIq+xLzr-1=|pY6mE6}!{8Ty z&7k_*cTRE5i?n_f@N)tG^Jfa&_?0`gzUg<*)cPOb`g-9Nf1&lwpJH6^{S*W#dhd5O zOfiIHYx=uG;btE)it>JikEwl8*{b0E5KO2YvnP&8Gr_N}qyD%4{TIObdoP;eo7VpK z75;?{arjoqpH$!U$5#I?g`1y+!T&_zX0N`E-x35@Vxgw>X9vT9{}q2?n)vU>0jKwx z-qzZmSGd{Ttj)U=Zg%<0w4L`U-0Xx#LBFGLvjZA@$LaE3v#Z(s-VQjeha?~MGg{yD z(YCI>q;S*I+I*Fu*PwO|o;Afiw0_XSTF6EJ=n&1LgD65VBhs7g}-K}v}5b`zboAQ3T)g?f2Op5 zPon-Fg`3|0{o0@R06wC>{o)TY;C}+RtpUIOUu*lx{%=ReX#9uIoZ{;Cy?X$s@iaTH z_5UpjH~YQm^DaG0>YJVFxAo;e19)10-m3M@u50i8l)}y5$2h;Cv!#8r8{0Tvs&KPI zSwCN;aPx;Symtx&Jo+y453={ZNa5yZbF=n;0G&TKXq5|21Dx71yHHu{|CPecUTEuc z{JivW*p~sH&4B+L;PhUzkJvc;uELY}{L2bAzn_iT&)>sFNSl{0GJJh7ci|M*e5vlc ze^L0`o+)rpIR1M!7$@qF**k3f4=UX3?lzCFSGd_fZ6AG9;pQjzB5l8djY;jBzny*W zuPS`+hAFPOLF<1);pT62k;31C4pTd3C%!}BJ3+_@ZvI@03cpR^NqqaW3OD<*Ni3gI zxcTkbx_TP~32NW`wv7L&&Ep%jzWD_i zzI{aD7jKy2mhIVZD16q1#?I$T{RyqVU+bGc#kUkbgMp&@ zm;8v--=OQN0XVg9_GH^Hf2eTtugPmW!&pdE-|V^QHvfeRH@{1R|2E+C-Y1?t#r1B` z_kN1uLGXcR2%K-?pKob9X5X{*{9_=9^j`Dhvvs(raI^m!{KE=2e?yz!!I5-){(Qix z{fBl=1@ve2|MQ5z&Ax5l^}7mB@Ai)WQ+#dj zT~xUFolWxHAoxv%Ke<8bTYvtm!p)D;+BpLoliD|bR~w(dP`LS3+CDlL8HW^tWI9wATN%4O0xZ_53>uPtun!1AcZ2|NM7a-~2wY4EXOyFP8q8|AXzv0}6lJ zMN?eQ#-Xb4FKmdzKcH~)Td?}ySGf608h-d3KAhI=N1iY3e4gJD1pfdyjgR?{8Nc)* zY;b~`pRkSd6ACwfW_#~$AXutzehM~jFSu0T=KpK;=M`@Ld^SG6qHyznF+B5t!jtPT zc(Jr^{vRd%u2(7C{5XwIeic5D`q@IqFBiD^0p2_y4Gmu*aPtqgb(L4R`PtdJdXvJ< z|M8Ia=Wi5lek3*y-vONF<#QKIam}}A{d2CA_f|Iu9G}B~R|8JPAk~9w0H^v%I`U?P zo8OCl@23@R{*o`z_P>aQO6{1R<{oYTqu3w>H-F&+3jdnI_g*^1kP(HSHYWAWpAMhN zf2WKKeBI6|zCMfp4T9|oH~&S$Gd~A7jq`)gl=|mr{dZ{nB%l8Yz|R?ccJS~Ww`ff% z{%@`Snw?V&uzhqU2poNv`K#M|Z&JAVh1oc42g0QK$^CfNCV`uO)=l!-V3)$@FOl~e zKl6V8PTzIU3k3d-L3!XkTHoRrY`(s$aPxC=If6Xp42aGf2p)z-5~W1A1)}|{0*PWtp&kvDLl#N z{Jz4I`ik!X&inlwX`k$#^modXythTZQ+Sept1I06a$kTp=+O#Kr+GKOe+(o4J*jYu=P*3~`JGZfsh_!Mm%zWXVTzx( z{#>i@q(16ig`2(X*3ZRfO8Xmi{9gw+jhp$`T7M4i6S&1kT+Y1; zg2RAQJ0DW~e2&6jtMx5z$Hw6ig_}R9_2>K>rG1NYvG-0Z+~Rl6)PDY#{ZfCu(%%>A zd;dw{7O!OQ-3rErzAMT9|AfNLKR>7K{JO%EbnpubxA=gIwEp@Zm-fvs_xTE+2AuFr zaOW)wk>WB8SDJjowkG$ZXK^)`R5@JFwg z{@A=c4-7VqTT+j=L*W*8g>A@x_bS}{k2fm(TY%F#vA9#i|4%YpD|y9*FO&D0|NoVG zZyE5k{rh&UZ+_5j|0>+#18m$jzFgWjzy0&I{nsnp;!e&}_~kz#^^@QGYK2?;l#ScE zo20(Qe_4MnQFu~L8CQ5xFL68IY2W(}t#5IMHa>U1Lf)I?Ge4{FB!Bfig(vlOBR9)@ zeMk58vvnLM0H^hE&(0}^7+zXYxW$+Kyw?Ag!k<+9X7xV?L{04^^+M*x0rp5*I3H7noy3%YL4*7m;wIF0iKJEs_8?QAFtJjpliQ@F)3j%z#bQnaW6m%{P#Cn-{Mh0KKO58j_SAiK~(^!ekS$OQze00oE6YJ|2?Sir2PIJ zz|;22mU(H%;v;Nb{j|ZyrnueDNb|w_6rNn44=dc_V}C{Ke_=t|PwJzBV!hdDF3-1|a7qeJ2{KDL zD0oy_a$AJqwFh_X%Oh3uZcMbyy8hM%_g{PMO#V=KXvfaId8!c`{<%0nj&}`rzv9Ln z`=)mV6rdu5!e2LDELW$duG>4kbJtBbh2tBs7C2v7r}RWW#ItSN61SCj{ zWhFU)tR$RP)iN+mHcD7v?pQ8ABWaXUlN0Pk=|{P1IIsez%rp` z>PS(YGSDt#j2*U8MEXO{0OY0n9z*(IKlhPKa*sqWlzS;Xn>S_bPD|#^osQDdP;PaK zxssPwT!yFot{i0+i{%JK@*S-Bg=%RIX`AQgOZBLet~#Yv>z6#CNJq6VTyB&aIFYux zu!xCSE*>d0kyMrQIk%+4qv7hO@8`7QdTeL8I#)VIc_it$xurUS_vUpyhhrPZHckrS zaO*iclh;`0nw6Yhy6pT+kh#<(@q9LGd}k!Gg1O$TF)irs*1oK>HB&~Y^cPON#aC29d_dU`F05pbEEFj znjY!X6_Lew%^)cnflqO9mfVUObxcu?hK0EwE68TP3 zUi@T!-59Y+9Pk$rrYPko&V8^1tDP8@RgL8hJ&k1#=UqoxAN9K;Y>^~3MxH5)xiKw{ z2>Ua(+CwCPstyuYvB^Wa%$HAtM?y}=I7^V6rC3(DWS{faL2pmW;RTdq69>|AYQB02 zoJFZx#32blDp8KnY@V;v5iFJw&L5VP&+B~5cb<4H@4QIHzJh$iaG?S@KqM1j%^Oz2 zgDRozTEzKR5YLvDn~el^COi<$@v5gP*Kw*MiGvw?_pWUEJWBLAN??dA(nt%AC+81G&b@rBgdp1T|i-K}P`IJhymYr7icKjs8<8 zf7h9<<(OTj6_dtz>&b-Edn;S=^uHdh1IE+aAMF@*N{CA5a2js!oE~xvlkY@zB1Ceg z2@>f<;fqEIbl6r|3>QZg7Ts+QvZ|9?uEDg5i{pIWxJOq6s zR!tTcO9fqj-l9#Ak_2YFo@CT29i8LIot~|cwY(MewO9=rxdAB+P9bC;VGH zT&Sm^;Bu|O0`SB%6g{-0T6TMOM_qr6x}oRoloj|wa9zy@bGKY{tO0(KB z;(H_=YiD2K~-(Z8S#L?#QUP^&^YAAE&IBpZ|7r}p+_1+!)a&gb~tT)JS0{O zEF&L64Kb88PVQVBx3Jm?HQ@Y`yTlQ0Wh7*BS?9+*1P%f}R!-{E;(|u!^LN1iw>coe z9jM!u$Bi~&=0@l_X|44YO+%n4I#=Zu84j< zh7s*-MH&NRKgKagta7jcD$5wP;q_u%X{&xC$%}TU(ekZnkX@Mbhjg_9o`p`H8dVwS zgs$^wO?B6-CnLFiqv%kz`R?>bFeO^y1A!0f`jvJb)!cwas@$^@3cr-RHS#@#N z5VU=!?(b=9@oC=1@6z__W^<+MbVwZxIk)M0=8$QOACKc3QCWpCSBw~{>daNBW{{9f z>^PuKrvWho5Q&$rU!Lm1eL*{J3anHlImgLBkBBd#OZ~`O>v=V~F+Sf%H6QtdrsXgW zt&=q?Vlzk~ulUDJ9N71RqIgW;u#-W`ata0y+hwoBPR;~Mp882rBb4Kq1Lo&@L54=8 ze1%4|vq>kmCqfc*93YO}Viww0nnyLD^q>!A=QaZiS@dW%R(!fW4%L*%XG zd4`CN2)-dA4Ydd>rk(4AY=BM@_MaPgj@#RR#D>nZfP)3e$uqM5+^~B4Pk+r)Sx$C` zD&)3h@rQu2w3E>4BgD~=&Pf*Anp^kLN~it7qK&dlC-zJ^w1z_n<9Zx9RBs-NaZREQ zC89$Mpi#y@ixLMra3Va2)5r-)#13s!A#!X~RQ;hk65~skt4$|Kl9x-fP+m-D%7D}6 zUBfB%!LIGEc($$XCQFeJnJ{|QCnTIy`GnoR(&4Z?rDjrycKHer@@6_2V4)6=b+#Sj zboJ?3mK&Jxh=OY@m(ViENwS{xNO>v86=gFKqxr6tgUU~Eeb3`-z2xqAF>^Vvjq28$sJ5 z$~oHfohSbXp>~KK5m)_ zhh9wiMlK4hm=Vr8gu>1uIof_lhdz0H`U%q}_0JZ}bli%K>d7q@i*A+Hvq?5^&UD4pGoRR@Q{o7hn+uTq~Hmo~BXLWM8(6YiealHiuql*W{T z{@zUOl-u%*AFwgn@o3>(qlWmF>Ksn=5#^VSL|cBKjkP0EDYWeUrzm)*6@9YB$hlke zq7R6;mFVlbm<4hwELV&57PP3N+{R%hV$d@@3}Sn@6d~t0L8$eT%QSQ-aQ$%~uAD=JT{ct2hp= zrGs0;{B6r{E^Z!=o=|!H>Fp?+AR2wc%oslGhUc|Kuo`)kpFyY?(d`z;OzezQbzlq! z`)qog7(*rKV`Gh}&1%#=o6q|m5T1Ye?nA}JxcYH^DV$$I0QgdIar1nweiTvE9D6pu z#0FuGX=1Ml=Vpt zV{uaZ>dWAVIPcNL)H{!5+;db8Yq-5vfxBOZuY=8cKZ*RF7enWD!f~TSExENt2kERpdLg?~M~_9{U6HnjDYi58mbz5ThiZZy;}4e*Ze9-y zP<*q1#hP+IN)xfzsZp9~ypL|~7{4G}^l9srPHLjkZNjqH$V{5go->}icmZ>8j3k$} z&2&n%Dp|Z*qg8#JzQ$KEUq&h;m-;0Bxj7EC4>?^(3-6Xr(MUU6FCkolL)R$UAyc^+ zp>cMsIhoc5seCwUt3jv$P7v+10IUa0Wo$Z;EGPpblPba=$HN288=kujl^pd+s8GTro3q@ObW#amO+P)0ZVM`Ck4M#l{u zg^!B0sZAj|>K=&@$KP*l|b^B9~I%g9aN%#-Ri;l5BQ9Gk8H`9ZY<*Mu|! z&oTabFHeDw7`jmEfRwF%8Ri{9Uh(Vagr-myQgVwm{f|n zi>55L8{JeVl~1d9#t5kYj;Fau>$C_!;30AiSd67-aUi0R3vZ0>r3F-)e{HT!Vi2d! zGfd}AMH1tA(-Gl4=q=%=H@m{bEQ&+xRYe@z+Xo?l9Kc(cXH~5yuRRXI#I8kt0Hke* zC30Zy7L0zv2az!tn*}H;La-YcsgBATN^2y3iEs;M_hv%$mc((kFeikxHCzqV(uGR1 zbiwXoCMA*-@++#J?iv$y@Nf6!IOSrpk!#mmv9ng-DPvD5+KMvXkgMxlsg0#yMV>XU z^s&^H?vVLYEJ3xf<%HqXVCfqoB>x_*CUK(G9e)DWfS^|1gKTcj+J${19Do~0^`1{A zV$0?lGPNz8O*9Vs<|F@$++>GD96H&CYdB-=adDB(UI3l+UD5lawZAsiX4ZgGI6`Rq z$$86}h~nM~uHs~laCGdG`=IQF(>=SHGCS>>O^MP=Pz>_nYB2(Ln@P+QNlO&Wh{Qh& z$BuHKMn$;UdGPTp-;)6UZsR|sG`$9yytWB(f}V>zLMLw9a#VK<({_82$4wo7xPWYN-0 zZp2;1k~MTKq#S^H)ofRtJqnC)#%6c5=~g)!md(HO!X=HOo8Y*%MU@Ftu`rLt} zrY+EP^FE9ZVse9|!&d8FdT2{p_j mb@) 4: + piece = 'b' + s = self.blacks + else: + continue + if not ((col ^ row) & 1): + self.checkers[row][col] = piece + s.add((row, col)) + print self.whites + print self.blacks + + def __str__(self): + board = '' + for row in range(7, -1, -1): + for col in range(8): + board += self.checkers[row].get(col, '.') + board += '\n' + return board + + + def move(self, color): + if color == 'w': + s = self.whites + dir = 1 + else: + s = self.blacks + dir = -1 + bs = set(s) + for row, col in bs: + nr = row + dir + if row >= 0 and row < 8: + nc = col - 1 + if nc < 0: + continue + if nc not in self.checkers[nr]: + self.checkers[nr][nc] = self.checkers[row][col] + del self.checkers[row][col] + s.remove((row, col)) + s.add((nr, nc)) + return True + + nc = col + 1 + if nc > 7: + continue + if nc not in self.checkers[nr]: + self.checkers[nr][nc] = self.checkers[row][col] + del self.checkers[row][col] + s.remove((row, col)) + s.add((nr, nc)) + return True + return False + + +cb = Checkboard() +print cb +keepgoing = True +while keepgoing: + for color in ('w', 'b'): + if not cb.move(color): + keepgoing = False + break + print cb + From b7b8f9cccd4acbda9f7e59ee99c9d2ee8173c65d Mon Sep 17 00:00:00 2001 From: Vadim Bendebury Date: Fri, 11 Mar 2016 08:46:58 -0800 Subject: [PATCH 02/14] python: refactor, move logic in a separate function Signed-off-by: Vadim Bendebury --- checkers.py | 37 ++++++++++++++++++------------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/checkers.py b/checkers.py index 46fa125..de94676 100755 --- a/checkers.py +++ b/checkers.py @@ -31,6 +31,21 @@ def __str__(self): return board + def moved(self, row, col, nr, coldir, s): + nc = col + coldir + nnc = col + 2 * coldir + if nc < 0 or nc > 7: + return False # this piece can not move + + if nc not in self.checkers[nr]: + self.checkers[nr][nc] = self.checkers[row][col] + del self.checkers[row][col] + s.remove((row, col)) + s.add((nr, nc)) + return True + return False + + def move(self, color): if color == 'w': s = self.whites @@ -42,25 +57,9 @@ def move(self, color): for row, col in bs: nr = row + dir if row >= 0 and row < 8: - nc = col - 1 - if nc < 0: - continue - if nc not in self.checkers[nr]: - self.checkers[nr][nc] = self.checkers[row][col] - del self.checkers[row][col] - s.remove((row, col)) - s.add((nr, nc)) - return True - - nc = col + 1 - if nc > 7: - continue - if nc not in self.checkers[nr]: - self.checkers[nr][nc] = self.checkers[row][col] - del self.checkers[row][col] - s.remove((row, col)) - s.add((nr, nc)) - return True + for coldir in (1, -1): + if self.moved(row, col, nr, coldir, s): + return True return False From a0c7c2bf38a8feabd06f24fc2a6f352bdb08f4ac Mon Sep 17 00:00:00 2001 From: Vadim Bendebury Date: Sat, 12 Mar 2016 20:22:40 -0800 Subject: [PATCH 03/14] python: plays with itself til the end Signed-off-by: Vadim Bendebury --- checkers.py | 90 +++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 66 insertions(+), 24 deletions(-) diff --git a/checkers.py b/checkers.py index de94676..15184ce 100755 --- a/checkers.py +++ b/checkers.py @@ -2,9 +2,11 @@ class Checkboard(object): def __init__(self): - self.whites = set() - self.blacks = set() - self.checkers = {} + self.whites = set() # All white pieces, tuples of coordinates + self.blacks = set() # All black pieces, tuples of coordinates + self.checkers = {} # The entire board, only taken spots, dictionary of dictionaries [row][col] + + # Populate the board for row in range(8): self.checkers[row] = {} for col in range(8): @@ -16,11 +18,9 @@ def __init__(self): s = self.blacks else: continue - if not ((col ^ row) & 1): + if not ((col ^ row) & 1): # Only every other cell gets a piece self.checkers[row][col] = piece s.add((row, col)) - print self.whites - print self.blacks def __str__(self): board = '' @@ -30,16 +30,53 @@ def __str__(self): board += '\n' return board + # Return true if the piece in [row][col] was able to capture an opponent piece + def captured(self, row, col, rowdir, coldir, mycolor): + nnc = col + 2 * coldir + nnr = row + 2 * rowdir + if nnc < 0 or nnc > 7 or nnr < 0 or nnr > 7: + return False # this piece can not capture - def moved(self, row, col, nr, coldir, s): nc = col + coldir - nnc = col + 2 * coldir - if nc < 0 or nc > 7: - return False # this piece can not move + nr = row + rowdir + + if nnc in self.checkers[nnr] or not nc in self.checkers[nr] or self.checkers[nr][nc] == mycolor: + return False # there is nothing to capture + + # Determine the this and other sets + if mycolor == 'w': + os = self.blacks + s = self.whites + else: + os = self.whites + s = self.blacks + + # remove the captured piece + del self.checkers[nr][nc] + os.remove((nr, nc)) + + # move our piece + self.checkers[nnr][nnc] = mycolor + del self.checkers[row][col] + s.remove((row, col)) + s.add((nnr, nnc)) + return True + + # return true if piece in [row][col] was able to move + def moved(self, row, col, rowdir, coldir, mycolor): + nr = row + rowdir + nc = col + coldir + + if nr < 0 or nr > 7 or nc < 0 or nc > 7: + return False # no chance to move if nc not in self.checkers[nr]: - self.checkers[nr][nc] = self.checkers[row][col] del self.checkers[row][col] + self.checkers[nr][nc] = mycolor + if mycolor == 'w': + s = self.whites + else: + s = self.blacks s.remove((row, col)) s.add((nr, nc)) return True @@ -47,29 +84,34 @@ def moved(self, row, col, nr, coldir, s): def move(self, color): + # create a copy set, so that we can iterate over it and modify the original set if color == 'w': - s = self.whites - dir = 1 + cs = set(self.whites) + rowdir = 1 else: - s = self.blacks - dir = -1 - bs = set(s) - for row, col in bs: - nr = row + dir - if row >= 0 and row < 8: - for coldir in (1, -1): - if self.moved(row, col, nr, coldir, s): - return True + cs = set(self.blacks) + rowdir = -1 + + # Captures when possible must proceed, try them first + for row, col in cs: + for coldir in (1, -1): + if self.captured(row, col, rowdir, coldir, color): + return True + + for row, col in cs: + for coldir in (1, -1): + if self.moved(row, col, rowdir, coldir, color): + return True return False cb = Checkboard() -print cb keepgoing = True while keepgoing: for color in ('w', 'b'): + print '\nbefore %s move :' % color + print cb if not cb.move(color): keepgoing = False break - print cb From fbb341a0f65f9f5e874790662ca91fa94b2538d0 Mon Sep 17 00:00:00 2001 From: Vadim Bendebury Date: Sat, 12 Mar 2016 20:59:09 -0800 Subject: [PATCH 04/14] python: mode for playing against human Signed-off-by: Vadim Bendebury --- checkers.py | 43 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 36 insertions(+), 7 deletions(-) diff --git a/checkers.py b/checkers.py index 15184ce..eca5575 100755 --- a/checkers.py +++ b/checkers.py @@ -1,5 +1,7 @@ #!/usr/bin/python +import sys + class Checkboard(object): def __init__(self): self.whites = set() # All white pieces, tuples of coordinates @@ -83,6 +85,18 @@ def moved(self, row, col, rowdir, coldir, mycolor): return False + def try_capture(self, row, col, rowdir, color): + for coldir in (1, -1): + if self.captured(row, col, rowdir, coldir, color): + return True + return False + + def try_move(self, row, col, rowdir, color): + for coldir in (1, -1): + if self.moved(row, col, rowdir, coldir, color): + return True + return False + def move(self, color): # create a copy set, so that we can iterate over it and modify the original set if color == 'w': @@ -94,24 +108,39 @@ def move(self, color): # Captures when possible must proceed, try them first for row, col in cs: - for coldir in (1, -1): - if self.captured(row, col, rowdir, coldir, color): - return True - + if self.try_capture(row, col, rowdir, color): + return True for row, col in cs: - for coldir in (1, -1): - if self.moved(row, col, rowdir, coldir, color): + if self.try_move(row, col, rowdir, color): return True return False +def get_coord(): + while True: + sys.stdout.write('Your move: ') + sys.stdout.flush() + line = sys.stdin.readline().strip() + if len(line) == 3: + row, col, dir = (int(x) for x in line) + if row >= 0 and row < 8 and col >= 0 and col < 7 and dir >= 0 and dir < 2: + return row, col, dir - 1 + sys.stdout.write('Invalid input, try again\n') + cb = Checkboard() keepgoing = True while keepgoing: + if True: # Computer vs human + if not cb.move('w'): + break + print cb + row, col, dir = get_coord() + if cb.captured(row, col, -1, dir, 'b') or cb.moved(row, col, -1, dir, 'b'): + continue + break for color in ('w', 'b'): print '\nbefore %s move :' % color print cb if not cb.move(color): keepgoing = False break - From 1b4f251846c1d2edea3b1d1ee66f9dc78c88ef3f Mon Sep 17 00:00:00 2001 From: Vadim Bendebury Date: Sat, 12 Mar 2016 21:12:03 -0800 Subject: [PATCH 05/14] python: draw a better board Signed-off-by: Vadim Bendebury --- checkers.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/checkers.py b/checkers.py index eca5575..dff9d81 100755 --- a/checkers.py +++ b/checkers.py @@ -25,11 +25,20 @@ def __init__(self): s.add((row, col)) def __str__(self): - board = '' + separator = ' ' + '+-' * 8 + '+\n' + board = separator for row in range(7, -1, -1): + board += str(row) for col in range(8): - board += self.checkers[row].get(col, '.') - board += '\n' + if (row ^ col) & 1: + check = ' ' + else: + check = '.' + board += '|' + self.checkers[row].get(col, check) + board += '|\n' + separator + board += ' ' + for col in range(8): + board += ' ' + str(col) return board # Return true if the piece in [row][col] was able to capture an opponent piece From 08916bf8a7493ae7daaa2dcb7bcbfe3c8acd8563 Mon Sep 17 00:00:00 2001 From: Vadim Bendebury Date: Sat, 12 Mar 2016 21:16:54 -0800 Subject: [PATCH 06/14] python: correct input conversions Signed-off-by: Vadim Bendebury --- checkers.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/checkers.py b/checkers.py index dff9d81..a006e02 100755 --- a/checkers.py +++ b/checkers.py @@ -132,8 +132,8 @@ def get_coord(): line = sys.stdin.readline().strip() if len(line) == 3: row, col, dir = (int(x) for x in line) - if row >= 0 and row < 8 and col >= 0 and col < 7 and dir >= 0 and dir < 2: - return row, col, dir - 1 + if row >= 0 and row < 8 and col >= 0 and col < 8 and dir >= 0 and dir < 2: + return row, col, dir * 2 - 1 sys.stdout.write('Invalid input, try again\n') cb = Checkboard() From c87d7b4fd3eefcb73b38354c4eb09920fbc99e19 Mon Sep 17 00:00:00 2001 From: Vadim Bendebury Date: Sat, 12 Mar 2016 21:18:48 -0800 Subject: [PATCH 07/14] python: allow ^c to end the game Signed-off-by: Vadim Bendebury --- checkers.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/checkers.py b/checkers.py index a006e02..bfd01a2 100755 --- a/checkers.py +++ b/checkers.py @@ -129,7 +129,11 @@ def get_coord(): while True: sys.stdout.write('Your move: ') sys.stdout.flush() - line = sys.stdin.readline().strip() + try: + line = sys.stdin.readline().strip() + except KeyboardInterrupt: + print + sys.exit(1) if len(line) == 3: row, col, dir = (int(x) for x in line) if row >= 0 and row < 8 and col >= 0 and col < 8 and dir >= 0 and dir < 2: From c3efd6d99a3b52bdc61bd99f255d41a643005925 Mon Sep 17 00:00:00 2001 From: Vadim Bendebury Date: Sat, 12 Mar 2016 21:31:53 -0800 Subject: [PATCH 08/14] python: improve input verification, make sure there is a piece Signed-off-by: Vadim Bendebury --- checkers.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/checkers.py b/checkers.py index bfd01a2..a8d96c6 100755 --- a/checkers.py +++ b/checkers.py @@ -125,7 +125,7 @@ def move(self, color): return False -def get_coord(): +def get_coord(cb): while True: sys.stdout.write('Your move: ') sys.stdout.flush() @@ -136,7 +136,7 @@ def get_coord(): sys.exit(1) if len(line) == 3: row, col, dir = (int(x) for x in line) - if row >= 0 and row < 8 and col >= 0 and col < 8 and dir >= 0 and dir < 2: + if cb.checkers[row].get(col, '') == 'b' and dir < 2: return row, col, dir * 2 - 1 sys.stdout.write('Invalid input, try again\n') @@ -147,7 +147,7 @@ def get_coord(): if not cb.move('w'): break print cb - row, col, dir = get_coord() + row, col, dir = get_coord(cb) if cb.captured(row, col, -1, dir, 'b') or cb.moved(row, col, -1, dir, 'b'): continue break From 4a83e3b592aa22ac74e67288c0d44e3ee7c4dc6c Mon Sep 17 00:00:00 2001 From: Vadim Bendebury Date: Sun, 20 Mar 2016 13:24:13 -0700 Subject: [PATCH 09/14] Simplify user input. Instead of asking the user for 4 separate input coordinates, ask them for both input and output coordinates entered in a single 4 character string. Signed-off-by: Vadim Bendebury --- game.cpp | 41 ++++++++++++++++++++++++++--------------- game.h | 1 + 2 files changed, 27 insertions(+), 15 deletions(-) diff --git a/game.cpp b/game.cpp index 5acaa1e..952c378 100644 --- a/game.cpp +++ b/game.cpp @@ -47,6 +47,23 @@ void Game::get_player0_move() { board.make_random_move(0); } +void Game::input_next_move(int &start_x, int &start_y, int &end_x, int &end_y) +{ + string ui; + cin >> ui; + + start_x = -1; + + if (ui.length() != 4) { + return; + } + + start_x = ui[0] - '0'; + start_y = ui[1] - '0'; + end_x = ui[2] - '0'; + end_y = ui[3] - '0'; +} + void Game::get_player1_move() { //Code to get player moves int start_x = -1, start_y = -1, end_x = -1, end_y = -1; @@ -54,21 +71,15 @@ void Game::get_player1_move() { printf("Human's turn\n"); while(true) { - do { - do { - printf("X position of piece to move: "); - cin >> start_x; - printf("Y position of piece to move: "); - cin >> start_y; - } while(not board.can_player_move_piece(start_x, start_y, 1)); - - do { - printf("X position of destination: "); - cin >> end_x; - printf("Y position of destination: "); - cin >> end_y; - } while(not board.is_position_legal(end_x, end_y)); - } while(not board.is_move_legal(start_x, start_y, end_x, end_y, 1)); + while (true) { + printf("Enter your next move (4 symbols, from XY to XY): "); + input_next_move(start_x, start_y, end_x, end_y); + if (board.can_player_move_piece(start_x, start_y, 1) && + board.is_position_legal(end_x, end_y) && + board.is_move_legal(start_x, start_y, end_x, end_y, 1)) + break; + printf("this seems illegal\n"); + } Checker* checker = board.get_checker_at(start_x, start_y); diff --git a/game.h b/game.h index 6114def..fbf142e 100644 --- a/game.h +++ b/game.h @@ -8,6 +8,7 @@ class Game { Board board; void get_player0_move(); void get_player1_move(); + void input_next_move(int &xs, int &ys, int &xe, int &ye); public: Game(); int play(); From 021e666106c98e141d5313f3f6190556d77f538e Mon Sep 17 00:00:00 2001 From: Vadim Bendebury Date: Sun, 20 Mar 2016 17:27:23 -0700 Subject: [PATCH 10/14] Include as much debugging information as possible Signed-off-by: Vadim Bendebury --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 233cf8b..e2e26dc 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ CC = g++ -CFLAGS = -g -Wall -Wextra -Werror -std=c++11 +CFLAGS = -g -O0 -Wall -Wextra -Werror -std=c++11 CHECKERS_SOURCES = checker.cpp \ game.cpp \ board.cpp \ From 9ecacea6eaab597223eae09842ea47d0997baed9 Mon Sep 17 00:00:00 2001 From: Vadim Bendebury Date: Sun, 20 Mar 2016 18:37:34 -0700 Subject: [PATCH 11/14] get rid of the move vector The move vector is not needed - each player can go in one y direction only, and then both have to try moving x to both directions. Signed-off-by: Vadim Bendebury --- board.cpp | 55 +++++++++++++++++++++++++++++++++---------------------- board.h | 14 ++------------ 2 files changed, 35 insertions(+), 34 deletions(-) diff --git a/board.cpp b/board.cpp index acc629f..67ce10e 100644 --- a/board.cpp +++ b/board.cpp @@ -13,6 +13,10 @@ Board::Board() { } } +int Board::y_for_player(int player) const { + return player ? -1 : 1; +} + Checker* Board::get_checker_at(const int x, const int y) const { for(Checker* checker : checkers) { if(checker->get_x() == x and checker->get_y() == y) { @@ -67,12 +71,13 @@ int Board::player_checker_count(const int playernum) const { int Board::get_capture_vector(const Checker& checker) const { int x = checker.get_x(); int y = checker.get_y(); - for(size_t i = 0; i < 2; i++) { - int x_offset = vectors[checker.get_player()][i][0]; - int y_offset = vectors[checker.get_player()][i][1]; + int y_offset = y_for_player(checker.get_player()); + + for(int i = 0; i < 2; i++) { + int x_offset = 1 - i * 2; Checker* victim = get_checker_at(x + x_offset, - y + y_offset); + y + y_offset); if(not victim or victim->get_player() == checker.get_player()) { continue; @@ -82,7 +87,7 @@ int Board::get_capture_vector(const Checker& checker) const { victim->get_y() + y_offset); if(not space) { //Empty space - return i; + return i; } } return -1; @@ -116,9 +121,9 @@ bool Board::can_player_move(const int playernum) const { if(checker->get_player() != playernum) { continue; } + int new_y = checker->get_y() + y_for_player(playernum); for(size_t i = 0; i < 2; i++) { - int new_x = checker->get_x() + vectors[playernum][i][0]; - int new_y = checker->get_y() + vectors[playernum][i][1]; + int new_x = checker->get_x() + 1 - i * 2; if(not is_position_legal(new_x, new_y)) { continue; } @@ -135,10 +140,13 @@ bool Board::is_position_legal(const int x, const int y) const { } bool Board::is_move_legal(const Checker& piece, const int vector, const int player) const { + int y_dir = y_for_player(player); + int x_dir = vector ? 1 : -1; + return is_move_legal(piece.get_x(), piece.get_y(), - piece.get_x() + vectors[player][vector][0], - piece.get_y() + vectors[player][vector][1], - player); + piece.get_x() + x_dir, + piece.get_y() + y_dir, + player); } bool Board::is_move_legal(const int x_start, const int y_start, @@ -196,16 +204,18 @@ bool Board::can_player_move_piece(const int x, const int y, const int player) co return false; } + int y_dir = y_for_player(player); + for(size_t i = 0; i < 2; i++) { - if(not get_checker_at(x + vectors[player][i][0], - y + vectors[player][i][1])) { + int x_dir = 1 - i * 2; + + if(not get_checker_at(x + x_dir, y + y_dir)) { return true; - } else if(is_position_legal(x + vectors[player][i][0] * 2, - y + vectors[player][i][1] * 2)) { - Checker* space = get_checker_at(x + vectors[player][i][0] * 2, - y + vectors[player][i][1] * 2); - Checker* victim = get_checker_at(x + vectors[player][i][0], - y + vectors[player][i][1]); + } + if(is_position_legal(x + x_dir * 2, y + y_dir * 2)) { + Checker* space = get_checker_at(x + x_dir * 2, + y + y_dir * 2); + Checker* victim = get_checker_at(x + x_dir, y + y_dir); if(victim and victim->get_player() != player and not space) { return true; } @@ -220,8 +230,9 @@ bool Board::can_player_move_piece(const int x, const int y, const int player) co void Board::make_capture(Checker& piece, const int vector) { int start_x = piece.get_x(); int start_y = piece.get_y(); - int offset_x = vectors[piece.get_player()][vector][0]; - int offset_y = vectors[piece.get_player()][vector][1]; + int player = piece.get_player(); + int offset_x = vector ? 1 : -1; + int offset_y = y_for_player(player); kill_checker_at(start_x + offset_x, start_y + offset_y); piece.set_x(start_x + offset_x * 2); piece.set_y(start_y + offset_y * 2); @@ -259,7 +270,7 @@ void Board::make_random_move(const int player) { if(!is_move_legal(*piece, direction, player)) { direction = (direction + 1) % 2; } - piece->set_x(piece->get_x() + vectors[player][direction][0]); - piece->set_y(piece->get_y() + vectors[player][direction][1]); + piece->set_x(piece->get_x() + (direction ? 1 : -1)); + piece->set_y(piece->get_y() + y_for_player(player)); } } diff --git a/board.h b/board.h index 42b4d04..e0166ec 100644 --- a/board.h +++ b/board.h @@ -18,21 +18,11 @@ const int player1_start_y[NUM_CHECKERS] = {7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5}; const int player_symbols[NUM_PLAYERS] = {'X', 'O'}; -const int vectors[2][2][2] = { - { - {-1, 1}, //only for player 0 - {1, 1}, //only for player 0 - }, - { - {-1, -1}, //only for player 1 - {1, -1}, //only for player1 - }, -}; - - class Board { private: unordered_set checkers; + int y_for_player(int player) const; + public: Board(); Checker* get_checker_at(const int x, const int y) const; From 5c938a53db3ae3aeb4d2080b171ec3c505d01303 Mon Sep 17 00:00:00 2001 From: Vadim Bendebury Date: Sun, 20 Mar 2016 19:41:26 -0700 Subject: [PATCH 12/14] simplify print_board() invocation Signed-off-by: Vadim Bendebury --- board.cpp | 2 ++ game.cpp | 3 --- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/board.cpp b/board.cpp index 67ce10e..fb7cd7b 100644 --- a/board.cpp +++ b/board.cpp @@ -40,6 +40,7 @@ void Board::print_board() const { player_symbols[checker->get_player()]; } + printf("========\n"); printf(" "); for(size_t i = 0; i < NUM_COLS; i++) { printf("%zu ", i); @@ -56,6 +57,7 @@ void Board::print_board() const { } printf("\n"); } + printf("========\n"); } int Board::player_checker_count(const int playernum) const { diff --git a/game.cpp b/game.cpp index 952c378..f490a60 100644 --- a/game.cpp +++ b/game.cpp @@ -12,7 +12,6 @@ int Game::play() { int turn = 0; board.print_board(); - printf("========\n"); while(board.can_player_move(0) and board.can_player_move(1)) { if(turn == 0) { @@ -22,9 +21,7 @@ int Game::play() { } turn = (turn + 1) % NUM_PLAYERS; - printf("========\n"); board.print_board(); - printf("========\n"); } printf("Game over!"); From 10da83812988ec85cec7f966a103439bebb76dc7 Mon Sep 17 00:00:00 2001 From: Vadim Bendebury Date: Sun, 20 Mar 2016 20:14:28 -0700 Subject: [PATCH 13/14] do not assume a move valid if it is not Signed-off-by: Vadim Bendebury --- board.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/board.cpp b/board.cpp index fb7cd7b..2f4b3d2 100644 --- a/board.cpp +++ b/board.cpp @@ -211,7 +211,8 @@ bool Board::can_player_move_piece(const int x, const int y, const int player) co for(size_t i = 0; i < 2; i++) { int x_dir = 1 - i * 2; - if(not get_checker_at(x + x_dir, y + y_dir)) { + if(is_position_legal(x + x_dir, y + y_dir) && + not get_checker_at(x + x_dir, y + y_dir)) { return true; } if(is_position_legal(x + x_dir * 2, y + y_dir * 2)) { From 6dd631a09429ec2bf6e1dc47890b4111eb52a56a Mon Sep 17 00:00:00 2001 From: Vadim Bendebury Date: Sun, 20 Mar 2016 20:14:59 -0700 Subject: [PATCH 14/14] simplify player validity check Signed-off-by: Vadim Bendebury --- board.cpp | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/board.cpp b/board.cpp index 2f4b3d2..a1e3130 100644 --- a/board.cpp +++ b/board.cpp @@ -194,15 +194,9 @@ bool Board::can_player_move_piece(const Checker& checker, const int player) cons } bool Board::can_player_move_piece(const int x, const int y, const int player) const { - if(not is_position_legal(x, y)) { - return false; - } Checker* checker = get_checker_at(x, y); - if(not checker) { - return false; - } - if(checker->get_player() != player) { + if (!checker || (checker->get_player() != player)) { return false; }