From 5ee3d423d45bdc39dfeabe2d053487203a717c6e Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Mon, 22 Jul 2013 21:33:50 +0530 Subject: [PATCH 001/110] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 79d910f5d..b61a80e00 100644 --- a/README.md +++ b/README.md @@ -9,16 +9,16 @@ Trying to complete all projects from [Martyr2’s Mega Project List](http://www. =============================== -**Note**: If you fork this repo to solve these projects in any language of your choice, please remove all my code, and start from scratch; you'll benefit a lot. Do ***not*** send pull requests. +**Note**: If you fork this repo to solve these projects in any language of your choice, I suggest you remove all my code, and start from scratch; you'll benefit a lot. In any case, **do not send pull requests for replacing my code**. This is my space to store my code. That said, if you have suggestions for adding or removing problems, feel free to [open an issue](https://github.com/thekarangoel/Projects/issues/new). -Some details: +Some details about this repo: * I will use Python to solve these. Why? Because I want to learn the language quickly. * I have no interest in making games, so I'm excluding those from the list below. * I'm not interested in networking, so I *might* skip all (or some) of them. * The projects will not be made in the order posted. * I may not be able to complete all of them. -* My method of solving them may not be the best. +* My method of solving them may not be the best. If you do not like my algorithm(s), please add a comment for the file/commit or open an issue, and I'll try to improve. I will link to each project that I complete. Some will be in this same repo, some bigger ones will have dedicated repos. From 2509afca3ca9a54168ea011389526fbc148f7b08 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Tue, 23 Jul 2013 14:05:15 +0530 Subject: [PATCH 002/110] Organized screenshots of GitHub Explore page --- .../top-languages-python-2013-07-22.png | Bin .../top-languages-python-2013-07-23.png | Bin 0 -> 465444 bytes .../top-languages-python.png | Bin top5.png => RECOGNITION/top5-2013-07-14.png | Bin .../top5-2013-07-22 13_10_30.png | Bin RECOGNITION/top5-2013-07-23.png | Bin 0 -> 39072 bytes RECOGNITION/top5-weekly-2013-07-22.png | Bin 0 -> 137228 bytes RECOGNITION/top5-weekly-2013-07-23.png | Bin 0 -> 38967 bytes 8 files changed, 0 insertions(+), 0 deletions(-) rename top-languages-python-2013-07-22.png => RECOGNITION/top-languages-python-2013-07-22.png (100%) create mode 100644 RECOGNITION/top-languages-python-2013-07-23.png rename top-languages-python.png => RECOGNITION/top-languages-python.png (100%) rename top5.png => RECOGNITION/top5-2013-07-14.png (100%) rename top5-2013-07-22 13_10_30.png => RECOGNITION/top5-2013-07-22 13_10_30.png (100%) create mode 100644 RECOGNITION/top5-2013-07-23.png create mode 100644 RECOGNITION/top5-weekly-2013-07-22.png create mode 100644 RECOGNITION/top5-weekly-2013-07-23.png diff --git a/top-languages-python-2013-07-22.png b/RECOGNITION/top-languages-python-2013-07-22.png similarity index 100% rename from top-languages-python-2013-07-22.png rename to RECOGNITION/top-languages-python-2013-07-22.png diff --git a/RECOGNITION/top-languages-python-2013-07-23.png b/RECOGNITION/top-languages-python-2013-07-23.png new file mode 100644 index 0000000000000000000000000000000000000000..4035b3d1b3d4c44a074832d40e1e272e9158c634 GIT binary patch literal 465444 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 aXp;+GP8yDH(mJL$X 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 G4IbIfb@^v2$~@)o)x+ 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 z zYWJoy9%9_VAJMH~j4qx`$e5<-D?LVi0j8J|Z^qfM-0rdgrL5t;hF?I>y7O5gJ(2$H zj7Ar?K9QV#NyC_|M?*dR+#j$2b=&B0J?Q9Q{xO9xIRnnzyDyJB+!{+SuB!=(tr0U? zuAf*?S$aaGP9sac$rokwhgjX@q(GvOaGj#?uYGHMmV1g{(%)-v>6)b*res2QlPfn? z&M}i&9cKtWA_4LtnAHOmh-B~?YR}AZ4oBO(YR)?a^hcKdH5>Y{MXHO|cm*|naP4EH zx4F5<%;{WnOJYGtP!hheYmC@jj$!5K>Mnz3Xc>PrXZ# z%#|N@!cNGgkbNp~Z?IIlT#ZH!$y1~*amd(Zgx93+k}mmoay)X{ry@6d_BoxZ%w zmF80(MRMNXg#Tb1OKSpcvx%O$!h@Pg84M&8oDxd%^A!u^3mcZ+U@1wu93`pIdvqw| zhRNz&&w&u>px$yGsT7$LkfCNpiPFqg*Lo}BW4dsQHN){MQJgJ2kH;I@Tl<=u zyi$Gc9;Z?_Sd1!jpA54I(cs=$Xd+#%rS4YP^IqH4PF?;)EZPqz?n{M~Cz?5Y6wi2= zzO9}5#;6R1Y(%u5z#Ul5`SG~~tuDx|3YxAnPxpw_& z;~mgdQ|wB-7~9@72uWoJ42Q6u2|Z2kTGk9n_?atPg|5#dl}ur#!*`su93Qjqe(37ny6ll*x&t@7TuB53yrDH4%?4S9Nf$jnS6|* zW|D~Kz7~<)wK}O-lD zLztC>xZlUlU{%%F(GY5ML23Bvf_n3K!58r9mnoZ>WkFfUk`w%^X}rIX*Jqv>`o@8H z+3i$XPhWVt`VnP2J=k;!?4{!<$Rz+WcxCXR`5@9xLF!g>#af3i62>`ig1SUw_HX>2 ztMt8|k$FKMTLWtLtvB`xTLMx3+odCyo-|zZcA~7QX!l7aB8zZE)xOE7kvk z{W#?oJ#{&h8O1xH9zW|7B_zG(t?L`38JmtBoQZCA0L%jMpyfGcBFtmR0`Q&jJE0$d zQ99!d{e8+CnziG_{_QpQ>CR7n3YjUnvkn7=8uM8cRkL%>CJ4-Uv97O9mQJM!52KRI zd>{8(=`^fprm|0N#Ql!cCDV!f_|G8RtDNT`D|Q#;m+ZI2N>6LlOttlWTAtT-@{9KC zN+?_?vf|H3|3suE6Gaq8o76PwBLZu9ZVET#MlAFXAP}7fT)bnkOKd`67SL)t7Mqq} zf+DtWA?i^X9*!c6=3 z_fs75X8us{1LQmQXRl19c?La3>ERx*wY{CuRVZRB2Rm*|dwQ5Jcdcjgksp_NlbWnK?-b z9E3_=vbGsndn=j8N{L=jGTbtLuaQm(Y_E~KYkoo z)a3Ho>6Nnh?sYt2%ATh;vDK*MB{ChAw{W8pWU7iokmMbS1y3ps$Wd8QS+nHlE;^)N zo!d3u@efl6rh3C~mV!(c-64tNZpA>S`)*YR0@v`Oc8#x%@Ut<7oLxdw=Og65q`|dFrsD;X zA|eWR%$5XWX6E^{^1;3I@KVx%oKFUcM~|wNwF}GB&hXy)tqwCN+WC+jOUrkC6}AcA z*>$Xw8BeVgyFnQxGh@2K+y4x8@j-#r6$N1cA*J@3=#J?X=f+lX$8)Wu#;ISB;ZfL{Y@^s;9-qgHSHk>Yx2b4k@I5B203Np zm^mOgek!2kNl3kek2R_k~`|OC@Ew&>Kb|%613}_8!s%_Yzux@ee z)hF>4)L3#=E`8ECJU{lc!Ghj6OWSj#WN48k>1%n)9yc`J>e+Pe$XSN#iIXxH9WLy) zehe4#LbL^-;_A;hKxWgQX9K7PctL=x&sGf7AG1WKf_DQwje`Gl03DMZB2{rEDDL{uSqi5z;i0p5g_ZnQN{g*3$p1JY@`jT zrzBCXM{+)Cd=`iA9HNKDxQ+DsaOr6WoNH^V+ij@s9wXUo38*gWK{+ zW2v+?UBL(9HyR^v4KJGhf9tK$l1lDSeJdEA5LHxUbS zzz)n)HrfqKX+;H^@sUpyznG47C{*o*UZJ1_&X^1E%!Md7^!o!UOLaTx!7TKdrb{%= z6?kTQX);n!mqF#CLh{2sD28GJpTf{CA$$e4>4d|9g!_*&t1I`z@BMvQP!~CegAUWo zxmZ#FL$bc1gOGwG>;wNm)6s#G!0$Ig?!in*hM?KoK4$OD45R^7@%3w(+|a7*z+%Dv z-hx5D-Jwi!0AsNNi5S-HRD3JLti@Ei|8-V$SPejos((-mT z83glE1{zUWI2?)Qcn6p_ywxKN{ceCdP#@v2Al9_nio=lK|D;=Fe$igQ;*d(3XPask zi``lJ^bjog7#u}u@`;-We3_-TkZtwTDX^@*+pmZ&_7T1#n0-h5o1`MvQp5i_#6O*9 z9OcvjNA12G#iXvLk@a;EzNExaR!5biN^%@4Z?N*r@4!EI4~Qbj)>+O~li9$HrC$#7 zPbm-}2=mdc@`qa#gcMWjIo6M@)+P5f+aO;865Dq&6HpOUDnysD&*t1`&Di?^FTstH z!c(*?XaRR!BrOTMq4-k0qp~nah~!&W7LLA`3^h>1+9DMggjJ#39AToMs zkvEX{L>;6GP9cSf1TiBm-F*4R&afpyhyK>l@`H2 zli#SE3d+?CRH_t6xA>$ix0FP9=#1)QuY)q9kXtB=wwDDpXI291oI#}pK}YN-3k%dT z-n)<5##i7r`bYBH+a_&?l7T)OMF~T@@Rzmnu#pcCu#Q7Z6+*8R0*R{-6V49Qvt;4p zj1?Z;_D#?2SNRi?;vD=IO;GKd)@TZmq>m^s1gd}z>?C8dX8_v9Y)C!Jezu%dsOm`F z$ouR}Vjl9vk{ag~?buNh(N>iobgBjHz9?Zml?)6=eIHJJXF& z{X-K_(WG-~mIT2#1bDnR58qo3p-O~6$yf=D>nPR}+tcKgAu|?!ov{roqV0DIAzu{4 zZ5SVO=^20UfSOj6J+5~qu2EW!@an?1VL}=vLU9OA+FJ8AXIiL~+oDq*ev-*tKa+wH1W5Ktke9 z{i+kOSlJW3=tkCuS0a5(w!mX%sE9D%>1UP~;LbaQiX*iH{rFTW`6)tXc6zUt%wY5B z0__DT8=JxxT7L&E;v(h=yGOT3-+D5(S8H_T)2{&pQ$i_1V7>wcY0BZorpQWyHnOB< z%64Qt&5{*cP0KEDpzUvT6hiZwMNMIO{5#s^%;x<&qn!PFpu^r0cUv}{3-BE&cADi` z^G{d{x~2=9;pUwd4@Gc={2L=Hi_M#ciXHzjnRl0Z@_K@#`&7Zh$)bdo#MW)G*d3+D z2+76_VJ4k*LV(K9+9x$3t@kslg`|W1n)mARhabi1isIV!{sz@vk6c+>}L1 zS0pkvA4v!ygqWuw-j5HOxXxZ6a10w3BWIT6@I*(ww*H!Il8W_SM~(|0k~te3*Zf+` zvG}}x*^-^k{(o{@Ij^O;S9Rg}3-9wecO9e4#~Pe{7p^lhqI78P{)zSJnB!Ikefti6 zBIh{SYS;FAdkN?l9CQ!9N&?7!tU5xf4uG#s(S?bYWHb}+>?D+>Age$<2w>O*ztz4Py&^8FEHHXclW%?|sD z6CMHwSPt)kxSAuPnfi%(mcpb!r9^Ef%O@JVPMDA^uOwx^gLcGcH)N2`VeJLR^g$yJ4Qv8+fn_O7A`i7R;JQ2&E`}I)aW9(@JbsKnLtG|bbn81=;J-w=o!ZhuZ4rcLG-0&!lcWRk-l>WJ;z^_ z202q<-?o@QxrW(F`2G~`w-6I097fjYe8d*^(y>S0EWa#Kj~^3wb;*OZ+Ck)Vl^aT& zo%1W3`VuOXO;4i~wQrmm@@>^Vto8VycDovq(|(ai>B2>j0_7;F`>P?4`priP@F*!) za00%$n9~|O))P6H@T{Q~ox?-YpBOG1vv^ay3Elh2f5fCO{@^?OhWyS!DIE^CuE7ko zg35%fC8)uDjcRaj0Hw&CNM!?Fjq$`g>yn?8wo-o-=k*Qh-C;=NI@RK&VqmZ`Vtnak z8OW*YP49KMK{0K?caBzOI8(C5hO)_@83MwyrJ%`RSFn|W>dqcDQ$(@i5#(J1hb0rv zWGcA8{iQ2~wcdSN(tVZ6!J+{*iSSpb0e?I2UdUY&W652UV?x%m%=>E<>|Z58uzoCo zgBtz<$>DDYmIr-w5}tOldLu!Al}%vpSkWhD^3Os*PYfYGVwo)B2WSBui}jjB8~!gf zdw)A{GH^W`ti|7*-;BFi<0}jVR7L}ar~MVEz~2r0|A;WGWjBcP?LH*!;_Yow`&*>~ z2#YeawID3sfvYLuNqaSNHSL47?(2HRCM;mB39#0Lg}lr=m;&522@v)TNBJMU<4C(< zay#CE*9)^)#Io3v~G-eA-?JDJA2WccIF4u z6VP4X2IwFAof8rE(Uc>Bht)}>^MoTMZ(xl^wq=0iMI-2Pey+0JrMFKsvBB4I8~Bv) z!gQlptj6BeNR;Q~iDBIaNE>D81#k&rC6%pW5Wuh^F7)c@|?yUa4Y z&?WA9hm<_#ske&c;88n9eM+QCJDoFtFh+~K4IYvhei&HmOtCnqD~9L6M8C4r3?g&^Q;|!x^ zPho|<`~oZN3-Nzpp3O>!#t6sWHMGq3V7O(>EW-2$tM(NF^`A{zBsoV zy(?J81^rMz#^YyPh9Yz~&$@U8w-e>85-Q@LgTtTw>%T@D9sI@LnE&zZyOq` z>MyE1NbKD(7;g&$I}m54I}@j04pDW~PDwIm zL2&6s7yl%Ji{k|r`UQm`#t;UK4NgPlK4&1=mwa{SEkxw@U>j9e9RD(F{5YKb?96q^ ziD&XPU|NO<@by<|b9PuXaDc%K?T#w2^rg5z+n1tN6xji@^r>?ji0ns(y%Ef?^*0z$ zE^-6H(mVv(X+li#%`Y&_xq-rkNQX<10icKCWGDPjpaso`1@U4CsQ8>^c*FZJ;OiVS zL0DTRgvMy!w;U10KW)o1*MP!A+$?c=w-o415ixrr*8=wLK>Z^)^DBG63$e#c0-X?- zt~nFFhxM>pp|KPpDRPrDJkSTNeaInNw^@1yU1TL1;F_uAeU^4gx@fd%MR=CLpc5;Q zFN3tT7i5u+HqgviYp5wO+f-+%)Gt~lwJVcydfMDzp|9^#p1o%N-FJD}>J6S5 zi}cP>g8L(ah+zzulNr<{Q#up2w=8hG*JCe`WS#wgUP7V~ELp-mCo>)pJZg}_N^?KA zkJ+hcntB8mzUCl@cJ+A*`pQ?2d5iJsCl!=dI%IenNK$xmW=2sQr-;E0C* zY_5R#ab~o`3SU#2gbQ7S0Rv>W$f88bD~0HHV_m)(9@_Op_lY)njVQkSkH0tf61%f} z$Cq1WkB*aH9<^sQ0H00Y)=WH6mi#7T_E=^0LZnY=DD&>lUF6(?Z!cc;z=tn=LEMpu z%(6s-sKCTV>;BQPW1T%|C6birtRHi34tG1^uDN|;G!EfvHr6DNDQ2U^Q} zfPN;PUhce0nv{j!f;SbToW~XRB`S@(EFo;|1jJHE@~5~A()wSKBU7^vtK2W6?}wdKF`J8s zZN{{}4n%&PWY6Z9$#dgiYU?AT+hf$Y`NQ;%xb!TuOp=xi!t~NzV` z0h+cBC+sWdPyeMEo+)g->3hN1>@;jFyjlbS-BQZjO*1Sq^#ccWd!5bAO!j#XIa0*i zp>a%-gLX#B9KSP>KxbGK4ptuaO}^tdbni@NJQ7guTN8@q(ecY?IdF1#A~=8CPWLhu zTSv5x*To0XIs`!b6Pxpf3Gg{90nX|O!IFeS3kC zXCBN%B4t>IQ*+aLwC(5N`V2m6_r-;%BXtp$#6$cYo_GLI3g-Lc6;O+ZVIcisFKZ@{ zEz9tEPO#GYx-4cAS2(Og<#f+7U>dHUK)KwhvzZB$$uglUJ3tNvU{J!|A#md++^-Ts z{XIrulu^wM>=hT_KnC19nv+ulQp)it(=B|f2kIijxeB!C)l#DD_`h&`p!JpJC!*bW z1kqaKN_!r3z|d|(L`B7!X{*}63`!$3nCn;!Us^2iU(no-!H_mb zOwevr!S~}&qy@kMOXb3T`SHJI*>bdgf%k}?!o$l? z-M=09Fa%UsA#9oMd6q+BL;rB|kEceCiDnY%=+;KwbZCVEkGbdXntE;rymyOq+l# zn@^gsM`|EB5GC3={{@`y|4G6ake^n%WLv16pR_E*oesPA2`GlFD5!0UtQeYbrK?cP z2Ri}}cE4w3S61=a0Ya^QPN^IcpEJi&u@!G>?X@JzGATdgMMso#!SgoP3=dCU6K8EF z)qd=+@3B$!$ytT0!jX-87XXX#*;%qR2EkumcqzZ&(*cq35%DrD$_oF=TsP{c@l}ql zT)1#4T)3^ebj@HJm?90^dclRIlMeE;zB8m2`2*Gg^&X(5iXbsDJD=AGRLpEORVgdiC8l~|Zz`l>?@p$G9)_Ypj7$?9jVb`rM=bcQ4$Bun zm>jhB73?|2-Ewh5f2DUbo;IU=dB^p1j5OVdr3JOz4^d7$YRQ@Dyp2|pOEMYn z>yV1roEzExs%Z^zzg@V$>0)#NOyb4~p|qkt7`m@nmUXzZI%&?o#Lnab;A!#~C!ZTHwuMSxbuTjF?bxy|ZtQ8tb+K4J*DdI(gYC)o*`I57zh{)61b3!;?kW$@&jZel_h?5| z!y_^=7Q_zECIY6u6=2_Y?pwjU5?EuS1W*#3oST_>;4`ypje>U4+f=iotV~7+vPoaM zxpH~1!c(5E>@%7@LzIgSx3sI;qD(#u3v%_+f) zF0LAW1D$IY&F>Am(`Z~9y!oOK>HbM$lyjU0HjD!;i`m^6A)(F9yvDliutJ?>FqvgL z&!Mx(;|2+s@Ru&*?>86=#e(X=3XK2#2K%2^Z9WT%@CEfN=DfWjDJf}^*)yhOZb$Sx zDhQ`wm;(I*wzyG9NJ#_uv2YQKt*qPx)GT!e=w0*=JUX)vJV4mk?}Uvc8vaXc_wTCN z|2|=~-prd!^-z&^UD0XTS@41y*ekB-Uvjt5McJ>#CrhEQHaVgY^el6AW_yBx^&jrh zv|NLk(Wco*?TkRO7rr&`u?)4XUv~7cwFYZsaCE2r`qW7$kH!ZZdUeBDp>|;sVXD>G zWAO1OuKk-@EY_3Uuxbrj}@2qF_pq^4Z0Tfr+yG#)(Dw z*N{ETx|-zC4qoP2-5;-lA2uoq z^^2w?aD#7)R_w*4o^6c$S4*J3w!9di#eSpd3()QzWP-Epv4Wv<1bW=DxaXZso6>^m z4S_Gy9YVxRRuNZhHQoNrDM)89)enL4QTt|SXVcvcs;1sGxN-UhqN2wgvVQJqb^cS~|L`{LweEYN;t)r9 zgi$kA=Xdf`YHr~2j7%+kYxv#a@}KK)VKVrCihuFFuC=PTQ+KM~UIB0~DIQrKX>qQC z5Q^Q1e1^-wWv6ie2D5u}C)hwl%IZyEP|Zp}kc>ItohL0vI)1VN*v)@)V?YS_dlV3M zZ1M_aySKgvF8?Xv;TR$On}Xx2qN7goQ~rX2VS~Ft%xmyYF7{ldw|1(yLwKg3wp?mL z#_&z#ncxIx0cX)3rgaLQe+L=#Ylh-=cv%vn=4sEWJ<{6TSg&+Je?qpy?S&{9X9D9` zrj;B6d!fP^EZ$s(?Esr4oO~f~orcAV0BVwlD%t(htfoUXv?DIGiHicHf=3e4DD(Uy zI38c5z55j?rvd|Gxp^J6VH-7f~wRyIeo zDNnt7eLZXXi=K!Qx>cbG?n4b`@`XCMq1|+Pxe;Bm%DkC1S8QS`Ii{fGa5=}two8p_ zMMq~zXcN5?dNh(XJ-Cx98P{9<{4^NeKi8;WLmi>L>JpnBFjd0@I8;)#`78=mJbS*! zFsIGR4*KB2x~v7sDNr7tU;I%lJ>?K?lzddx>lwdrL9vQUL66(Xg3}q1VJ4wOV1^rKj=uFuUM9W5cM(?DWTju4zw1#~yV^hY?XWZ7Ba?vAeCh!% z5|^T6gEDkh!B{&8RliU2`4q#)tnaE?NP0o3nU@d^og&3LrA^jK`fkf|lE++t5OT1- zy$+HLc5oc5sP12+?;cw=qX*SYIfaJZur(GT-X~T4wCV!F7#BB`Vxwg!&mtE*E0w#7 z35mEz)+Mib{Top66e?J{3w-Dvc%AO6n6T#=^>AHUq2(8f8&M#=cv71NO~M;`KMV~1 z!W%60emA)(Sa3Q}Z3N!Hc>DAhC>)XmMsHH?XEt&K$4)1Ze?2XW8Tvyw1?|BaOrz&2 zkn&Y2UUt9%wkY`b!Dk7FB{|^xw)`(_3!ZmgU;#DI!1M7kd}Cwd&o|#bbA>jxHA|MF zl(Yjt)4!8WYy?_wC4g)rk8M<+zRsuE9NJ1&Om#5y0Z-`QLkCCn#B9`SMy|qmR=^iN zv4kCPSdfVg1|7fqucuy9}>>V#fXb{q9v z89}{M^`c*+y5b!mT`t<)-NAOH{V)Z(T+b{;g)48WW(ESfBxYOf?^A~R|KDMk*K%K4 zp;++dgWJ&)QvtU!Kha4SQ1vL*x6IeJNHe7x;l=VZpyZ`otnWjoiHrd22}Oj!kQKY&hy=Gb-x z)X}~T7<4j*1pk;GS(BL|erT)n{G`&SkO+P{LsONvk#XJDL?&dyJoA^~_|Vi|fx%-v zW!)NGn$gi8$A-qE!pwWS0FHs^OoL(GLka{xc)c=5p#EQTI>7O<|;0-mziTG~Gy~=2--F9n!#>J4<%pbQF6P5rf zfH6YmuL9u{kIiO51^8`h{*w#2vfUbYXTbBM=s>(-+DTnE z?Ua1Yp5?J>p|_htcbr^EODwHRS$y=gIOG~NB<+fd${b_h-VXG3h*F+M`c@7UJT$9W zt!LjlSOEE3-=@{QPs;0%Z5)gbwyoMprS_~_q~A^=-UY_* z{+Ura=mfn4CdMp`0JXo|@;L11JMcdy#FkW}RJ6+=y4BxuRnBOnQ$HpfDm60`tKREE z3d+2jda$oLG0>fp5E-40e$SdOKj6LLp79=#MOO|>RyAvy`0O(q2 z@Tx+x2D9Ll1~fpMf}vs|tR~1eYECgh)e2i+!VaxZw}6fa?J{-AmpA8cW*r)4g-2yn z=Aj-;e=`B@8>eY#FNkboTfTty0vQwyx@L6tEBGL5qPzqoMBwf%Mrr6XT#9};DnM?) zo!2~Qe#t;*)0Gc82yH}N+ZpzN?Tukr({P6o5`4TcVbM&-V0g6^m5Hnl-oPH9g&ZFT z@OD&B;gTu9tLD}oC{>7)1j;da*n^1;%(CDjSW~HO(vR>2OCmmNnmgNMm~FPDdr@x? zE=ORDdXAF2XdxB)aJ83}lhJRM>Fa30nzX!bAeMr#Dokt%z+Nl^LkK@7FQ~e2cfrD8U3D~J^{tt$T=T}qj((O=d! z_VJD(d}J{ulSTt$`b;5?&t~#XGZ9zQl3Vi#C>m!k9$Gfx#VpyUHn(lD$Q~2%2#n9K z4w=)L`Bazes_QiY#ZdG=x#86qdk`8`v~+i1n0pZ5y5DciUal|n_1yDtarb)CArK&@ zCRQMN(>66Dx5tkl7>@V7k%j42fJnhAk&dyYeylT`_EFJ0buBp`8`x62&j<(!uaBk# zQy9ax-lg3P=e=>K7GaiTn^n-W$3OT>$+vfiZyjjIc&uFiUa zJat0mio5NIYi|{zOU_yj#F+6UARb;Bc5AABa7NbPjX5q_r!0T)|FQSw@lA5Tt%^U1&*gtPo-F7Rp}rv&-YkvOa|Aq94_8KOyVSn zH#fC@b~H&_aVc(`E*`9|k$MeTZrk-@)At`9>j@%9^5)(TTfpvhEJMC+4}a8F65WvU z0qM*M&}4&ACyh{0Xbt$=ookiZu!2>|fF+?cmg02`O5xe{5NYb}X2D-V)`j>beBK|8 zgHWiY-EqT=raW6|KI0s%!mD=C2Md_>PMc=xoqqO21Ud}_GS)Uchhcjt`=np?q{3$p z&9OUefvHdz{o*GnbKJ*{17E`2+26F*4z&ljz89r#VU6Ysw|8TH3XDf}Kz`>a`GZ$_G$iPe|y5JW-IQ& zNjsI^8vCE;%9?qhmU%))UI`t(lN4sj2F1Z(vpTOj2`yHHF_J;P7kj= z>z`iaBTA}{ihF^0bUL1O2cZ938Hica^x@tIQ3fZ#0fT2pki$vDpFH+il6mTxsrxdm*M~Lqxhq1qvED0v-X~inmjT{@ zKV_Hf;?J(k6Ob0flZyvqE;;eFEW#TS9HL%8QKc7-%rb^jV2oHS_$rR(zy|+M4SYvf z47Xc$T$00h4Vx>x1-((7IBvPXxN$@dBC)$pJ;ZmiM??Sa?}fK0Z2&{@7SNngRD&Hzf=ua7 zh?XAT`X&Eu4NIk8!no}x0=KVk*YQxDFu6&~)(2lz>P86}-5yy*ztgh3ej65frNgdA z@pXrK5i6IU!ZmrQWLzbS)(?jH_4^e|4PE1+Hg#Sah50sX zgQO$4$NB<_zSjjqx3e?m&c{U`lqos)D|#e?h%I@=1c^nF+1VrcpGR&#D7sQ9ZJ@dO zVdp1%YY%_RCMk_Fw?(e@JPa?(2Dg!n8Wq+WWg4Zsi{Tr;XOc3p?Gm4#%}8yJT|Q$} za~Gr`)y6B+Iz*V&m{)*XLnJkW8%5|_zVj3WV?ssLHgO_ar=8t>yqALASEbeiil zn)&KMz@G$(SIT0sHmuCVM9I?jq0FjnFM9bW1g%d!0b~=qBJ1VhyZDlMh&E9 zk;dm$lz&1YC!vR4;kXaC&?w8*ZKSJx4~?E@$wi&yp`-=7PzLqt6+d7LN5?7(d_^9|#9P!7)Pu z+OBAj<2aFPFbL+0<4}1#_GvXYB+z{?Zo3G%D0Sh(jEtm<*jHgZdw5)nGns?|uvdO7 zU=Wd~A>3HrfLWdb%bX~)@B#x!2_<7+yf_azG$|;%OC-7hV^la%N;F5~9SXV7F-{(#`>}H{m`aDERDd80|C4*GU>W0Z}p7!ADWX zyEAJcy2z=9;4ea&q7jls5ip2KV(B^T_5?h9YiWgl0nqJ(FV!{T1Yoo_6i-WY7RDAE zg7I7-EMYL?aubsJ7O?fxs`(Spl>_GHbz15J(Y6APe=3dsrW#nUOA*helTQ(6V#dQ@2+O3h;Kik%J$MKuxqpR?T0oDz3mX-KA>t=s*hlsi zqkxB-P)Iq5qGt!l#IPL}nHXX#H3I@e%x)}18~-eqMaOSSS1Mh&T3ftplVMfeu0c=ilFNR0MpT0U!t_%mpi)rh$f7$r+JA{0Q4@Drg`DmT=M8><`SVz+2(AfZ|qOvI4C83(Vd$ za1wb@Fq<69Qkbn(ECU}lpE;)t<84NDx-BeYy|F;krY?CK6Tcg@NxY_tMMt)s?d<*w7xrZfY zRmmEK>RWp?11{&Ao^s^12-VHjDkoiJYC{2L4AS#=S}WIe=JsiGQRCPiT_uN9*8v^L zxo;62G0_d!*o0~PjBy2CjmXvu%dTvuUA7vvm)Ta`bymS|vU=^~*KnhIG%)R=n=1SA zR(p06B8#EGr)GBf{=+gH(wf|_Tl3sKp4%QJ$W9JVXzgxKHS?yF(KeGp=8@fN7jw_) zd@6~5e$B!@lac^sXH#7Tk)-?xe2S}GzZ~gE8N_Z*rkkeG3IAMQ_k38RgLbN&<+JAQ z7Rb!h%#mU!KrM_U$8&Z^|KRr2(EP+#q)aR7;>eCSU69_C6`v_j8^`+>4|>ULckLP~ z=%U4)&Q5h48~X^uhqR_MxFue3(XG{l02#$f>)< zv7Dm5QqqU*dKgoVHhCX^rF9-#^E*UV%Ou*v*E1Y z+6RUm$=7_G>tADw*^$u!Zef!(EQ7NG#8_Hdh%|`YY3L8%{+0x)z~GGbW#%3S0}ICF zi&HAK^4x_^uF~vM3}s9Vjc2qlvoo9F?Z&s0okA-aL6ufPF- zE}%lo3Bzuaui^oe9!l|I zZ6bD^`>X;Dm+Uuep6qk4>1T~ece$)qr#Euf zL&wQut9OtRTW+JCU}n~Uo_An56xOhy8(SrLU_mD*{39%fSENCo0K2XMu4s_z+ByXy zsH@L@PzU={xR64thHp~GEC;aPeE0o6AAsKmR707&wHiK2qdEE`{=t%Gnkc8hm`cPg zgAKR*vM{n9-h|n1s&b zFn#Q^`T%r12nJ*Yk6!pOP5=)i$A9ng)DHi*Um0iiH~QONEufH~NV59kxV13g|+3>{tGl-B~vz?Vkb311A+T^$NdRrl{^(h1b=g ziy-)Q$%TKx-Y8xJ+r;wB9}&RoEf6+GX2_FRW{HN1$X9Xo?Qvan>n)qup?1ZKnDV`K zj0AhdhcCzzyYu2#zpy>>kc+nAwCyXOAZ2c4j>3kA;pqX}z1f!UILgoYEM|4;qR{m! zUbpJPF4pKAT&l9~-O>Xq_NKmAi@y*q>Y%%Ied2q$bLK7&BNhZ)D3x`$F%o3#96IZ+ zXgna-{Gp0s=jt}pS>Vb6C6g9hCy#u1qk-gK#w8Q&iR-+ms@u#iJ+agQ@8U`yI#FqM zxt0sRW^L*QkSzicmrT|yr5%O$Omvh;_z89^H_S)S>g{-4$#81_)~_QJK`-(Vi)|%R zixNn9ukGVfK6r=ce3L` zOlE9Y{0dII-oj?HX#mkb#n)b4j+e=V{^3Cnv+R~yu&asg(;an>SM$B-ew})P!qp9+XScqa`MhUI6?401$Njy<<nmVpJZuvmnd^ft|R?Mpe&P#PcfXsOV=Jq(fZiBaNJJH|XE`Wp{citrUzt`xjZcn!cK&d}Wh*Ni9^IacP2?u>8ⅇSGNnZ%3LUDjj)Zq%q`t=KnV(M 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 DA`UFg literal 0 HcmV?d00001 diff --git a/RECOGNITION/top5-weekly-2013-07-22.png b/RECOGNITION/top5-weekly-2013-07-22.png new file mode 100644 index 0000000000000000000000000000000000000000..f60d475cb658749b39ddd198102ba96e7bfa09f1 GIT binary patch literal 137228 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ðuKenM#5`s*3B#`BVo% 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%0Dd*or*sCFbF@{cT}n0Z?IT3joi_ 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

{W!-5|<#<2JNptr{# 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 a_kpjG<8iTA%p-rVP>@xXsgN@L_`d*6xVGK^ literal 0 HcmV?d00001 diff --git a/RECOGNITION/top5-weekly-2013-07-23.png b/RECOGNITION/top5-weekly-2013-07-23.png new file mode 100644 index 0000000000000000000000000000000000000000..fb0874b993c202757b643a5c612d6fe4bfcf58df GIT binary patch literal 38967 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 OUJEF~q}<5q*1rIbO;Hd4 literal 0 HcmV?d00001 From 177d7cc0083836f08f1014270cd811eeb976e7ba Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Tue, 23 Jul 2013 14:39:56 +0530 Subject: [PATCH 003/110] Update README.md --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index b61a80e00..e5df16d66 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,13 @@ -Martyr2’s Mega Project List +Karan's Mega Project List ======== Trying to complete all projects from [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/). -#### Addendum -- July 14, 2013: This repo is in the top 5 on GitHub. (And again on [July 22, 2013](https://github.com/thekarangoel/Projects/blob/master/top5-2013-07-22%2013_10_30.png)) +### [RECOGNITION](https://github.com/thekarangoel/Projects/tree/master/RECOGNITION) -![made it to top 5](https://github.com/thekarangoel/Projects/raw/master/top5.png) +.This repo is in the top 5 on GitHub on [July 14 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-14.png). (And again on [July 22, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-22%2013_10_30.png), and again on [July 23, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-23.png).) And on [weekly](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-weekly-2013-07-22.png) [list](https://github.com/thekarangoel/Projects/blob/master/RECOGNITION/top5-weekly-2013-07-23.png) during the week of July 2013. + +![July 22, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-22%2013_10_30.png) =============================== From fcf17413fc7575cf8adaebcf9319c87e36197913 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 24 Jul 2013 15:43:06 +0530 Subject: [PATCH 004/110] Making problems more practical. Will change some problems around, and remove some and add some, to make this repo more practical and achievable. --- README.md | 277 +++++++++++++++++++++++++++--------------------------- 1 file changed, 140 insertions(+), 137 deletions(-) diff --git a/README.md b/README.md index e5df16d66..e259c5154 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,9 @@ -Karan's Mega Project List +Mega Project List ======== -Trying to complete all projects from [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/). +#### [RECOGNITION](https://github.com/thekarangoel/Projects/tree/master/RECOGNITION) -### [RECOGNITION](https://github.com/thekarangoel/Projects/tree/master/RECOGNITION) - -.This repo is in the top 5 on GitHub on [July 14 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-14.png). (And again on [July 22, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-22%2013_10_30.png), and again on [July 23, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-23.png).) And on [weekly](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-weekly-2013-07-22.png) [list](https://github.com/thekarangoel/Projects/blob/master/RECOGNITION/top5-weekly-2013-07-23.png) during the week of July 2013. +This repo is in the top 5 on GitHub on [July 14 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-14.png). (And again on [July 22, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-22%2013_10_30.png), and again on [July 23, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-23.png).) And on [weekly](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-weekly-2013-07-22.png) [list](https://github.com/thekarangoel/Projects/blob/master/RECOGNITION/top5-weekly-2013-07-23.png) during the week of July 2013. ![July 22, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-22%2013_10_30.png) @@ -26,293 +24,298 @@ I will link to each project that I complete. Some will be in this same repo, som To get started, fork this repo, delete this README and rename [*README-scratch.md*](https://github.com/thekarangoel/Projects/blob/master/README-scratch.md) to *README.md*. -**Note**: I have't read any problem while creating this repo. I'll read them as I start solving the problems. Hence, there is no prior filtering of problems. Keeps things spicy. :) - =============================== Numbers --------- -[**Find PI to the Nth Digit**](https://github.com/thekarangoel/Projects/blob/master/Numbers/pi.py) – Enter a number and have the program generate PI up to that many decimal places. Keep a limit to how far the program will go. +[**Find PI to the Nth Digit**](https://github.com/thekarangoel/Projects/blob/master/Numbers/pi.py) - Enter a number and have the program generate PI up to that many decimal places. Keep a limit to how far the program will go. -[**Fibonacci Sequence**](https://github.com/thekarangoel/Projects/blob/master/Numbers/fibonacci.py) – Enter a number and have the program generate the Fibonacci sequence to that number or to the Nth number. +[**Fibonacci Sequence**](https://github.com/thekarangoel/Projects/blob/master/Numbers/fibonacci.py) - Enter a number and have the program generate the Fibonacci sequence to that number or to the Nth number. -[**Prime Factorization**](https://github.com/thekarangoel/Projects/blob/master/Numbers/prime.py) – Have the user enter a number and find all Prime Factors (if there are any) and display them. +[**Prime Factorization**](https://github.com/thekarangoel/Projects/blob/master/Numbers/prime.py) - Have the user enter a number and find all Prime Factors (if there are any) and display them. -[**Next Prime Number**](https://github.com/thekarangoel/Projects/blob/master/Numbers/next_prime.py) – Have the program find prime numbers until the user chooses to stop asking for the next one. +[**Next Prime Number**](https://github.com/thekarangoel/Projects/blob/master/Numbers/next_prime.py) - Have the program find prime numbers until the user chooses to stop asking for the next one. -[**Find Cost of Tile to Cover W x H Floor**](https://github.com/thekarangoel/Projects/blob/master/Numbers/tile.py) – Calculate the total cost of tile it would take to cover a floor plan of width and height, using a cost entered by the user. +[**Find Cost of Tile to Cover W x H Floor**](https://github.com/thekarangoel/Projects/blob/master/Numbers/tile.py) - Calculate the total cost of tile it would take to cover a floor plan of width and height, using a cost entered by the user. -**Mortgage Calculator** – Calculate the monthly payments of a fixed term mortgage over given Nth terms at a given interest rate. Also figure out how long it will take the user to pay back the loan. +**Mortgage Calculator** - Calculate the monthly payments of a fixed term mortgage over given Nth terms at a given interest rate. Also figure out how long it will take the user to pay back the loan. -[**Change Return Program**](https://github.com/thekarangoel/Projects/blob/master/Numbers/change.py) – The user enters a cost and then the amount of money given. The program will figure out the change and the number of quarters, dimes, nickels, pennies needed for the change. +[**Change Return Program**](https://github.com/thekarangoel/Projects/blob/master/Numbers/change.py) - The user enters a cost and then the amount of money given. The program will figure out the change and the number of quarters, dimes, nickels, pennies needed for the change. -[**Binary to Decimal and Back Converter**](https://github.com/thekarangoel/Projects/blob/master/Numbers/binary_decimal.py) – Develop a converter to convert a decimal number to binary or a binary number to its decimal equivalent. +[**Binary to Decimal and Back Converter**](https://github.com/thekarangoel/Projects/blob/master/Numbers/binary_decimal.py) - Develop a converter to convert a decimal number to binary or a binary number to its decimal equivalent. -[**Calculator**](https://github.com/thekarangoel/Projects/blob/master/Numbers/calc.py) – A simple calculator to do basic operators. Make it a scientific calculator for added complexity. +[**Calculator**](https://github.com/thekarangoel/Projects/blob/master/Numbers/calc.py) - A simple calculator to do basic operators. Make it a scientific calculator for added complexity. -**Unit Converter (temp, currency, volume, mass and more)** – Converts various units between one another. The user enters the type of unit being entered, the type of unit they want to convert to and then the value. The program will then make the conversion. +**Unit Converter (temp, currency, volume, mass and more)** - Converts various units between one another. The user enters the type of unit being entered, the type of unit they want to convert to and then the value. The program will then make the conversion. -[**Alarm Clock**](https://github.com/thekarangoel/Projects/blob/master/Numbers/alarm.py) – A simple clock where it plays a sound after X number of minutes/seconds or at a particular time. +[**Alarm Clock**](https://github.com/thekarangoel/Projects/blob/master/Numbers/alarm.py) - A simple clock where it plays a sound after X number of minutes/seconds or at a particular time. -[**Distance Between Two Cities**](https://github.com/thekarangoel/Projects/blob/master/Numbers/distance.py) – Calculates the distance between two cities and allows the user to specify a unit of distance. This program may require finding coordinates for the cities like latitude and longitude. +[**Distance Between Two Cities**](https://github.com/thekarangoel/Projects/blob/master/Numbers/distance.py) - Calculates the distance between two cities and allows the user to specify a unit of distance. This program may require finding coordinates for the cities like latitude and longitude. -[**Credit Card Validator**](https://github.com/thekarangoel/Projects/blob/master/Numbers/credit_card_validator.py) – Takes in a credit card number from a common credit card vendor (Visa, MasterCard, American Express, Discoverer) and validates it to make sure that it is a valid number (look into how credit cards use a checksum). +[**Credit Card Validator**](https://github.com/thekarangoel/Projects/blob/master/Numbers/credit_card_validator.py) - Takes in a credit card number from a common credit card vendor (Visa, MasterCard, American Express, Discoverer) and validates it to make sure that it is a valid number (look into how credit cards use a checksum). -**Tax Calculator** – Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. +**Tax Calculator** - Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. -**Dijkstra’s Algorithm** – Create a program that finds the shortest path through a graph using its edges. +**Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. Text --------- -[**Reverse a String**](https://github.com/thekarangoel/Projects/blob/master/Text/reverse.py) – Enter a string and the program will reverse it and print it out. +[**Reverse a String**](https://github.com/thekarangoel/Projects/blob/master/Text/reverse.py) - Enter a string and the program will reverse it and print it out. -[**Pig Latin**](https://github.com/thekarangoel/Projects/blob/master/Text/piglatin.py) – Pig Latin is a game of alterations played on the English language game. To create the Pig Latin form of an English word the initial consonant sound is transposed to the end of the word and an ay is affixed (Ex.: "banana" would yield anana-bay). Read Wikipedia for more information on rules. +[**Pig Latin**](https://github.com/thekarangoel/Projects/blob/master/Text/piglatin.py) - Pig Latin is a game of alterations played on the English language game. To create the Pig Latin form of an English word the initial consonant sound is transposed to the end of the word and an ay is affixed (Ex.: "banana" would yield anana-bay). Read Wikipedia for more information on rules. -[**Count Vowels**](https://github.com/thekarangoel/Projects/blob/master/Text/count_vowels.py) – Enter a string and the program counts the number of vowels in the text. For added complexity have it report a sum of each vowel found. +[**Count Vowels**](https://github.com/thekarangoel/Projects/blob/master/Text/count_vowels.py) - Enter a string and the program counts the number of vowels in the text. For added complexity have it report a sum of each vowel found. -[**Check if Palindrome**](https://github.com/thekarangoel/Projects/blob/master/Text/palindrome.py) – Checks if the string entered by the user is a palindrome. That is that it reads the same forwards as backwards like “racecar” +[**Check if Palindrome**](https://github.com/thekarangoel/Projects/blob/master/Text/palindrome.py) - Checks if the string entered by the user is a palindrome. That is that it reads the same forwards as backwards like “racecar” -**Count Words in a String** – Counts the number of individual words in a string. For added complexity read these strings in from a text file and generate a summary. +**Count Words in a String** - Counts the number of individual words in a string and display the top 5/10 most used words. -**Text Editor** – Notepad style application that can open, edit, and save text documents. Add syntax highlighting and other features. +**Text Editor** - Notepad style application that can open, edit, and save text documents. *Optional: Add syntax highlighting and other features.* -**RSS Feed Creator** – A program which can read in text from other sources and put it in RSS or Atom news format for syndication. +**RSS Feed Creator** - A program which can read in text from other sources and put it in RSS or Atom news format for syndication. -**Post it Notes Program** – A program where you can add text reminders and post them. You can have the program also add popup reminders. +**Post it Notes Program** - A program where you can add text reminders and post them. You can have the program also add popup reminders. -**Quote Tracker (market symbols etc)** – A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked and the program can show green up and red down arrows to show which direction the stock value has moved. +**Quote Tracker (market symbols etc)** - A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked and the program can show green up and red down arrows to show which direction the stock value has moved. -**Guestbook / Journal** – A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. +**Guestbook / Journal** - A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. -**News Ticker and Game Scores** – A program which sits on your desktop and aggregates news and game scores from various sources on the net. It then scrolls them across the screen on regular intervals. +**News Ticker and Game Scores** - A program which sits on your desktop and aggregates news and game scores from various sources on the net. It then scrolls them across the screen on regular intervals. -**Fortune Teller (Horoscope)** – A program that checks your horoscope on various astrology sites and puts them together for you each day. +**Fortune Teller (Horoscope)** - A program that checks your horoscope on various astrology sites and puts them together for you each day. -**Vigenere / Vernam / Ceasar Ciphers** – Functions for encrypting and decrypting data messages. Then send them to a friend. +**Vigenere / Vernam / Ceasar Ciphers** - Functions for encrypting and decrypting data messages. Then send them to a friend. -**Random Gift Suggestions** – Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one and perhaps places you can get it. +**Random Gift Suggestions** - Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one and perhaps places you can get it. -**Text to HTML Generator** – Converts text files into web HTML files and stylizes them. Great for making online documentation of standard text documentation. +**Text to HTML Generator** - Converts text files into web HTML files and stylizes them. Great for making online documentation of standard text documentation. -**CD Key Generator** – Generates a unique key for your applications to use based on some arbitrary algorithm that you can specify. Great for software developers looking to make shareware that can be activated. +**CD Key Generator** - Generates a unique key for your applications to use based on some arbitrary algorithm that you can specify. Great for software developers looking to make shareware that can be activated. -**Regex Query Tool** – A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular exp****ression against the source text and return any matches or flag errors in the regular exp****ression. +**Regex Query Tool** - A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular exp****ression against the source text and return any matches or flag errors in the regular exp****ression. Networking --------- -**FTP Program** – A file transfer program which can transfer files back and forth from a remote web sever. +**FTP Program** - A file transfer program which can transfer files back and forth from a remote web sever. -**Get Atomic Time from Internet Clock** – This program will get the true atomic time from an atomic time clock on the Internet. There are various clocks across the world. Do a search for a list of them. +**Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. There are various clocks across the world. Do a search for a list of them. -**Chat Application (IRC or MSN Style)** – Create a chat application that can create simple chat rooms like on Internet Relay Chat (IRC) or a more direct chatting style like MSN. For added complexity, create your own protocol to facilitate this chatting. +**Chat Application (IRC or MSN Style)** - Create a chat application that can create simple chat rooms like on Internet Relay Chat (IRC) or a more direct chatting style like MSN. For added complexity, create your own protocol to facilitate this chatting. -**Fetch Current Weather** – Get the current weather for a given zip/postal code. +**Fetch Current Weather** - Get the current weather for a given zip/postal code. -**P2P File Sharing App** – Create a program like LimeWire, FrostWire, Bearshare, or a torrent style application. +**P2P File Sharing App** - Create a program like LimeWire, FrostWire, Bearshare, or a torrent style application. -**Port Scanner** – Enter an IP address and a port range where the program will then attempt to find open ports on the given computer by connecting to each of them. On any successful connections mark the port as open. +**Port Scanner** - Enter an IP address and a port range where the program will then attempt to find open ports on the given computer by connecting to each of them. On any successful connections mark the port as open. -**Mail Checker (POP3 / IMAP)** – The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email on several accounts at a given interval. +**Mail Checker (POP3 / IMAP)** - The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email on several accounts at a given interval. -**Packet Sniffer** – A utility program that will read packets coming in and out of the machine along with related information like destination and payload size. +**Packet Sniffer** - A utility program that will read packets coming in and out of the machine along with related information like destination and payload size. -**Country from IP Lookup** – Enter an IP address and find the country that IP is registered in. +**Country from IP Lookup** - Enter an IP address and find the country that IP is registered in. -**Whois Search Tool** – Enter an IP or host address and have it look it up through whois and return the results to you. +**Whois Search Tool** - Enter an IP or host address and have it look it up through whois and return the results to you. -**Zip / Postal Code Lookup** – Enter a zip or postal code and have it return which city/cities that are in that zip code. +**Zip / Postal Code Lookup** - Enter a zip or postal code and have it return which city/cities that are in that zip code. -**Remote Login** – Create a remote desktop style application which can see and control the remote computer (given you have permissions). It may require the use of your own private network and a second computer to test with. +**Remote Login** - Create a remote desktop style application which can see and control the remote computer (given you have permissions). It may require the use of your own private network and a second computer to test with. -**Site Checker with Time Scheduling** – An application that attempts to connect to a website or server every so many minutes or a given time and check if it is up. If it is down, it will notify you by email or by posting a notice on screen. +**Site Checker with Time Scheduling** - An application that attempts to connect to a website or server every so many minutes or a given time and check if it is up. If it is down, it will notify you by email or by posting a notice on screen. -**Small Web Server** – A simple web server that can serve HTML files that contain Javascript and other forms of non-code executing code. Added complexity would be to try and implement streaming video, create a server-side language, or serve up other stream types. +**Small Web Server** - A simple web server that can serve HTML files that contain Javascript and other forms of non-code executing code. Added complexity would be to try and implement streaming video, create a server-side language, or serve up other stream types. -**Web Bot** – An automated program which carries out tasks on the web including checking websites, page scraping, and summarization of data or web posting. +**Web Bot** - An automated program which carries out tasks on the web including checking websites, page scraping, and summarization of data or web posting. Classes --------- -**Product Inventory Project** – Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an inventory class which keeps track of various products and can sum up the inventory value. +**Product Inventory Project** - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an inventory class which keeps track of various products and can sum up the inventory value. -**Movie Store** – Manage video rentals and controls when videos are checked out, due to return, overdue fees and for added complexity create a summary of those accounts which are overdue for contact. +**Movie Store** - Manage video rentals and controls when videos are checked out, due to return, overdue fees and for added complexity create a summary of those accounts which are overdue for contact. -**Airline / Hotel Reservation System** – Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. +**Airline / Hotel Reservation System** - Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. -**Student Grade Book Application** – Keep track of students (with a student class that has their name, average, and scores) in a class and their grades. Assign their scores on tests and assignments to the students and figure out their average and grade for the class. For added complexity put the students on a bell curve. +**Student Grade Book Application** - Keep track of students (with a student class that has their name, average, and scores) in a class and their grades. Assign their scores on tests and assignments to the students and figure out their average and grade for the class. For added complexity put the students on a bell curve. -**Bank Account Manager** \- Create a class called “Account” which will be an abstract class for three other classes called “CheckingAccount”, “SavingsAccount” and “BusinessAccount”. Manage credits and debits from these accounts through an ATM style program. +**Bank Account Manager** - Create a class called “Account” which will be an abstract class for three other classes called “CheckingAccount”, “SavingsAccount” and “BusinessAccount”. Manage credits and debits from these accounts through an ATM style program. -**Library Catalog** – Create a book class with a title, page count, ISBN and whether or not it is checked out or not. Manage a collection of various books and allow the user to check out books or return books. For added complexity generate a report of those books overdue and any fees. Also allow users to put books on reserve. +**Library Catalog** - Create a book class with a title, page count, ISBN and whether or not it is checked out or not. Manage a collection of various books and allow the user to check out books or return books. For added complexity generate a report of those books overdue and any fees. Also allow users to put books on reserve. -**Patient / Doctor Scheduler** – Create a patient class and a doctor class. Have a doctor that can handle multiple patients and setup a scheduling program where a doctor can only handle 16 patients during an 8 hr work day. +**Patient / Doctor Scheduler** - Create a patient class and a doctor class. Have a doctor that can handle multiple patients and setup a scheduling program where a doctor can only handle 16 patients during an 8 hr work day. -**Recipe Creator and Manager** – Create a recipe class with ingredients and a put them in a recipe manager program that organizes them into categories like deserts, main courses or by ingredients like chicken, beef, soups, pies etc. +**Recipe Creator and Manager** - Create a recipe class with ingredients and a put them in a recipe manager program that organizes them into categories like deserts, main courses or by ingredients like chicken, beef, soups, pies etc. -**Image Gallery** – Create an image abstract class and then a class that inherits from it for each image type. Put them in a program which displays them in a gallery style format for viewing. +**Image Gallery** - Create an image abstract class and then a class that inherits from it for each image type. Put them in a program which displays them in a gallery style format for viewing. -**Class to Handle Large Numbers** – We know that the basic data types like integer, long, double, and floats only go so far. Create a class that can manage extremely large numbers like those used in space exploration. +**Class to Handle Large Numbers** - We know that the basic data types like integer, long, double, and floats only go so far. Create a class that can manage extremely large numbers like those used in space exploration. -**Chart Making Class / API** – Create a class, or a set of classes, that generates bar charts, pie charts, histograms, and scatter plot charts. For added complexity, make this a service where people can connect to a web server, supply information and it returns a chart image for them in gif or jpg format. +**Chart Making Class / API** - Create a class, or a set of classes, that generates bar charts, pie charts, histograms, and scatter plot charts. For added complexity, make this a service where people can connect to a web server, supply information and it returns a chart image for them in gif or jpg format. -**Shape Area and Perimeter Classes** – Create an abstract class called “Shape” and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type. +**Shape Area and Perimeter Classes** - Create an abstract class called “Shape” and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type. -**Matrix Class** – A class to manage matrices. Add, subtract and multiple matrices. +**Matrix Class** - A class to manage matrices. Add, subtract and multiple matrices. -**Flower Shop Ordering To Go** – Create a flower shop application which deals in flower objects and use those flower objects in a bouquet object which can then be sold. Keep track of the number of objects and when you may need to order more. +**Flower Shop Ordering To Go** - Create a flower shop application which deals in flower objects and use those flower objects in a bouquet object which can then be sold. Keep track of the number of objects and when you may need to order more. -**Vending Machine** – Create an application which takes money and dispenses various types of candy or other item. The user enters a number and letter sequence, like D9, and have it return an instance of “Item” which of the proper type. Example when they press D9 it will return a type of candy bar which is an instance of Mr. GoodBar. +**Vending Machine** - Create an application which takes money and dispenses various types of candy or other item. The user enters a number and letter sequence, like D9, and have it return an instance of “Item” which of the proper type. Example when they press D9 it will return a type of candy bar which is an instance of Mr. GoodBar. -**Josephus Problem** – Create a program which links together various node objects and then every Nth object is removed until you have one object left. This last object is the sole survivor. Look it up on Google under “Josephus Algorithm” +**Josephus Problem** - Create a program which links together various node objects and then every Nth object is removed until you have one object left. This last object is the sole survivor. Look it up on Google under “Josephus Algorithm” -**Family Tree Creator** – Create a class called “Person” which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen. +**Family Tree Creator** - Create a class called “Person” which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen. Threading --------- -**Create A Progress Bar for Downloads** – Create a progress bar for applications that can keep track of a download in progress. The progress bar will be on a separate thread and will communicate with the main thread using delegates. +**Create A Progress Bar for Downloads** - Create a progress bar for applications that can keep track of a download in progress. The progress bar will be on a separate thread and will communicate with the main thread using delegates. -**Download Manager** – Allow your program to download various files and each one is downloading in the background on a separate thread. The main thread will keep track of the other thread’s progress and notify the user when downloads are completed. +**Download Manager** - Allow your program to download various files and each one is downloading in the background on a separate thread. The main thread will keep track of the other thread’s progress and notify the user when downloads are completed. -**Chat Application (remoting style)** – Create a chat application which allows you to connect directly to another computer by their IP through the use of remoting and allow your “server” application handle multiple incoming connections. +**Chat Application (remoting style)** - Create a chat application which allows you to connect directly to another computer by their IP through the use of remoting and allow your “server” application handle multiple incoming connections. -**Bulk Thumbnail Creator** – Picture processing can take a bit of time for some transformations. Especially if the image is large. Create an image program which can take hundreds of images and converts them to a specified size in the background thread while you do other things. For added complexity, have one thread handling re-sizing, have another bulk renaming of thumbnails etc. +**Bulk Thumbnail Creator** - Picture processing can take a bit of time for some transformations. Especially if the image is large. Create an image program which can take hundreds of images and converts them to a specified size in the background thread while you do other things. For added complexity, have one thread handling re-sizing, have another bulk renaming of thumbnails etc. Web --------- -**WYSIWG (What you see is what you get) Editor** – Create an editor online which allows people to move around elements, create tables, write text, set colors etc for web pages without having to know HTML. Think Dreamweaver or FrontPage but for online sites. If you need an example check out the DIC page used to create a post. +**WYSIWG (What you see is what you get) Editor** - Create an editor online which allows people to move around elements, create tables, write text, set colors etc for web pages without having to know HTML. Think Dreamweaver or FrontPage but for online sites. If you need an example check out the DIC page used to create a post. -**Web Browser with Tabs** – Create a small web browser that allows you to navigate the web and contains tabs which can be used to navigate to multiple web pages at once. For simplicity don’t worry about executing Javascript or other client side code. +**Web Browser with Tabs** - Create a small web browser that allows you to navigate the web and contains tabs which can be used to navigate to multiple web pages at once. For simplicity don’t worry about executing Javascript or other client side code. -**Page Scraper** – Create an application which connects to a site and pulls out all links, or images, and saves them to a list. For added complexity, organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file. +**Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. For added complexity, organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file. -**File Downloader** – An application which can download various objects on a page including video streams or all files on a page. Great for pages with a lot of download links. +**File Downloader** - An application which can download various objects on a page including video streams or all files on a page. Great for pages with a lot of download links. -**Telnet Application** – Create an application which can telnet into servers across the internet and run basic commands. +**Telnet Application** - Create an application which can telnet into servers across the internet and run basic commands. -**Online White Board** – Create an application which allows you and friends to collaborate on a white board online. Draw pictures, write notes and use various colors to flesh out ideas for projects. For added complexity try building in picture tubes. +**Online White Board** - Create an application which allows you and friends to collaborate on a white board online. Draw pictures, write notes and use various colors to flesh out ideas for projects. For added complexity try building in picture tubes. -**Bandwidth Monitor** – A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it. +**Bandwidth Monitor** - A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it. -**Bookmark Collector and Sorter** – An application that you can put online for people to upload bookmarks to, have it sort them, remove duplicates and export the entire list as a Firefox/IE/Safari bookmark file. For added complexity see if you can group the bookmark items into various folders. +**Bookmark Collector and Sorter** - An application that you can put online for people to upload bookmarks to, have it sort them, remove duplicates and export the entire list as a Firefox/IE/Safari bookmark file. For added complexity see if you can group the bookmark items into various folders. -**Password Safe** – A program which keeps track of passwords for sites or applications and encrypts them with a key so that no one can read them. +**Password Safe** - A program which keeps track of passwords for sites or applications and encrypts them with a key so that no one can read them. -**Media Player Widget for iGoogle** – Create an iGoogle gadget which can play various song lists from your computer as well as share one song daily. Perhaps let people look up which songs you have listened to lately. +**Media Player Widget for iGoogle** - Create an iGoogle gadget which can play various song lists from your computer as well as share one song daily. Perhaps let people look up which songs you have listened to lately. -**Text Based Game Like Utopia** – Create a simple text based RPG like Utopia where you can create a civilization, gather resources, forge alliances, cast spells and more on a turn based system. See if you can dominate the kingdom. +**Text Based Game Like Utopia** - Create a simple text based RPG like Utopia where you can create a civilization, gather resources, forge alliances, cast spells and more on a turn based system. See if you can dominate the kingdom. -**Scheduled Auto Login and Action** – Make an application which logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking web mail, posting regular content, or getting info for other applications and saving it to your computer. +**Scheduled Auto Login and Action** - Make an application which logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking web mail, posting regular content, or getting info for other applications and saving it to your computer. -**E-Card Generator** – Make a site that allows people to generate their own little e-cards and send them to other people. Can use flash or not. Use a picture library and perhaps insightful mottos or quotes. +**E-Card Generator** - Make a site that allows people to generate their own little e-cards and send them to other people. Can use flash or not. Use a picture library and perhaps insightful mottos or quotes. -**Content Management System** – Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small and allow for the addition of modules/addons later. +**Content Management System** - Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small and allow for the addition of modules/addons later. -**Template Maker** – Make a site or application which allows the user to enter in various color codes, elements, dimensions and constructs a template file for a particular application like PHPBB, Invision Board, MySpace, Bebo, etc. +**Template Maker** - Make a site or application which allows the user to enter in various color codes, elements, dimensions and constructs a template file for a particular application like PHPBB, Invision Board, MySpace, Bebo, etc. -**CAPTCHA Maker** – Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. If you use PHP, take a look at the image functions of GD. +**CAPTCHA Maker** - Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. If you use PHP, take a look at the image functions of GD. Files --------- -**Quiz Maker** – Make an application which takes various questions form a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes. +**Quiz Maker** - Make an application which takes various questions form a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes. -**Quick Launcher** – A utility program that allows the user to assign various programs to icons on a toolbar. Then by clicking the buttons they can quickly launch the programs with parameters etc. Much like Windows quick launch. +**Quick Launcher** - A utility program that allows the user to assign various programs to icons on a toolbar. Then by clicking the buttons they can quickly launch the programs with parameters etc. Much like Windows quick launch. -**File Explorer** – Create your own windows explorer program but with added features, better searching, new icons and other views. +**File Explorer** - Create your own windows explorer program but with added features, better searching, new icons and other views. -**Sort File Records Utility** – Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. +**Sort File Records Utility** - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. -**Add Transactions In File and Find Averages** – Read in a file of financial transactions, group them into accounts, add up fields or find averages or apply credits and debits to each account. +**Add Transactions In File and Find Averages** - Read in a file of financial transactions, group them into accounts, add up fields or find averages or apply credits and debits to each account. -**Create Zip File Maker** – The user enters various files from different directories and maybe even another computer on the network and the program transfers them and zips them up into a zip file. For added complexity, apply actual compression to the files. +**Create Zip File Maker** - The user enters various files from different directories and maybe even another computer on the network and the program transfers them and zips them up into a zip file. For added complexity, apply actual compression to the files. -**PDF Generator** – An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. +**PDF Generator** - An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. -**Bulk Renamer and Organizer** – This program will take a series of files and renames them with a specific filename filter entered by the user. For instance if the user enters myimage###.jpg it will rename all files with a “minimum” of three numbers like “myimage001.jpg”, “myimage145.jpg” or even “myimage1987.jpg” since 1987 has at least three numbers. +**Bulk Renamer and Organizer** - This program will take a series of files and renames them with a specific filename filter entered by the user. For instance if the user enters myimage###.jpg it will rename all files with a “minimum” of three numbers like “myimage001.jpg”, “myimage145.jpg” or even “myimage1987.jpg” since 1987 has at least three numbers. -**Mp3 Tagger** – Modify and add ID3v1 tags to MP3 files. See if you can also add in the album art into the MP3 file’s header as well as other ID3v2 tags. +**Mp3 Tagger** - Modify and add ID3v1 tags to MP3 files. See if you can also add in the album art into the MP3 file’s header as well as other ID3v2 tags. -**Log File Maker** – Make an application which logs various statistics in response to given events. This can be something that logs what an application does, what the system is doing, when something like a file changes etc. +**Log File Maker** - Make an application which logs various statistics in response to given events. This can be something that logs what an application does, what the system is doing, when something like a file changes etc. -**Excel Spreadsheet Exporter** – Create an online application which can read in a file and create an Excel Spreadsheet to export back. This can be through CVS or other file formats. For added complexity, see if you can create formula fields as well. +**Excel Spreadsheet Exporter** - Create an online application which can read in a file and create an Excel Spreadsheet to export back. This can be through CVS or other file formats. For added complexity, see if you can create formula fields as well. -**RPG Character Stat Creator** – Make a program which will randomly create a character’s stats based on several rules set forth by the user. Have it generate a class, gender, strength/magic/dexterity points, and extra abilities or trades. Have it save it to a file which can then be printed out by a dungeon master. +**RPG Character Stat Creator** - Make a program which will randomly create a character’s stats based on several rules set forth by the user. Have it generate a class, gender, strength/magic/dexterity points, and extra abilities or trades. Have it save it to a file which can then be printed out by a dungeon master. -**Image Map Generator** – Image maps are those images on the web that have multiple hover points that link to different pages. Such images may include maps or splash pages. See if you can make one where the user specifies an image, clicks hotspots in the image and specify links. It will then generate the HTML code to a file that the user can then copy and paste into their website to make the image map. +**Image Map Generator** - Image maps are those images on the web that have multiple hover points that link to different pages. Such images may include maps or splash pages. See if you can make one where the user specifies an image, clicks hotspots in the image and specify links. It will then generate the HTML code to a file that the user can then copy and paste into their website to make the image map. -**File Copy Utility** – Create a utility that can do bulk file copying and backups of other files. +**File Copy Utility** - Create a utility that can do bulk file copying and backups of other files. -**Code Snippet Manager** – Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. For extra practice try adding syntax highlighting based on the language. +**Code Snippet Manager** - Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. For extra practice try adding syntax highlighting based on the language. -**Versioning Manager** – Create your own versioning system for code files. Users are forced to check out items and lock items during reading and writing so that a group of programmers are not accidentally overwriting code files on one another. +**Versioning Manager** - Create your own versioning system for code files. Users are forced to check out items and lock items during reading and writing so that a group of programmers are not accidentally overwriting code files on one another. Databases --------- -**SQL Query Analyzer** – A utility application which a user can enter a query and have it run against a local database and look for ways to make it more efficient. +**SQL Query Analyzer** - A utility application which a user can enter a query and have it run against a local database and look for ways to make it more efficient. -**Remote SQL Tool** – A utility that can execute queries on remote servers from your local computer across the Internet. It should take in a remote host, user name and password, run the query and return the results. +**Remote SQL Tool** - A utility that can execute queries on remote servers from your local computer across the Internet. It should take in a remote host, user name and password, run the query and return the results. -**Baseball / Other Card Collector** – Create an online application for keeping track of a collection of cards. Let the user enter all cards in a set, check off which ones they have, which ones they need and generate lists of cards they are looking for. For extra complexity, have it sum up sets and generate reports on how close they are of completing sets or the current value of a set. +**Baseball / Other Card Collector** - Create an online application for keeping track of a collection of cards. Let the user enter all cards in a set, check off which ones they have, which ones they need and generate lists of cards they are looking for. For extra complexity, have it sum up sets and generate reports on how close they are of completing sets or the current value of a set. -**Report Generator** – Create a utility that generates a report based on some tables in a database. Generates a sales reports based on the order/order details tables or sums up the days current database activity. +**Report Generator** - Create a utility that generates a report based on some tables in a database. Generates a sales reports based on the order/order details tables or sums up the days current database activity. -**Database Backup Script Maker** – A program which reads a database’s objects, relationships, records and stored procedures and creates a .sql file which can then be imported into another database or kept as a backup file to rebuild the database with. +**Database Backup Script Maker** - A program which reads a database’s objects, relationships, records and stored procedures and creates a .sql file which can then be imported into another database or kept as a backup file to rebuild the database with. -**Event Scheduler and Calendar** – Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. For added complexity, allow the application to create reoccurrence events that reoccur every day, week, month, year etc. +**Event Scheduler and Calendar** - Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. For added complexity, allow the application to create reoccurrence events that reoccur every day, week, month, year etc. -**Budget Tracker** – Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. For added complexity allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period. +**Budget Tracker** - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. For added complexity allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period. -**Address Book** – Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database. For extra complexity, allow the user to connect to a website publish their address book based on specific options the user has set. +**Address Book** - Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database. For extra complexity, allow the user to connect to a website publish their address book based on specific options the user has set. -**TV Show Tracker** – Got a favorite show you don’t want to miss? Don’t have a PVR or want to be able to find the show to then PVR it later? Make an application which can search various online TV Guide sites, locate the shows/times/channels and add them to a database application. The database/website then can send you email reminders that a show is about to start and which channel it will be on. +**TV Show Tracker** - Got a favorite show you don’t want to miss? Don’t have a PVR or want to be able to find the show to then PVR it later? Make an application which can search various online TV Guide sites, locate the shows/times/channels and add them to a database application. The database/website then can send you email reminders that a show is about to start and which channel it will be on. -**Travel Planner System** – Make a system that allows users to put together their own little travel itinerary and keep track of the airline / hotel arrangements, points of interest, budget and schedule. +**Travel Planner System** - Make a system that allows users to put together their own little travel itinerary and keep track of the airline / hotel arrangements, points of interest, budget and schedule. -**Entity Relationship Diagram (ERD) Creator** – A program that allows the user to put together ERD diagram and save it or have it generate some basic SQL syntax to give them a jump start. +**Entity Relationship Diagram (ERD) Creator** - A program that allows the user to put together ERD diagram and save it or have it generate some basic SQL syntax to give them a jump start. -**Database Translation (MySQL SQL Server)** – A simple utility that reads in from one database and constructs SQL compliant with another database. Then saves that to another database. One popular transition would be to and from MySQL server for databases like SQL Server and Oracle. +**Database Translation (MySQL SQL Server)** - A simple utility that reads in from one database and constructs SQL compliant with another database. Then saves that to another database. One popular transition would be to and from MySQL server for databases like SQL Server and Oracle. -**Web Board (Forum)** – Create a forum for you and your buddies to post, administer and share thoughts and ideas. +**Web Board (Forum)** - Create a forum for you and your buddies to post, administer and share thoughts and ideas. Graphics and Multimedia --------- -**Slide Show** – Make an application that shows various pictures in a slide show format. For extra complexity try adding various effects like fade in/out, star wipe and window blinds transitions. +**Slide Show** - Make an application that shows various pictures in a slide show format. For extra complexity try adding various effects like fade in/out, star wipe and window blinds transitions. + +**Mind Mapper** - Allow the user to put down ideas and quickly brainstorm how they are related into a mind map. The goal here is speed so let the user quickly write in an idea and drag it around in a visual map to show relationships. + +**Import Picture and Save as Grayscale** - A utility that sucks the color right out of an image and saves it. You could add more including adjusting contrast, colorizing and more for added complexity. + +**Stream Video from Online** - Try to create your own online streaming video player. -**Mind Mapper** – Allow the user to put down ideas and quickly brainstorm how they are related into a mind map. The goal here is speed so let the user quickly write in an idea and drag it around in a visual map to show relationships. +**Mp3 Player (and Other Formats)** - A simple program for playing your favorite music files. For extra complexity see if you can add in playlists and an equalizer. -**Import Picture and Save as Grayscale** – A utility that sucks the color right out of an image and saves it. You could add more including adjusting contrast, colorizing and more for added complexity. +**Bulk Picture Manipulator** - This program will take in a directory of pictures and apply a certain effect to them whether it be reducing color count, changing its format, or alter file attributes. For something extra try to see if you can also create a system to tag them. -**Stream Video from Online** – Try to create your own online streaming video player. +**CD Burning App** - Create a utility that simply burns data to a CD. -**Mp3 Player (and Other Formats)** – A simple program for playing your favorite music files. For extra complexity see if you can add in playlists and an equalizer. +**YouTube Downloader** - A program which can download videos to your hard drive from youtube.com. Save the files in various formats including FLV and AVI. -**Bulk Picture Manipulator** – This program will take in a directory of pictures and apply a certain effect to them whether it be reducing color count, changing its format, or alter file attributes. For something extra try to see if you can also create a system to tag them. +**Wallpaper Manager** - Make a program which keeps track of your favorite wallpapers, changes them regularly and maybe even re-sizes them for your resolution (aka tiles one and stretches another) -**CD Burning App** – Create a utility that simply burns data to a CD. +**Screen Capture Program** - Make a utility that will simply capture a frame from your web cam. For added complexity see if you can also build in emailing functionality. -**YouTube Downloader** – A program which can download videos to your hard drive from youtube.com. Save the files in various formats including FLV and AVI. +**Image Browser** - This application is used to view various image files on your computer from PNG, GIF, JPG to BMP, TIFF etc. -**Wallpaper Manager** – Make a program which keeps track of your favorite wallpapers, changes them regularly and maybe even re-sizes them for your resolution (aka tiles one and stretches another) +**Traffic Light Application** - See if you can make your own street light application and then put it into an intersection scenario. Don’t let any cars run the lights and crash into one another! -**Screen Capture Program** – Make a utility that will simply capture a frame from your web cam. For added complexity see if you can also build in emailing functionality. +**MP3 to Wav Converter** - MP3 is essentially compressed wav format. See if you can translate it back into wav so that some other sound editing programs can work with the wav file itself. Keep in mind that 1 MB of MP3 is relative 10MB wav. -**Image Browser** – This application is used to view various image files on your computer from PNG, GIF, JPG to BMP, TIFF etc. +**Signature Maker** - Ever seen those web board posts where someone has a generated signature made up? See if you can make a program that allows the user to specify a background, text, colors and alignment to make their own signatures or userbars. -**Traffic Light Application** – See if you can make your own street light application and then put it into an intersection scenario. Don’t let any cars run the lights and crash into one another! +**Screen Saver** - Make a screensaver program that will run while your computer sits idle. To make a simple one use some standard pictures and then for added complexity try a 3D object that spins around the screen and bounces off the sides. -**MP3 to Wav Converter** – MP3 is essentially compressed wav format. See if you can translate it back into wav so that some other sound editing programs can work with the wav file itself. Keep in mind that 1 MB of MP3 is relative 10MB wav. +**Watermarking Application** - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. -**Signature Maker** – Ever seen those web board posts where someone has a generated signature made up? See if you can make a program that allows the user to specify a background, text, colors and alignment to make their own signatures or userbars. +**Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. For added complexity, allow the program to read in the list of commands from a file. Do a search online for “Turtle Graphics” for more information. -**Screen Saver** – Make a screensaver program that will run while your computer sits idle. To make a simple one use some standard pictures and then for added complexity try a 3D object that spins around the screen and bounces off the sides. +=============================================== -**Watermarking Application** – Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. +Source +======= -**Turtle Graphics** – This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. For added complexity, allow the program to read in the list of commands from a file. Do a search online for “Turtle Graphics” for more information. +[Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) From a49a5bd14aa4993b531fe971b19a1eafcb881086 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 24 Jul 2013 15:45:23 +0530 Subject: [PATCH 005/110] Update README-scratch.md --- README-scratch.md | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/README-scratch.md b/README-scratch.md index 05f45f508..b9b34f041 100644 --- a/README-scratch.md +++ b/README-scratch.md @@ -1,22 +1,13 @@ -Martyr2’s Mega Project List +Mega Project List ======== -Trying to complete all projects from [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/). - -**Note**: If you fork this repo to solve these projects in any language of your choice, please remove all my code, and start from scratch; you'll benefit a lot. Do ***not*** send pull requests. - -Some details: - -* I will use Python to solve these. Why? Because I want to learn the language quickly. -* I have no interest in making games, so I'm excluding those from the list below. -* I'm not interested in networking, so I *might* skip all (or some) of them. -* The projects will not be made in the order posted. -* I may not be able to complete all of them. -* My method of solving them may not be the best. +**Note**: If you fork this repo to solve these projects in any language of your choice, I suggest you remove all my code, and start from scratch; you'll benefit a lot. In any case, **do not send pull requests for replacing my code**. This is my space to store my code. That said, if you have suggestions for adding or removing problems, feel free to [open an issue](https://github.com/thekarangoel/Projects/issues/new). I will link to each project that I complete. Some will be in this same repo, some bigger ones will have dedicated repos. -============================== +To get started, fork this repo, delete this README and rename [*README-scratch.md*](https://github.com/thekarangoel/Projects/blob/master/README-scratch.md) to *README.md*. + +=============================== Numbers --------- @@ -304,3 +295,10 @@ Graphics and Multimedia **Watermarking Application** – Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. **Turtle Graphics** – This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. For added complexity, allow the program to read in the list of commands from a file. Do a search online for “Turtle Graphics” for more information. + +========================= + +Sources +======= + +[Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) From bce1727431c5b0930b1a2ed4ffed54820112deff Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 24 Jul 2013 15:45:50 +0530 Subject: [PATCH 006/110] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e259c5154..33aa3e9e1 100644 --- a/README.md +++ b/README.md @@ -315,7 +315,7 @@ Graphics and Multimedia =============================================== -Source +Sources ======= [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) From 65904541902685c6631b849e7edd867b2cd1a426 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 24 Jul 2013 20:07:16 +0530 Subject: [PATCH 007/110] Create CONTRIBUTING.md On popular demand! --- CONTRIBUTING.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..3f4b762a0 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,28 @@ +How to Contribute +================== + +## Solutions + +Please **do not send pull requests for replacing my code**. If you'd like to contribute solutions, please see the following instructions: + +* Solve the problem, and keep it in your repo. DO NOT send merge request yet. +* Find the problem in this [README](https://github.com/thekarangoel/Projects/blob/master/README.md) file. +* Edit the file in this format (notice the double square brackets): + + **This is a problem** - And here goes it's description. \[[octocat]]\(link-to-octocats-solution) \[[you]]\(link-to-your-solution) + +This results in something like this: + +**This is a problem** - And here goes it's description. [[octocat]](link-to-octocats-solution) [[you]](link-to-your-solution) + +* Please respect other people and do not delete or move anyone else's link. Place your solution at the end of the list of solutions. +* Save/Commit the README.md file. +* Send a pull request for this commit ONLY! + +===================================== + +## Problems + +If you have suggestions for adding or removing problems, feel free to [open an issue](https://github.com/thekarangoel/Projects/issues/new) to discuss it, or directly create a pull request after you edit the *README.md* file with necessary changes. If you add a problem, make sure you add it in the correct category. + +It is required that any changes made to the problems (this does not include adding solutions) in *README.md*, must be reflected in *README-scratch.md* and in *README.md* file in the relevant category folder. If you skip this step, I will not merge the changes! From 362d2bfad5807178ebb05419b78da34fcbea147e Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 24 Jul 2013 20:08:27 +0530 Subject: [PATCH 008/110] Added ways of contributing! --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 33aa3e9e1..bb52f85e5 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,11 @@ This repo is in the top 5 on GitHub on [July 14 2013](https://raw.github.com/the =============================== -**Note**: If you fork this repo to solve these projects in any language of your choice, I suggest you remove all my code, and start from scratch; you'll benefit a lot. In any case, **do not send pull requests for replacing my code**. This is my space to store my code. That said, if you have suggestions for adding or removing problems, feel free to [open an issue](https://github.com/thekarangoel/Projects/issues/new). +#### [CONTRIBUTING] (https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) + +See whays of [contributing](https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) to this repo. + +================================ Some details about this repo: From 50a8b205b1d911392eccb1cc32f06b3f67fae1d0 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 24 Jul 2013 20:09:45 +0530 Subject: [PATCH 009/110] Now contains only the problems, no blurb! --- README-scratch.md | 8 -------- 1 file changed, 8 deletions(-) diff --git a/README-scratch.md b/README-scratch.md index b9b34f041..78de7ff6f 100644 --- a/README-scratch.md +++ b/README-scratch.md @@ -1,14 +1,6 @@ Mega Project List ======== -**Note**: If you fork this repo to solve these projects in any language of your choice, I suggest you remove all my code, and start from scratch; you'll benefit a lot. In any case, **do not send pull requests for replacing my code**. This is my space to store my code. That said, if you have suggestions for adding or removing problems, feel free to [open an issue](https://github.com/thekarangoel/Projects/issues/new). - -I will link to each project that I complete. Some will be in this same repo, some bigger ones will have dedicated repos. - -To get started, fork this repo, delete this README and rename [*README-scratch.md*](https://github.com/thekarangoel/Projects/blob/master/README-scratch.md) to *README.md*. - -=============================== - Numbers --------- From 9301d64c3a71f690e0d28e551f2e2c883e61513d Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 24 Jul 2013 20:11:13 +0530 Subject: [PATCH 010/110] Describe contributions further! --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index bb52f85e5..1a1f12789 100644 --- a/README.md +++ b/README.md @@ -9,9 +9,9 @@ This repo is in the top 5 on GitHub on [July 14 2013](https://raw.github.com/the =============================== -#### [CONTRIBUTING] (https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) +### [CONTRIBUTING] (https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) -See whays of [contributing](https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) to this repo. +See ways of [contributing](https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) to this repo. You can contribute solutions to existing problems, add new projects or remove existing ones. Make sure you follow all instructions properly. ================================ From 103b99db76c492e8e9b0514db351cd081cc45267 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 24 Jul 2013 20:21:35 +0530 Subject: [PATCH 011/110] Added instructions on including sources. Improved formatting. --- CONTRIBUTING.md | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3f4b762a0..8af03cb26 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -5,24 +5,29 @@ How to Contribute Please **do not send pull requests for replacing my code**. If you'd like to contribute solutions, please see the following instructions: -* Solve the problem, and keep it in your repo. DO NOT send merge request yet. -* Find the problem in this [README](https://github.com/thekarangoel/Projects/blob/master/README.md) file. -* Edit the file in this format (notice the double square brackets): +- Solve the problem, and keep it in your repo. DO NOT send merge request yet. - **This is a problem** - And here goes it's description. \[[octocat]]\(link-to-octocats-solution) \[[you]]\(link-to-your-solution) +- Find the problem in this [README](https://github.com/thekarangoel/Projects/blob/master/README.md) file. + +- Edit the file in this format (notice the double square brackets): + + \**This is a problem** - And here goes it's description. \[[octocat]]\(link-to-octocats-solution) \[[your_username]]\(link-to-your-solution) -This results in something like this: + This results in something like this: + + **This is a problem** - And here goes it's description. [[octocat]](link-to-octocats-solution) [[your_username]](link-to-your-solution) -**This is a problem** - And here goes it's description. [[octocat]](link-to-octocats-solution) [[you]](link-to-your-solution) +- Please respect other people and do not delete or move anyone else's link. Place your solution at the end of the list of solutions. -* Please respect other people and do not delete or move anyone else's link. Place your solution at the end of the list of solutions. -* Save/Commit the README.md file. -* Send a pull request for this commit ONLY! +- Save/Commit the README.md file. +- Send a pull request for this commit ONLY! ===================================== -## Problems +## Projects + +If you have suggestions for adding or removing projects, feel free to [open an issue](https://github.com/thekarangoel/Projects/issues/new) to discuss it, or directly create a pull request after you edit the *README.md* file with necessary changes. If you add a problem, make sure you add it in the correct category. -If you have suggestions for adding or removing problems, feel free to [open an issue](https://github.com/thekarangoel/Projects/issues/new) to discuss it, or directly create a pull request after you edit the *README.md* file with necessary changes. If you add a problem, make sure you add it in the correct category. +It is required that any changes made to the projects (this does not include adding solutions) in *README.md*, must be reflected in *README-scratch.md* and in *README.md* file in the relevant category folder. If you're copying a project from some other webpage, you **MUST** link to it in the *Sources* section at the bottom of repo's *README.md* and *README-scratch.md*. -It is required that any changes made to the problems (this does not include adding solutions) in *README.md*, must be reflected in *README-scratch.md* and in *README.md* file in the relevant category folder. If you skip this step, I will not merge the changes! +If you skip any step(s), I will not merge the changes! From 2f2e54ce117bab906f8b0c26c374fefc2131d7ea Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 24 Jul 2013 21:11:45 +0530 Subject: [PATCH 012/110] Count words done --- Text/count_words.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 Text/count_words.py diff --git a/Text/count_words.py b/Text/count_words.py new file mode 100644 index 000000000..a9ac636a7 --- /dev/null +++ b/Text/count_words.py @@ -0,0 +1,27 @@ +""" +Count Words in a String - Counts the number of individual +words in a string and display the top 5/10 most used words. +""" + +from collections import defaultdict +import operator + +if __name__ == '__main__': + text = raw_input('Enter some text: \n') + words = text.split() # very naive approach, split at space + + counts = defaultdict(int) # no need to check existence of a key + + # find count of each word + for word in words: + counts[word] += 1 + + # sort the dict by the count of each word, returns a tuple (word, count) + sorted_counts = sorted(counts.iteritems(), \ + key=operator.itemgetter(1), \ + reverse=True) + + # print top 5 words + for (i, (word, count)) in enumerate(sorted_counts): + if i < 5: + print (word, count) From 5a46e95767b1f4ecd9d8b61464975f119e21550d Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 24 Jul 2013 21:14:18 +0530 Subject: [PATCH 013/110] Add link to count_words.py --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1a1f12789..fad43be24 100644 --- a/README.md +++ b/README.md @@ -74,7 +74,7 @@ Text [**Check if Palindrome**](https://github.com/thekarangoel/Projects/blob/master/Text/palindrome.py) - Checks if the string entered by the user is a palindrome. That is that it reads the same forwards as backwards like “racecar” -**Count Words in a String** - Counts the number of individual words in a string and display the top 5/10 most used words. +[**Count Words in a String**](https://github.com/thekarangoel/Projects/blob/master/Text/count_words.py) - Counts the number of individual words in a string and display the top 5/10 most used words. **Text Editor** - Notepad style application that can open, edit, and save text documents. *Optional: Add syntax highlighting and other features.* From bb4c5a0cfd860110cb98a8dd418f360fcb922a19 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Thu, 25 Jul 2013 08:32:34 +0530 Subject: [PATCH 014/110] More python way of limiting results by jrwren --- Text/count_words.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Text/count_words.py b/Text/count_words.py index a9ac636a7..113c31f81 100644 --- a/Text/count_words.py +++ b/Text/count_words.py @@ -22,6 +22,5 @@ reverse=True) # print top 5 words - for (i, (word, count)) in enumerate(sorted_counts): - if i < 5: + for (word,count) in sorted_counts[:5]: # thanks @jrwren for this! print (word, count) From 7b9915065117beafee062f696a3410ddeb2690f8 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Thu, 25 Jul 2013 12:52:35 +0530 Subject: [PATCH 015/110] Fixed a weird encoding issue in hyphens --- Classes/README.md | 32 ++-- Databases/README.md | 26 +-- Files/README.md | 32 ++-- Graphics and Multimedia/README.md | 34 ++-- Networking/README.md | 30 ++-- Numbers/README.md | 30 ++-- Numbers/calc.py | 2 +- Numbers/fibonacci.py | 2 +- README-scratch.md | 258 +++++++++++++++--------------- Text/README.md | 34 ++-- Text/reverse.py | 2 +- Threading/README.md | 8 +- Web/README.md | 32 ++-- 13 files changed, 261 insertions(+), 261 deletions(-) diff --git a/Classes/README.md b/Classes/README.md index cc7230a43..e65e2f1fc 100644 --- a/Classes/README.md +++ b/Classes/README.md @@ -1,36 +1,36 @@ Classes --------- -**Product Inventory Project** – Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an inventory class which keeps track of various products and can sum up the inventory value. +**Product Inventory Project** - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an inventory class which keeps track of various products and can sum up the inventory value. -**Movie Store** – Manage video rentals and controls when videos are checked out, due to return, overdue fees and for added complexity create a summary of those accounts which are overdue for contact. +**Movie Store** - Manage video rentals and controls when videos are checked out, due to return, overdue fees and for added complexity create a summary of those accounts which are overdue for contact. -**Airline / Hotel Reservation System** – Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. +**Airline / Hotel Reservation System** - Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. -**Student Grade Book Application** – Keep track of students (with a student class that has their name, average, and scores) in a class and their grades. Assign their scores on tests and assignments to the students and figure out their average and grade for the class. For added complexity put the students on a bell curve. +**Student Grade Book Application** - Keep track of students (with a student class that has their name, average, and scores) in a class and their grades. Assign their scores on tests and assignments to the students and figure out their average and grade for the class. For added complexity put the students on a bell curve. **Bank Account Manager** \- Create a class called “Account” which will be an abstract class for three other classes called “CheckingAccount”, “SavingsAccount” and “BusinessAccount”. Manage credits and debits from these accounts through an ATM style program. -**Library Catalog** – Create a book class with a title, page count, ISBN and whether or not it is checked out or not. Manage a collection of various books and allow the user to check out books or return books. For added complexity generate a report of those books overdue and any fees. Also allow users to put books on reserve. +**Library Catalog** - Create a book class with a title, page count, ISBN and whether or not it is checked out or not. Manage a collection of various books and allow the user to check out books or return books. For added complexity generate a report of those books overdue and any fees. Also allow users to put books on reserve. -**Patient / Doctor Scheduler** – Create a patient class and a doctor class. Have a doctor that can handle multiple patients and setup a scheduling program where a doctor can only handle 16 patients during an 8 hr work day. +**Patient / Doctor Scheduler** - Create a patient class and a doctor class. Have a doctor that can handle multiple patients and setup a scheduling program where a doctor can only handle 16 patients during an 8 hr work day. -**Recipe Creator and Manager** – Create a recipe class with ingredients and a put them in a recipe manager program that organizes them into categories like deserts, main courses or by ingredients like chicken, beef, soups, pies etc. +**Recipe Creator and Manager** - Create a recipe class with ingredients and a put them in a recipe manager program that organizes them into categories like deserts, main courses or by ingredients like chicken, beef, soups, pies etc. -**Image Gallery** – Create an image abstract class and then a class that inherits from it for each image type. Put them in a program which displays them in a gallery style format for viewing. +**Image Gallery** - Create an image abstract class and then a class that inherits from it for each image type. Put them in a program which displays them in a gallery style format for viewing. -**Class to Handle Large Numbers** – We know that the basic data types like integer, long, double, and floats only go so far. Create a class that can manage extremely large numbers like those used in space exploration. +**Class to Handle Large Numbers** - We know that the basic data types like integer, long, double, and floats only go so far. Create a class that can manage extremely large numbers like those used in space exploration. -**Chart Making Class / API** – Create a class, or a set of classes, that generates bar charts, pie charts, histograms, and scatter plot charts. For added complexity, make this a service where people can connect to a web server, supply information and it returns a chart image for them in gif or jpg format. +**Chart Making Class / API** - Create a class, or a set of classes, that generates bar charts, pie charts, histograms, and scatter plot charts. For added complexity, make this a service where people can connect to a web server, supply information and it returns a chart image for them in gif or jpg format. -**Shape Area and Perimeter Classes** – Create an abstract class called “Shape” and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type. +**Shape Area and Perimeter Classes** - Create an abstract class called “Shape” and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type. -**Matrix Class** – A class to manage matrices. Add, subtract and multiple matrices. +**Matrix Class** - A class to manage matrices. Add, subtract and multiple matrices. -**Flower Shop Ordering To Go** – Create a flower shop application which deals in flower objects and use those flower objects in a bouquet object which can then be sold. Keep track of the number of objects and when you may need to order more. +**Flower Shop Ordering To Go** - Create a flower shop application which deals in flower objects and use those flower objects in a bouquet object which can then be sold. Keep track of the number of objects and when you may need to order more. -**Vending Machine** – Create an application which takes money and dispenses various types of candy or other item. The user enters a number and letter sequence, like D9, and have it return an instance of “Item” which of the proper type. Example when they press D9 it will return a type of candy bar which is an instance of Mr. GoodBar. +**Vending Machine** - Create an application which takes money and dispenses various types of candy or other item. The user enters a number and letter sequence, like D9, and have it return an instance of “Item” which of the proper type. Example when they press D9 it will return a type of candy bar which is an instance of Mr. GoodBar. -**Josephus Problem** – Create a program which links together various node objects and then every Nth object is removed until you have one object left. This last object is the sole survivor. Look it up on Google under “Josephus Algorithm” +**Josephus Problem** - Create a program which links together various node objects and then every Nth object is removed until you have one object left. This last object is the sole survivor. Look it up on Google under “Josephus Algorithm” -**Family Tree Creator** – Create a class called “Person” which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen. +**Family Tree Creator** - Create a class called “Person” which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen. diff --git a/Databases/README.md b/Databases/README.md index 3d163a593..6c443e871 100644 --- a/Databases/README.md +++ b/Databases/README.md @@ -1,28 +1,28 @@ Databases --------- -**SQL Query Analyzer** – A utility application which a user can enter a query and have it run against a local database and look for ways to make it more efficient. +**SQL Query Analyzer** - A utility application which a user can enter a query and have it run against a local database and look for ways to make it more efficient. -**Remote SQL Tool** – A utility that can execute queries on remote servers from your local computer across the Internet. It should take in a remote host, user name and password, run the query and return the results. +**Remote SQL Tool** - A utility that can execute queries on remote servers from your local computer across the Internet. It should take in a remote host, user name and password, run the query and return the results. -**Baseball / Other Card Collector** – Create an online application for keeping track of a collection of cards. Let the user enter all cards in a set, check off which ones they have, which ones they need and generate lists of cards they are looking for. For extra complexity, have it sum up sets and generate reports on how close they are of completing sets or the current value of a set. +**Baseball / Other Card Collector** - Create an online application for keeping track of a collection of cards. Let the user enter all cards in a set, check off which ones they have, which ones they need and generate lists of cards they are looking for. For extra complexity, have it sum up sets and generate reports on how close they are of completing sets or the current value of a set. -**Report Generator** – Create a utility that generates a report based on some tables in a database. Generates a sales reports based on the order/order details tables or sums up the days current database activity. +**Report Generator** - Create a utility that generates a report based on some tables in a database. Generates a sales reports based on the order/order details tables or sums up the days current database activity. -**Database Backup Script Maker** – A program which reads a database’s objects, relationships, records and stored procedures and creates a .sql file which can then be imported into another database or kept as a backup file to rebuild the database with. +**Database Backup Script Maker** - A program which reads a database’s objects, relationships, records and stored procedures and creates a .sql file which can then be imported into another database or kept as a backup file to rebuild the database with. -**Event Scheduler and Calendar** – Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. For added complexity, allow the application to create reoccurrence events that reoccur every day, week, month, year etc. +**Event Scheduler and Calendar** - Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. For added complexity, allow the application to create reoccurrence events that reoccur every day, week, month, year etc. -**Budget Tracker** – Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. For added complexity allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period. +**Budget Tracker** - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. For added complexity allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period. -**Address Book** – Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database. For extra complexity, allow the user to connect to a website publish their address book based on specific options the user has set. +**Address Book** - Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database. For extra complexity, allow the user to connect to a website publish their address book based on specific options the user has set. -**TV Show Tracker** – Got a favorite show you don’t want to miss? Don’t have a PVR or want to be able to find the show to then PVR it later? Make an application which can search various online TV Guide sites, locate the shows/times/channels and add them to a database application. The database/website then can send you email reminders that a show is about to start and which channel it will be on. +**TV Show Tracker** - Got a favorite show you don’t want to miss? Don’t have a PVR or want to be able to find the show to then PVR it later? Make an application which can search various online TV Guide sites, locate the shows/times/channels and add them to a database application. The database/website then can send you email reminders that a show is about to start and which channel it will be on. -**Travel Planner System** – Make a system that allows users to put together their own little travel itinerary and keep track of the airline / hotel arrangements, points of interest, budget and schedule. +**Travel Planner System** - Make a system that allows users to put together their own little travel itinerary and keep track of the airline / hotel arrangements, points of interest, budget and schedule. -**Entity Relationship Diagram (ERD) Creator** – A program that allows the user to put together ERD diagram and save it or have it generate some basic SQL syntax to give them a jump start. +**Entity Relationship Diagram (ERD) Creator** - A program that allows the user to put together ERD diagram and save it or have it generate some basic SQL syntax to give them a jump start. -**Database Translation (MySQL SQL Server)** – A simple utility that reads in from one database and constructs SQL compliant with another database. Then saves that to another database. One popular transition would be to and from MySQL server for databases like SQL Server and Oracle. +**Database Translation (MySQL SQL Server)** - A simple utility that reads in from one database and constructs SQL compliant with another database. Then saves that to another database. One popular transition would be to and from MySQL server for databases like SQL Server and Oracle. -**Web Board (Forum)** – Create a forum for you and your buddies to post, administer and share thoughts and ideas. +**Web Board (Forum)** - Create a forum for you and your buddies to post, administer and share thoughts and ideas. diff --git a/Files/README.md b/Files/README.md index 9dece259f..789b13fb3 100644 --- a/Files/README.md +++ b/Files/README.md @@ -1,34 +1,34 @@ Files --------- -**Quiz Maker** – Make an application which takes various questions form a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes. +**Quiz Maker** - Make an application which takes various questions form a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes. -**Quick Launcher** – A utility program that allows the user to assign various programs to icons on a toolbar. Then by clicking the buttons they can quickly launch the programs with parameters etc. Much like Windows quick launch. +**Quick Launcher** - A utility program that allows the user to assign various programs to icons on a toolbar. Then by clicking the buttons they can quickly launch the programs with parameters etc. Much like Windows quick launch. -**File Explorer** – Create your own windows explorer program but with added features, better searching, new icons and other views. +**File Explorer** - Create your own windows explorer program but with added features, better searching, new icons and other views. -**Sort File Records Utility** – Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. +**Sort File Records Utility** - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. -**Add Transactions In File and Find Averages** – Read in a file of financial transactions, group them into accounts, add up fields or find averages or apply credits and debits to each account. +**Add Transactions In File and Find Averages** - Read in a file of financial transactions, group them into accounts, add up fields or find averages or apply credits and debits to each account. -**Create Zip File Maker** – The user enters various files from different directories and maybe even another computer on the network and the program transfers them and zips them up into a zip file. For added complexity, apply actual compression to the files. +**Create Zip File Maker** - The user enters various files from different directories and maybe even another computer on the network and the program transfers them and zips them up into a zip file. For added complexity, apply actual compression to the files. -**PDF Generator** – An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. +**PDF Generator** - An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. -**Bulk Renamer and Organizer** – This program will take a series of files and renames them with a specific filename filter entered by the user. For instance if the user enters myimage###.jpg it will rename all files with a “minimum” of three numbers like “myimage001.jpg”, “myimage145.jpg” or even “myimage1987.jpg” since 1987 has at least three numbers. +**Bulk Renamer and Organizer** - This program will take a series of files and renames them with a specific filename filter entered by the user. For instance if the user enters myimage###.jpg it will rename all files with a “minimum” of three numbers like “myimage001.jpg”, “myimage145.jpg” or even “myimage1987.jpg” since 1987 has at least three numbers. -**Mp3 Tagger** – Modify and add ID3v1 tags to MP3 files. See if you can also add in the album art into the MP3 file’s header as well as other ID3v2 tags. +**Mp3 Tagger** - Modify and add ID3v1 tags to MP3 files. See if you can also add in the album art into the MP3 file’s header as well as other ID3v2 tags. -**Log File Maker** – Make an application which logs various statistics in response to given events. This can be something that logs what an application does, what the system is doing, when something like a file changes etc. +**Log File Maker** - Make an application which logs various statistics in response to given events. This can be something that logs what an application does, what the system is doing, when something like a file changes etc. -**Excel Spreadsheet Exporter** – Create an online application which can read in a file and create an Excel Spreadsheet to export back. This can be through CVS or other file formats. For added complexity, see if you can create formula fields as well. +**Excel Spreadsheet Exporter** - Create an online application which can read in a file and create an Excel Spreadsheet to export back. This can be through CVS or other file formats. For added complexity, see if you can create formula fields as well. -**RPG Character Stat Creator** – Make a program which will randomly create a character’s stats based on several rules set forth by the user. Have it generate a class, gender, strength/magic/dexterity points, and extra abilities or trades. Have it save it to a file which can then be printed out by a dungeon master. +**RPG Character Stat Creator** - Make a program which will randomly create a character’s stats based on several rules set forth by the user. Have it generate a class, gender, strength/magic/dexterity points, and extra abilities or trades. Have it save it to a file which can then be printed out by a dungeon master. -**Image Map Generator** – Image maps are those images on the web that have multiple hover points that link to different pages. Such images may include maps or splash pages. See if you can make one where the user specifies an image, clicks hotspots in the image and specify links. It will then generate the HTML code to a file that the user can then copy and paste into their website to make the image map. +**Image Map Generator** - Image maps are those images on the web that have multiple hover points that link to different pages. Such images may include maps or splash pages. See if you can make one where the user specifies an image, clicks hotspots in the image and specify links. It will then generate the HTML code to a file that the user can then copy and paste into their website to make the image map. -**File Copy Utility** – Create a utility that can do bulk file copying and backups of other files. +**File Copy Utility** - Create a utility that can do bulk file copying and backups of other files. -**Code Snippet Manager** – Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. For extra practice try adding syntax highlighting based on the language. +**Code Snippet Manager** - Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. For extra practice try adding syntax highlighting based on the language. -**Versioning Manager** – Create your own versioning system for code files. Users are forced to check out items and lock items during reading and writing so that a group of programmers are not accidentally overwriting code files on one another. +**Versioning Manager** - Create your own versioning system for code files. Users are forced to check out items and lock items during reading and writing so that a group of programmers are not accidentally overwriting code files on one another. diff --git a/Graphics and Multimedia/README.md b/Graphics and Multimedia/README.md index 8ef8f579b..fe3db4924 100644 --- a/Graphics and Multimedia/README.md +++ b/Graphics and Multimedia/README.md @@ -1,36 +1,36 @@ Graphics and Multimedia --------- -**Slide Show** – Make an application that shows various pictures in a slide show format. For extra complexity try adding various effects like fade in/out, star wipe and window blinds transitions. +**Slide Show** - Make an application that shows various pictures in a slide show format. For extra complexity try adding various effects like fade in/out, star wipe and window blinds transitions. -**Mind Mapper** – Allow the user to put down ideas and quickly brainstorm how they are related into a mind map. The goal here is speed so let the user quickly write in an idea and drag it around in a visual map to show relationships. +**Mind Mapper** - Allow the user to put down ideas and quickly brainstorm how they are related into a mind map. The goal here is speed so let the user quickly write in an idea and drag it around in a visual map to show relationships. -**Import Picture and Save as Grayscale** – A utility that sucks the color right out of an image and saves it. You could add more including adjusting contrast, colorizing and more for added complexity. +**Import Picture and Save as Grayscale** - A utility that sucks the color right out of an image and saves it. You could add more including adjusting contrast, colorizing and more for added complexity. -**Stream Video from Online** – Try to create your own online streaming video player. +**Stream Video from Online** - Try to create your own online streaming video player. -**Mp3 Player (and Other Formats)** – A simple program for playing your favorite music files. For extra complexity see if you can add in playlists and an equalizer. +**Mp3 Player (and Other Formats)** - A simple program for playing your favorite music files. For extra complexity see if you can add in playlists and an equalizer. -**Bulk Picture Manipulator** – This program will take in a directory of pictures and apply a certain effect to them whether it be reducing color count, changing its format, or alter file attributes. For something extra try to see if you can also create a system to tag them. +**Bulk Picture Manipulator** - This program will take in a directory of pictures and apply a certain effect to them whether it be reducing color count, changing its format, or alter file attributes. For something extra try to see if you can also create a system to tag them. -**CD Burning App** – Create a utility that simply burns data to a CD. +**CD Burning App** - Create a utility that simply burns data to a CD. -**YouTube Downloader** – A program which can download videos to your hard drive from youtube.com. Save the files in various formats including FLV and AVI. +**YouTube Downloader** - A program which can download videos to your hard drive from youtube.com. Save the files in various formats including FLV and AVI. -**Wallpaper Manager** – Make a program which keeps track of your favorite wallpapers, changes them regularly and maybe even re-sizes them for your resolution (aka tiles one and stretches another) +**Wallpaper Manager** - Make a program which keeps track of your favorite wallpapers, changes them regularly and maybe even re-sizes them for your resolution (aka tiles one and stretches another) -**Screen Capture Program** – Make a utility that will simply capture a frame from your web cam. For added complexity see if you can also build in emailing functionality. +**Screen Capture Program** - Make a utility that will simply capture a frame from your web cam. For added complexity see if you can also build in emailing functionality. -**Image Browser** – This application is used to view various image files on your computer from PNG, GIF, JPG to BMP, TIFF etc. +**Image Browser** - This application is used to view various image files on your computer from PNG, GIF, JPG to BMP, TIFF etc. -**Traffic Light Application** – See if you can make your own street light application and then put it into an intersection scenario. Don’t let any cars run the lights and crash into one another! +**Traffic Light Application** - See if you can make your own street light application and then put it into an intersection scenario. Don’t let any cars run the lights and crash into one another! -**MP3 to Wav Converter** – MP3 is essentially compressed wav format. See if you can translate it back into wav so that some other sound editing programs can work with the wav file itself. Keep in mind that 1 MB of MP3 is relative 10MB wav. +**MP3 to Wav Converter** - MP3 is essentially compressed wav format. See if you can translate it back into wav so that some other sound editing programs can work with the wav file itself. Keep in mind that 1 MB of MP3 is relative 10MB wav. -**Signature Maker** – Ever seen those web board posts where someone has a generated signature made up? See if you can make a program that allows the user to specify a background, text, colors and alignment to make their own signatures or userbars. +**Signature Maker** - Ever seen those web board posts where someone has a generated signature made up? See if you can make a program that allows the user to specify a background, text, colors and alignment to make their own signatures or userbars. -**Screen Saver** – Make a screensaver program that will run while your computer sits idle. To make a simple one use some standard pictures and then for added complexity try a 3D object that spins around the screen and bounces off the sides. +**Screen Saver** - Make a screensaver program that will run while your computer sits idle. To make a simple one use some standard pictures and then for added complexity try a 3D object that spins around the screen and bounces off the sides. -**Watermarking Application** – Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. +**Watermarking Application** - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. -**Turtle Graphics** – This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. For added complexity, allow the program to read in the list of commands from a file. Do a search online for “Turtle Graphics” for more information. +**Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. For added complexity, allow the program to read in the list of commands from a file. Do a search online for “Turtle Graphics” for more information. diff --git a/Networking/README.md b/Networking/README.md index ba28d933a..2d56c9224 100644 --- a/Networking/README.md +++ b/Networking/README.md @@ -1,33 +1,33 @@ Networking --------- -**FTP Program** – A file transfer program which can transfer files back and forth from a remote web sever. +**FTP Program** - A file transfer program which can transfer files back and forth from a remote web sever. -**Get Atomic Time from Internet Clock** – This program will get the true atomic time from an atomic time clock on the Internet. There are various clocks across the world. Do a search for a list of them. +**Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. There are various clocks across the world. Do a search for a list of them. -**Chat Application (IRC or MSN Style)** – Create a chat application that can create simple chat rooms like on Internet Relay Chat (IRC) or a more direct chatting style like MSN. For added complexity, create your own protocol to facilitate this chatting. +**Chat Application (IRC or MSN Style)** - Create a chat application that can create simple chat rooms like on Internet Relay Chat (IRC) or a more direct chatting style like MSN. For added complexity, create your own protocol to facilitate this chatting. -**Fetch Current Weather** – Get the current weather for a given zip/postal code. +**Fetch Current Weather** - Get the current weather for a given zip/postal code. -**P2P File Sharing App** – Create a program like LimeWire, FrostWire, Bearshare, or a torrent style application. +**P2P File Sharing App** - Create a program like LimeWire, FrostWire, Bearshare, or a torrent style application. -**Port Scanner** – Enter an IP address and a port range where the program will then attempt to find open ports on the given computer by connecting to each of them. On any successful connections mark the port as open. +**Port Scanner** - Enter an IP address and a port range where the program will then attempt to find open ports on the given computer by connecting to each of them. On any successful connections mark the port as open. -**Mail Checker (POP3 / IMAP)** – The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email on several accounts at a given interval. +**Mail Checker (POP3 / IMAP)** - The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email on several accounts at a given interval. -**Packet Sniffer** – A utility program that will read packets coming in and out of the machine along with related information like destination and payload size. +**Packet Sniffer** - A utility program that will read packets coming in and out of the machine along with related information like destination and payload size. -**Country from IP Lookup** – Enter an IP address and find the country that IP is registered in. +**Country from IP Lookup** - Enter an IP address and find the country that IP is registered in. -**Whois Search Tool** – Enter an IP or host address and have it look it up through whois and return the results to you. +**Whois Search Tool** - Enter an IP or host address and have it look it up through whois and return the results to you. -**Zip / Postal Code Lookup** – Enter a zip or postal code and have it return which city/cities that are in that zip code. +**Zip / Postal Code Lookup** - Enter a zip or postal code and have it return which city/cities that are in that zip code. -**Remote Login** – Create a remote desktop style application which can see and control the remote computer (given you have permissions). It may require the use of your own private network and a second computer to test with. +**Remote Login** - Create a remote desktop style application which can see and control the remote computer (given you have permissions). It may require the use of your own private network and a second computer to test with. -**Site Checker with Time Scheduling** – An application that attempts to connect to a website or server every so many minutes or a given time and check if it is up. If it is down, it will notify you by email or by posting a notice on screen. +**Site Checker with Time Scheduling** - An application that attempts to connect to a website or server every so many minutes or a given time and check if it is up. If it is down, it will notify you by email or by posting a notice on screen. -**Small Web Server** – A simple web server that can serve HTML files that contain Javascript and other forms of non-code executing code. Added complexity would be to try and implement streaming video, create a server-side language, or serve up other stream types. +**Small Web Server** - A simple web server that can serve HTML files that contain Javascript and other forms of non-code executing code. Added complexity would be to try and implement streaming video, create a server-side language, or serve up other stream types. -**Web Bot** – An automated program which carries out tasks on the web including checking websites, page scraping, and summarization of data or web posting. +**Web Bot** - An automated program which carries out tasks on the web including checking websites, page scraping, and summarization of data or web posting. diff --git a/Numbers/README.md b/Numbers/README.md index 0ac7d99a2..b70dd6a39 100644 --- a/Numbers/README.md +++ b/Numbers/README.md @@ -1,32 +1,32 @@ Numbers --------- -**Find PI to the Nth Digit** – Enter a number and have the program generate PI up to that many decimal places. Keep a limit to how far the program will go. +**Find PI to the Nth Digit** - Enter a number and have the program generate PI up to that many decimal places. Keep a limit to how far the program will go. -**Fibonacci Sequence** – Enter a number and have the program generate the Fibonacci sequence to that number or to the Nth number. +**Fibonacci Sequence** - Enter a number and have the program generate the Fibonacci sequence to that number or to the Nth number. -**Prime Factorization** – Have the user enter a number and find all Prime Factors (if there are any) and display them. +**Prime Factorization** - Have the user enter a number and find all Prime Factors (if there are any) and display them. -**Next Prime Number** – Have the program find prime numbers until the user chooses to stop asking for the next one. +**Next Prime Number** - Have the program find prime numbers until the user chooses to stop asking for the next one. -**Find Cost of Tile to Cover W x H Floor** – Calculate the total cost of tile it would take to cover a floor plan of width and height, using a cost entered by the user. +**Find Cost of Tile to Cover W x H Floor** - Calculate the total cost of tile it would take to cover a floor plan of width and height, using a cost entered by the user. -**Mortgage Calculator** – Calculate the monthly payments of a fixed term mortgage over given Nth terms at a given interest rate. Also figure out how long it will take the user to pay back the loan. +**Mortgage Calculator** - Calculate the monthly payments of a fixed term mortgage over given Nth terms at a given interest rate. Also figure out how long it will take the user to pay back the loan. -**Change Return Program** – The user enters a cost and then the amount of money given. The program will figure out the change and the number of quarters, dimes, nickels, pennies needed for the change. +**Change Return Program** - The user enters a cost and then the amount of money given. The program will figure out the change and the number of quarters, dimes, nickels, pennies needed for the change. -**Binary to Decimal and Back Converter** – Develop a converter to convert a decimal number to binary or a binary number to its decimal equivalent. +**Binary to Decimal and Back Converter** - Develop a converter to convert a decimal number to binary or a binary number to its decimal equivalent. -**Calculator** – A simple calculator to do basic operators. Make it a scientific calculator for added complexity. +**Calculator** - A simple calculator to do basic operators. Make it a scientific calculator for added complexity. -**Unit Converter (temp, currency, volume, mass and more)** – Converts various units between one another. The user enters the type of unit being entered, the type of unit they want to convert to and then the value. The program will then make the conversion. +**Unit Converter (temp, currency, volume, mass and more)** - Converts various units between one another. The user enters the type of unit being entered, the type of unit they want to convert to and then the value. The program will then make the conversion. -**Alarm Clock** – A simple clock where it plays a sound after X number of minutes/seconds or at a particular time. +**Alarm Clock** - A simple clock where it plays a sound after X number of minutes/seconds or at a particular time. -**Distance Between Two Cities** – Calculates the distance between two cities and allows the user to specify a unit of distance. This program may require finding coordinates for the cities like latitude and longitude. +**Distance Between Two Cities** - Calculates the distance between two cities and allows the user to specify a unit of distance. This program may require finding coordinates for the cities like latitude and longitude. -**Credit Card Validator** – Takes in a credit card number from a common credit card vendor (Visa, MasterCard, American Express, Discoverer) and validates it to make sure that it is a valid number (look into how credit cards use a checksum). +**Credit Card Validator** - Takes in a credit card number from a common credit card vendor (Visa, MasterCard, American Express, Discoverer) and validates it to make sure that it is a valid number (look into how credit cards use a checksum). -**Tax Calculator** – Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. +**Tax Calculator** - Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. -**Dijkstra’s Algorithm** – Create a program that finds the shortest path through a graph using its edges. +**Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. diff --git a/Numbers/calc.py b/Numbers/calc.py index 3d8dd66a5..9daf8371e 100644 --- a/Numbers/calc.py +++ b/Numbers/calc.py @@ -1,6 +1,6 @@ # -*- coding: cp1252 -*- """ -Calculator � A simple calculator to do basic operators. +Calculator - A simple calculator to do basic operators. """ if __name__ == '__main__': diff --git a/Numbers/fibonacci.py b/Numbers/fibonacci.py index 4e20a55a6..a6692a94f 100644 --- a/Numbers/fibonacci.py +++ b/Numbers/fibonacci.py @@ -1,5 +1,5 @@ # -*- coding: cp1252 -*- -# Fibonacci Sequence � Enter a number and have the +# Fibonacci Sequence - Enter a number and have the # program generate the Fibonacci sequence to that number # or to the Nth number diff --git a/README-scratch.md b/README-scratch.md index 78de7ff6f..5c3e750ca 100644 --- a/README-scratch.md +++ b/README-scratch.md @@ -4,289 +4,289 @@ Mega Project List Numbers --------- -**Find PI to the Nth Digit** – Enter a number and have the program generate PI up to that many decimal places. Keep a limit to how far the program will go. +**Find PI to the Nth Digit** - Enter a number and have the program generate PI up to that many decimal places. Keep a limit to how far the program will go. -**Fibonacci Sequence** – Enter a number and have the program generate the Fibonacci sequence to that number or to the Nth number. +**Fibonacci Sequence** - Enter a number and have the program generate the Fibonacci sequence to that number or to the Nth number. -**Prime Factorization** – Have the user enter a number and find all Prime Factors (if there are any) and display them. +**Prime Factorization** - Have the user enter a number and find all Prime Factors (if there are any) and display them. -**Next Prime Number** – Have the program find prime numbers until the user chooses to stop asking for the next one. +**Next Prime Number** - Have the program find prime numbers until the user chooses to stop asking for the next one. -**Find Cost of Tile to Cover W x H Floor** – Calculate the total cost of tile it would take to cover a floor plan of width and height, using a cost entered by the user. +**Find Cost of Tile to Cover W x H Floor** - Calculate the total cost of tile it would take to cover a floor plan of width and height, using a cost entered by the user. -**Mortgage Calculator** – Calculate the monthly payments of a fixed term mortgage over given Nth terms at a given interest rate. Also figure out how long it will take the user to pay back the loan. +**Mortgage Calculator** - Calculate the monthly payments of a fixed term mortgage over given Nth terms at a given interest rate. Also figure out how long it will take the user to pay back the loan. -**Change Return Program** – The user enters a cost and then the amount of money given. The program will figure out the change and the number of quarters, dimes, nickels, pennies needed for the change. +**Change Return Program** - The user enters a cost and then the amount of money given. The program will figure out the change and the number of quarters, dimes, nickels, pennies needed for the change. -**Binary to Decimal and Back Converter** – Develop a converter to convert a decimal number to binary or a binary number to its decimal equivalent. +**Binary to Decimal and Back Converter** - Develop a converter to convert a decimal number to binary or a binary number to its decimal equivalent. -**Calculator** – A simple calculator to do basic operators. Make it a scientific calculator for added complexity. +**Calculator** - A simple calculator to do basic operators. Make it a scientific calculator for added complexity. -**Unit Converter (temp, currency, volume, mass and more)** – Converts various units between one another. The user enters the type of unit being entered, the type of unit they want to convert to and then the value. The program will then make the conversion. +**Unit Converter (temp, currency, volume, mass and more)** - Converts various units between one another. The user enters the type of unit being entered, the type of unit they want to convert to and then the value. The program will then make the conversion. -**Alarm Clock** – A simple clock where it plays a sound after X number of minutes/seconds or at a particular time. +**Alarm Clock** - A simple clock where it plays a sound after X number of minutes/seconds or at a particular time. -**Distance Between Two Cities** – Calculates the distance between two cities and allows the user to specify a unit of distance. This program may require finding coordinates for the cities like latitude and longitude. +**Distance Between Two Cities** - Calculates the distance between two cities and allows the user to specify a unit of distance. This program may require finding coordinates for the cities like latitude and longitude. -**Credit Card Validator** – Takes in a credit card number from a common credit card vendor (Visa, MasterCard, American Express, Discoverer) and validates it to make sure that it is a valid number (look into how credit cards use a checksum). +**Credit Card Validator** - Takes in a credit card number from a common credit card vendor (Visa, MasterCard, American Express, Discoverer) and validates it to make sure that it is a valid number (look into how credit cards use a checksum). -**Tax Calculator** – Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. +**Tax Calculator** - Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. -**Dijkstra’s Algorithm** – Create a program that finds the shortest path through a graph using its edges. +**Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. Text --------- -**Reverse a String** – Enter a string and the program will reverse it and print it out. +**Reverse a String** - Enter a string and the program will reverse it and print it out. -**Pig Latin** – Pig Latin is a game of alterations played on the English language game. To create the Pig Latin form of an English word the initial consonant sound is transposed to the end of the word and an ay is affixed (Ex.: "banana" would yield anana-bay). Read Wikipedia for more information on rules. +**Pig Latin** - Pig Latin is a game of alterations played on the English language game. To create the Pig Latin form of an English word the initial consonant sound is transposed to the end of the word and an ay is affixed (Ex.: "banana" would yield anana-bay). Read Wikipedia for more information on rules. -**Count Vowels** – Enter a string and the program counts the number of vowels in the text. For added complexity have it report a sum of each vowel found. +**Count Vowels** - Enter a string and the program counts the number of vowels in the text. For added complexity have it report a sum of each vowel found. -**Check if Palindrome** – Checks if the string entered by the user is a palindrome. That is that it reads the same forwards as backwards like “racecar” +**Check if Palindrome** - Checks if the string entered by the user is a palindrome. That is that it reads the same forwards as backwards like “racecar” -**Count Words in a String** – Counts the number of individual words in a string. For added complexity read these strings in from a text file and generate a summary. +**Count Words in a String** - Counts the number of individual words in a string. For added complexity read these strings in from a text file and generate a summary. -**Text Editor** – Notepad style application that can open, edit, and save text documents. Add syntax highlighting and other features. +**Text Editor** - Notepad style application that can open, edit, and save text documents. Add syntax highlighting and other features. -**RSS Feed Creator** – A program which can read in text from other sources and put it in RSS or Atom news format for syndication. +**RSS Feed Creator** - A program which can read in text from other sources and put it in RSS or Atom news format for syndication. -**Post it Notes Program** – A program where you can add text reminders and post them. You can have the program also add popup reminders. +**Post it Notes Program** - A program where you can add text reminders and post them. You can have the program also add popup reminders. -**Quote Tracker (market symbols etc)** – A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked and the program can show green up and red down arrows to show which direction the stock value has moved. +**Quote Tracker (market symbols etc)** - A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked and the program can show green up and red down arrows to show which direction the stock value has moved. -**Guestbook / Journal** – A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. +**Guestbook / Journal** - A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. -**News Ticker and Game Scores** – A program which sits on your desktop and aggregates news and game scores from various sources on the net. It then scrolls them across the screen on regular intervals. +**News Ticker and Game Scores** - A program which sits on your desktop and aggregates news and game scores from various sources on the net. It then scrolls them across the screen on regular intervals. -**Fortune Teller (Horoscope)** – A program that checks your horoscope on various astrology sites and puts them together for you each day. +**Fortune Teller (Horoscope)** - A program that checks your horoscope on various astrology sites and puts them together for you each day. -**Vigenere / Vernam / Ceasar Ciphers** – Functions for encrypting and decrypting data messages. Then send them to a friend. +**Vigenere / Vernam / Ceasar Ciphers** - Functions for encrypting and decrypting data messages. Then send them to a friend. -**Random Gift Suggestions** – Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one and perhaps places you can get it. +**Random Gift Suggestions** - Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one and perhaps places you can get it. -**Text to HTML Generator** – Converts text files into web HTML files and stylizes them. Great for making online documentation of standard text documentation. +**Text to HTML Generator** - Converts text files into web HTML files and stylizes them. Great for making online documentation of standard text documentation. -**CD Key Generator** – Generates a unique key for your applications to use based on some arbitrary algorithm that you can specify. Great for software developers looking to make shareware that can be activated. +**CD Key Generator** - Generates a unique key for your applications to use based on some arbitrary algorithm that you can specify. Great for software developers looking to make shareware that can be activated. -**Regex Query Tool** – A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular exp****ression against the source text and return any matches or flag errors in the regular exp****ression. +**Regex Query Tool** - A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular exp****ression against the source text and return any matches or flag errors in the regular exp****ression. Networking --------- -**FTP Program** – A file transfer program which can transfer files back and forth from a remote web sever. +**FTP Program** - A file transfer program which can transfer files back and forth from a remote web sever. -**Get Atomic Time from Internet Clock** – This program will get the true atomic time from an atomic time clock on the Internet. There are various clocks across the world. Do a search for a list of them. +**Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. There are various clocks across the world. Do a search for a list of them. -**Chat Application (IRC or MSN Style)** – Create a chat application that can create simple chat rooms like on Internet Relay Chat (IRC) or a more direct chatting style like MSN. For added complexity, create your own protocol to facilitate this chatting. +**Chat Application (IRC or MSN Style)** - Create a chat application that can create simple chat rooms like on Internet Relay Chat (IRC) or a more direct chatting style like MSN. For added complexity, create your own protocol to facilitate this chatting. -**Fetch Current Weather** – Get the current weather for a given zip/postal code. +**Fetch Current Weather** - Get the current weather for a given zip/postal code. -**P2P File Sharing App** – Create a program like LimeWire, FrostWire, Bearshare, or a torrent style application. +**P2P File Sharing App** - Create a program like LimeWire, FrostWire, Bearshare, or a torrent style application. -**Port Scanner** – Enter an IP address and a port range where the program will then attempt to find open ports on the given computer by connecting to each of them. On any successful connections mark the port as open. +**Port Scanner** - Enter an IP address and a port range where the program will then attempt to find open ports on the given computer by connecting to each of them. On any successful connections mark the port as open. -**Mail Checker (POP3 / IMAP)** – The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email on several accounts at a given interval. +**Mail Checker (POP3 / IMAP)** - The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email on several accounts at a given interval. -**Packet Sniffer** – A utility program that will read packets coming in and out of the machine along with related information like destination and payload size. +**Packet Sniffer** - A utility program that will read packets coming in and out of the machine along with related information like destination and payload size. -**Country from IP Lookup** – Enter an IP address and find the country that IP is registered in. +**Country from IP Lookup** - Enter an IP address and find the country that IP is registered in. -**Whois Search Tool** – Enter an IP or host address and have it look it up through whois and return the results to you. +**Whois Search Tool** - Enter an IP or host address and have it look it up through whois and return the results to you. -**Zip / Postal Code Lookup** – Enter a zip or postal code and have it return which city/cities that are in that zip code. +**Zip / Postal Code Lookup** - Enter a zip or postal code and have it return which city/cities that are in that zip code. -**Remote Login** – Create a remote desktop style application which can see and control the remote computer (given you have permissions). It may require the use of your own private network and a second computer to test with. +**Remote Login** - Create a remote desktop style application which can see and control the remote computer (given you have permissions). It may require the use of your own private network and a second computer to test with. -**Site Checker with Time Scheduling** – An application that attempts to connect to a website or server every so many minutes or a given time and check if it is up. If it is down, it will notify you by email or by posting a notice on screen. +**Site Checker with Time Scheduling** - An application that attempts to connect to a website or server every so many minutes or a given time and check if it is up. If it is down, it will notify you by email or by posting a notice on screen. -**Small Web Server** – A simple web server that can serve HTML files that contain Javascript and other forms of non-code executing code. Added complexity would be to try and implement streaming video, create a server-side language, or serve up other stream types. +**Small Web Server** - A simple web server that can serve HTML files that contain Javascript and other forms of non-code executing code. Added complexity would be to try and implement streaming video, create a server-side language, or serve up other stream types. -**Web Bot** – An automated program which carries out tasks on the web including checking websites, page scraping, and summarization of data or web posting. +**Web Bot** - An automated program which carries out tasks on the web including checking websites, page scraping, and summarization of data or web posting. Classes --------- -**Product Inventory Project** – Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an inventory class which keeps track of various products and can sum up the inventory value. +**Product Inventory Project** - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an inventory class which keeps track of various products and can sum up the inventory value. -**Movie Store** – Manage video rentals and controls when videos are checked out, due to return, overdue fees and for added complexity create a summary of those accounts which are overdue for contact. +**Movie Store** - Manage video rentals and controls when videos are checked out, due to return, overdue fees and for added complexity create a summary of those accounts which are overdue for contact. -**Airline / Hotel Reservation System** – Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. +**Airline / Hotel Reservation System** - Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. -**Student Grade Book Application** – Keep track of students (with a student class that has their name, average, and scores) in a class and their grades. Assign their scores on tests and assignments to the students and figure out their average and grade for the class. For added complexity put the students on a bell curve. +**Student Grade Book Application** - Keep track of students (with a student class that has their name, average, and scores) in a class and their grades. Assign their scores on tests and assignments to the students and figure out their average and grade for the class. For added complexity put the students on a bell curve. **Bank Account Manager** \- Create a class called “Account” which will be an abstract class for three other classes called “CheckingAccount”, “SavingsAccount” and “BusinessAccount”. Manage credits and debits from these accounts through an ATM style program. -**Library Catalog** – Create a book class with a title, page count, ISBN and whether or not it is checked out or not. Manage a collection of various books and allow the user to check out books or return books. For added complexity generate a report of those books overdue and any fees. Also allow users to put books on reserve. +**Library Catalog** - Create a book class with a title, page count, ISBN and whether or not it is checked out or not. Manage a collection of various books and allow the user to check out books or return books. For added complexity generate a report of those books overdue and any fees. Also allow users to put books on reserve. -**Patient / Doctor Scheduler** – Create a patient class and a doctor class. Have a doctor that can handle multiple patients and setup a scheduling program where a doctor can only handle 16 patients during an 8 hr work day. +**Patient / Doctor Scheduler** - Create a patient class and a doctor class. Have a doctor that can handle multiple patients and setup a scheduling program where a doctor can only handle 16 patients during an 8 hr work day. -**Recipe Creator and Manager** – Create a recipe class with ingredients and a put them in a recipe manager program that organizes them into categories like deserts, main courses or by ingredients like chicken, beef, soups, pies etc. +**Recipe Creator and Manager** - Create a recipe class with ingredients and a put them in a recipe manager program that organizes them into categories like deserts, main courses or by ingredients like chicken, beef, soups, pies etc. -**Image Gallery** – Create an image abstract class and then a class that inherits from it for each image type. Put them in a program which displays them in a gallery style format for viewing. +**Image Gallery** - Create an image abstract class and then a class that inherits from it for each image type. Put them in a program which displays them in a gallery style format for viewing. -**Class to Handle Large Numbers** – We know that the basic data types like integer, long, double, and floats only go so far. Create a class that can manage extremely large numbers like those used in space exploration. +**Class to Handle Large Numbers** - We know that the basic data types like integer, long, double, and floats only go so far. Create a class that can manage extremely large numbers like those used in space exploration. -**Chart Making Class / API** – Create a class, or a set of classes, that generates bar charts, pie charts, histograms, and scatter plot charts. For added complexity, make this a service where people can connect to a web server, supply information and it returns a chart image for them in gif or jpg format. +**Chart Making Class / API** - Create a class, or a set of classes, that generates bar charts, pie charts, histograms, and scatter plot charts. For added complexity, make this a service where people can connect to a web server, supply information and it returns a chart image for them in gif or jpg format. -**Shape Area and Perimeter Classes** – Create an abstract class called “Shape” and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type. +**Shape Area and Perimeter Classes** - Create an abstract class called “Shape” and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type. -**Matrix Class** – A class to manage matrices. Add, subtract and multiple matrices. +**Matrix Class** - A class to manage matrices. Add, subtract and multiple matrices. -**Flower Shop Ordering To Go** – Create a flower shop application which deals in flower objects and use those flower objects in a bouquet object which can then be sold. Keep track of the number of objects and when you may need to order more. +**Flower Shop Ordering To Go** - Create a flower shop application which deals in flower objects and use those flower objects in a bouquet object which can then be sold. Keep track of the number of objects and when you may need to order more. -**Vending Machine** – Create an application which takes money and dispenses various types of candy or other item. The user enters a number and letter sequence, like D9, and have it return an instance of “Item” which of the proper type. Example when they press D9 it will return a type of candy bar which is an instance of Mr. GoodBar. +**Vending Machine** - Create an application which takes money and dispenses various types of candy or other item. The user enters a number and letter sequence, like D9, and have it return an instance of “Item” which of the proper type. Example when they press D9 it will return a type of candy bar which is an instance of Mr. GoodBar. -**Josephus Problem** – Create a program which links together various node objects and then every Nth object is removed until you have one object left. This last object is the sole survivor. Look it up on Google under “Josephus Algorithm” +**Josephus Problem** - Create a program which links together various node objects and then every Nth object is removed until you have one object left. This last object is the sole survivor. Look it up on Google under “Josephus Algorithm” -**Family Tree Creator** – Create a class called “Person” which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen. +**Family Tree Creator** - Create a class called “Person” which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen. Threading --------- -**Create A Progress Bar for Downloads** – Create a progress bar for applications that can keep track of a download in progress. The progress bar will be on a separate thread and will communicate with the main thread using delegates. +**Create A Progress Bar for Downloads** - Create a progress bar for applications that can keep track of a download in progress. The progress bar will be on a separate thread and will communicate with the main thread using delegates. -**Download Manager** – Allow your program to download various files and each one is downloading in the background on a separate thread. The main thread will keep track of the other thread’s progress and notify the user when downloads are completed. +**Download Manager** - Allow your program to download various files and each one is downloading in the background on a separate thread. The main thread will keep track of the other thread’s progress and notify the user when downloads are completed. -**Chat Application (remoting style)** – Create a chat application which allows you to connect directly to another computer by their IP through the use of remoting and allow your “server” application handle multiple incoming connections. +**Chat Application (remoting style)** - Create a chat application which allows you to connect directly to another computer by their IP through the use of remoting and allow your “server” application handle multiple incoming connections. -**Bulk Thumbnail Creator** – Picture processing can take a bit of time for some transformations. Especially if the image is large. Create an image program which can take hundreds of images and converts them to a specified size in the background thread while you do other things. For added complexity, have one thread handling re-sizing, have another bulk renaming of thumbnails etc. +**Bulk Thumbnail Creator** - Picture processing can take a bit of time for some transformations. Especially if the image is large. Create an image program which can take hundreds of images and converts them to a specified size in the background thread while you do other things. For added complexity, have one thread handling re-sizing, have another bulk renaming of thumbnails etc. Web --------- -**WYSIWG (What you see is what you get) Editor** – Create an editor online which allows people to move around elements, create tables, write text, set colors etc for web pages without having to know HTML. Think Dreamweaver or FrontPage but for online sites. If you need an example check out the DIC page used to create a post. +**WYSIWG (What you see is what you get) Editor** - Create an editor online which allows people to move around elements, create tables, write text, set colors etc for web pages without having to know HTML. Think Dreamweaver or FrontPage but for online sites. If you need an example check out the DIC page used to create a post. -**Web Browser with Tabs** – Create a small web browser that allows you to navigate the web and contains tabs which can be used to navigate to multiple web pages at once. For simplicity don’t worry about executing Javascript or other client side code. +**Web Browser with Tabs** - Create a small web browser that allows you to navigate the web and contains tabs which can be used to navigate to multiple web pages at once. For simplicity don’t worry about executing Javascript or other client side code. -**Page Scraper** – Create an application which connects to a site and pulls out all links, or images, and saves them to a list. For added complexity, organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file. +**Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. For added complexity, organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file. -**File Downloader** – An application which can download various objects on a page including video streams or all files on a page. Great for pages with a lot of download links. +**File Downloader** - An application which can download various objects on a page including video streams or all files on a page. Great for pages with a lot of download links. -**Telnet Application** – Create an application which can telnet into servers across the internet and run basic commands. +**Telnet Application** - Create an application which can telnet into servers across the internet and run basic commands. -**Online White Board** – Create an application which allows you and friends to collaborate on a white board online. Draw pictures, write notes and use various colors to flesh out ideas for projects. For added complexity try building in picture tubes. +**Online White Board** - Create an application which allows you and friends to collaborate on a white board online. Draw pictures, write notes and use various colors to flesh out ideas for projects. For added complexity try building in picture tubes. -**Bandwidth Monitor** – A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it. +**Bandwidth Monitor** - A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it. -**Bookmark Collector and Sorter** – An application that you can put online for people to upload bookmarks to, have it sort them, remove duplicates and export the entire list as a Firefox/IE/Safari bookmark file. For added complexity see if you can group the bookmark items into various folders. +**Bookmark Collector and Sorter** - An application that you can put online for people to upload bookmarks to, have it sort them, remove duplicates and export the entire list as a Firefox/IE/Safari bookmark file. For added complexity see if you can group the bookmark items into various folders. -**Password Safe** – A program which keeps track of passwords for sites or applications and encrypts them with a key so that no one can read them. +**Password Safe** - A program which keeps track of passwords for sites or applications and encrypts them with a key so that no one can read them. -**Media Player Widget for iGoogle** – Create an iGoogle gadget which can play various song lists from your computer as well as share one song daily. Perhaps let people look up which songs you have listened to lately. +**Media Player Widget for iGoogle** - Create an iGoogle gadget which can play various song lists from your computer as well as share one song daily. Perhaps let people look up which songs you have listened to lately. -**Text Based Game Like Utopia** – Create a simple text based RPG like Utopia where you can create a civilization, gather resources, forge alliances, cast spells and more on a turn based system. See if you can dominate the kingdom. +**Text Based Game Like Utopia** - Create a simple text based RPG like Utopia where you can create a civilization, gather resources, forge alliances, cast spells and more on a turn based system. See if you can dominate the kingdom. -**Scheduled Auto Login and Action** – Make an application which logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking web mail, posting regular content, or getting info for other applications and saving it to your computer. +**Scheduled Auto Login and Action** - Make an application which logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking web mail, posting regular content, or getting info for other applications and saving it to your computer. -**E-Card Generator** – Make a site that allows people to generate their own little e-cards and send them to other people. Can use flash or not. Use a picture library and perhaps insightful mottos or quotes. +**E-Card Generator** - Make a site that allows people to generate their own little e-cards and send them to other people. Can use flash or not. Use a picture library and perhaps insightful mottos or quotes. -**Content Management System** – Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small and allow for the addition of modules/addons later. +**Content Management System** - Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small and allow for the addition of modules/addons later. -**Template Maker** – Make a site or application which allows the user to enter in various color codes, elements, dimensions and constructs a template file for a particular application like PHPBB, Invision Board, MySpace, Bebo, etc. +**Template Maker** - Make a site or application which allows the user to enter in various color codes, elements, dimensions and constructs a template file for a particular application like PHPBB, Invision Board, MySpace, Bebo, etc. -**CAPTCHA Maker** – Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. If you use PHP, take a look at the image functions of GD. +**CAPTCHA Maker** - Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. If you use PHP, take a look at the image functions of GD. Files --------- -**Quiz Maker** – Make an application which takes various questions form a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes. +**Quiz Maker** - Make an application which takes various questions form a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes. -**Quick Launcher** – A utility program that allows the user to assign various programs to icons on a toolbar. Then by clicking the buttons they can quickly launch the programs with parameters etc. Much like Windows quick launch. +**Quick Launcher** - A utility program that allows the user to assign various programs to icons on a toolbar. Then by clicking the buttons they can quickly launch the programs with parameters etc. Much like Windows quick launch. -**File Explorer** – Create your own windows explorer program but with added features, better searching, new icons and other views. +**File Explorer** - Create your own windows explorer program but with added features, better searching, new icons and other views. -**Sort File Records Utility** – Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. +**Sort File Records Utility** - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. -**Add Transactions In File and Find Averages** – Read in a file of financial transactions, group them into accounts, add up fields or find averages or apply credits and debits to each account. +**Add Transactions In File and Find Averages** - Read in a file of financial transactions, group them into accounts, add up fields or find averages or apply credits and debits to each account. -**Create Zip File Maker** – The user enters various files from different directories and maybe even another computer on the network and the program transfers them and zips them up into a zip file. For added complexity, apply actual compression to the files. +**Create Zip File Maker** - The user enters various files from different directories and maybe even another computer on the network and the program transfers them and zips them up into a zip file. For added complexity, apply actual compression to the files. -**PDF Generator** – An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. +**PDF Generator** - An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. -**Bulk Renamer and Organizer** – This program will take a series of files and renames them with a specific filename filter entered by the user. For instance if the user enters myimage###.jpg it will rename all files with a “minimum” of three numbers like “myimage001.jpg”, “myimage145.jpg” or even “myimage1987.jpg” since 1987 has at least three numbers. +**Bulk Renamer and Organizer** - This program will take a series of files and renames them with a specific filename filter entered by the user. For instance if the user enters myimage###.jpg it will rename all files with a “minimum” of three numbers like “myimage001.jpg”, “myimage145.jpg” or even “myimage1987.jpg” since 1987 has at least three numbers. -**Mp3 Tagger** – Modify and add ID3v1 tags to MP3 files. See if you can also add in the album art into the MP3 file’s header as well as other ID3v2 tags. +**Mp3 Tagger** - Modify and add ID3v1 tags to MP3 files. See if you can also add in the album art into the MP3 file’s header as well as other ID3v2 tags. -**Log File Maker** – Make an application which logs various statistics in response to given events. This can be something that logs what an application does, what the system is doing, when something like a file changes etc. +**Log File Maker** - Make an application which logs various statistics in response to given events. This can be something that logs what an application does, what the system is doing, when something like a file changes etc. -**Excel Spreadsheet Exporter** – Create an online application which can read in a file and create an Excel Spreadsheet to export back. This can be through CVS or other file formats. For added complexity, see if you can create formula fields as well. +**Excel Spreadsheet Exporter** - Create an online application which can read in a file and create an Excel Spreadsheet to export back. This can be through CVS or other file formats. For added complexity, see if you can create formula fields as well. -**RPG Character Stat Creator** – Make a program which will randomly create a character’s stats based on several rules set forth by the user. Have it generate a class, gender, strength/magic/dexterity points, and extra abilities or trades. Have it save it to a file which can then be printed out by a dungeon master. +**RPG Character Stat Creator** - Make a program which will randomly create a character’s stats based on several rules set forth by the user. Have it generate a class, gender, strength/magic/dexterity points, and extra abilities or trades. Have it save it to a file which can then be printed out by a dungeon master. -**Image Map Generator** – Image maps are those images on the web that have multiple hover points that link to different pages. Such images may include maps or splash pages. See if you can make one where the user specifies an image, clicks hotspots in the image and specify links. It will then generate the HTML code to a file that the user can then copy and paste into their website to make the image map. +**Image Map Generator** - Image maps are those images on the web that have multiple hover points that link to different pages. Such images may include maps or splash pages. See if you can make one where the user specifies an image, clicks hotspots in the image and specify links. It will then generate the HTML code to a file that the user can then copy and paste into their website to make the image map. -**File Copy Utility** – Create a utility that can do bulk file copying and backups of other files. +**File Copy Utility** - Create a utility that can do bulk file copying and backups of other files. -**Code Snippet Manager** – Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. For extra practice try adding syntax highlighting based on the language. +**Code Snippet Manager** - Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. For extra practice try adding syntax highlighting based on the language. -**Versioning Manager** – Create your own versioning system for code files. Users are forced to check out items and lock items during reading and writing so that a group of programmers are not accidentally overwriting code files on one another. +**Versioning Manager** - Create your own versioning system for code files. Users are forced to check out items and lock items during reading and writing so that a group of programmers are not accidentally overwriting code files on one another. Databases --------- -**SQL Query Analyzer** – A utility application which a user can enter a query and have it run against a local database and look for ways to make it more efficient. +**SQL Query Analyzer** - A utility application which a user can enter a query and have it run against a local database and look for ways to make it more efficient. -**Remote SQL Tool** – A utility that can execute queries on remote servers from your local computer across the Internet. It should take in a remote host, user name and password, run the query and return the results. +**Remote SQL Tool** - A utility that can execute queries on remote servers from your local computer across the Internet. It should take in a remote host, user name and password, run the query and return the results. -**Baseball / Other Card Collector** – Create an online application for keeping track of a collection of cards. Let the user enter all cards in a set, check off which ones they have, which ones they need and generate lists of cards they are looking for. For extra complexity, have it sum up sets and generate reports on how close they are of completing sets or the current value of a set. +**Baseball / Other Card Collector** - Create an online application for keeping track of a collection of cards. Let the user enter all cards in a set, check off which ones they have, which ones they need and generate lists of cards they are looking for. For extra complexity, have it sum up sets and generate reports on how close they are of completing sets or the current value of a set. -**Report Generator** – Create a utility that generates a report based on some tables in a database. Generates a sales reports based on the order/order details tables or sums up the days current database activity. +**Report Generator** - Create a utility that generates a report based on some tables in a database. Generates a sales reports based on the order/order details tables or sums up the days current database activity. -**Database Backup Script Maker** – A program which reads a database’s objects, relationships, records and stored procedures and creates a .sql file which can then be imported into another database or kept as a backup file to rebuild the database with. +**Database Backup Script Maker** - A program which reads a database’s objects, relationships, records and stored procedures and creates a .sql file which can then be imported into another database or kept as a backup file to rebuild the database with. -**Event Scheduler and Calendar** – Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. For added complexity, allow the application to create reoccurrence events that reoccur every day, week, month, year etc. +**Event Scheduler and Calendar** - Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. For added complexity, allow the application to create reoccurrence events that reoccur every day, week, month, year etc. -**Budget Tracker** – Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. For added complexity allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period. +**Budget Tracker** - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. For added complexity allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period. -**Address Book** – Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database. For extra complexity, allow the user to connect to a website publish their address book based on specific options the user has set. +**Address Book** - Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database. For extra complexity, allow the user to connect to a website publish their address book based on specific options the user has set. -**TV Show Tracker** – Got a favorite show you don’t want to miss? Don’t have a PVR or want to be able to find the show to then PVR it later? Make an application which can search various online TV Guide sites, locate the shows/times/channels and add them to a database application. The database/website then can send you email reminders that a show is about to start and which channel it will be on. +**TV Show Tracker** - Got a favorite show you don’t want to miss? Don’t have a PVR or want to be able to find the show to then PVR it later? Make an application which can search various online TV Guide sites, locate the shows/times/channels and add them to a database application. The database/website then can send you email reminders that a show is about to start and which channel it will be on. -**Travel Planner System** – Make a system that allows users to put together their own little travel itinerary and keep track of the airline / hotel arrangements, points of interest, budget and schedule. +**Travel Planner System** - Make a system that allows users to put together their own little travel itinerary and keep track of the airline / hotel arrangements, points of interest, budget and schedule. -**Entity Relationship Diagram (ERD) Creator** – A program that allows the user to put together ERD diagram and save it or have it generate some basic SQL syntax to give them a jump start. +**Entity Relationship Diagram (ERD) Creator** - A program that allows the user to put together ERD diagram and save it or have it generate some basic SQL syntax to give them a jump start. -**Database Translation (MySQL SQL Server)** – A simple utility that reads in from one database and constructs SQL compliant with another database. Then saves that to another database. One popular transition would be to and from MySQL server for databases like SQL Server and Oracle. +**Database Translation (MySQL SQL Server)** - A simple utility that reads in from one database and constructs SQL compliant with another database. Then saves that to another database. One popular transition would be to and from MySQL server for databases like SQL Server and Oracle. -**Web Board (Forum)** – Create a forum for you and your buddies to post, administer and share thoughts and ideas. +**Web Board (Forum)** - Create a forum for you and your buddies to post, administer and share thoughts and ideas. Graphics and Multimedia --------- -**Slide Show** – Make an application that shows various pictures in a slide show format. For extra complexity try adding various effects like fade in/out, star wipe and window blinds transitions. +**Slide Show** - Make an application that shows various pictures in a slide show format. For extra complexity try adding various effects like fade in/out, star wipe and window blinds transitions. -**Mind Mapper** – Allow the user to put down ideas and quickly brainstorm how they are related into a mind map. The goal here is speed so let the user quickly write in an idea and drag it around in a visual map to show relationships. +**Mind Mapper** - Allow the user to put down ideas and quickly brainstorm how they are related into a mind map. The goal here is speed so let the user quickly write in an idea and drag it around in a visual map to show relationships. -**Import Picture and Save as Grayscale** – A utility that sucks the color right out of an image and saves it. You could add more including adjusting contrast, colorizing and more for added complexity. +**Import Picture and Save as Grayscale** - A utility that sucks the color right out of an image and saves it. You could add more including adjusting contrast, colorizing and more for added complexity. -**Stream Video from Online** – Try to create your own online streaming video player. +**Stream Video from Online** - Try to create your own online streaming video player. -**Mp3 Player (and Other Formats)** – A simple program for playing your favorite music files. For extra complexity see if you can add in playlists and an equalizer. +**Mp3 Player (and Other Formats)** - A simple program for playing your favorite music files. For extra complexity see if you can add in playlists and an equalizer. -**Bulk Picture Manipulator** – This program will take in a directory of pictures and apply a certain effect to them whether it be reducing color count, changing its format, or alter file attributes. For something extra try to see if you can also create a system to tag them. +**Bulk Picture Manipulator** - This program will take in a directory of pictures and apply a certain effect to them whether it be reducing color count, changing its format, or alter file attributes. For something extra try to see if you can also create a system to tag them. -**CD Burning App** – Create a utility that simply burns data to a CD. +**CD Burning App** - Create a utility that simply burns data to a CD. -**YouTube Downloader** – A program which can download videos to your hard drive from youtube.com. Save the files in various formats including FLV and AVI. +**YouTube Downloader** - A program which can download videos to your hard drive from youtube.com. Save the files in various formats including FLV and AVI. -**Wallpaper Manager** – Make a program which keeps track of your favorite wallpapers, changes them regularly and maybe even re-sizes them for your resolution (aka tiles one and stretches another) +**Wallpaper Manager** - Make a program which keeps track of your favorite wallpapers, changes them regularly and maybe even re-sizes them for your resolution (aka tiles one and stretches another) -**Screen Capture Program** – Make a utility that will simply capture a frame from your web cam. For added complexity see if you can also build in emailing functionality. +**Screen Capture Program** - Make a utility that will simply capture a frame from your web cam. For added complexity see if you can also build in emailing functionality. -**Image Browser** – This application is used to view various image files on your computer from PNG, GIF, JPG to BMP, TIFF etc. +**Image Browser** - This application is used to view various image files on your computer from PNG, GIF, JPG to BMP, TIFF etc. -**Traffic Light Application** – See if you can make your own street light application and then put it into an intersection scenario. Don’t let any cars run the lights and crash into one another! +**Traffic Light Application** - See if you can make your own street light application and then put it into an intersection scenario. Don’t let any cars run the lights and crash into one another! -**MP3 to Wav Converter** – MP3 is essentially compressed wav format. See if you can translate it back into wav so that some other sound editing programs can work with the wav file itself. Keep in mind that 1 MB of MP3 is relative 10MB wav. +**MP3 to Wav Converter** - MP3 is essentially compressed wav format. See if you can translate it back into wav so that some other sound editing programs can work with the wav file itself. Keep in mind that 1 MB of MP3 is relative 10MB wav. -**Signature Maker** – Ever seen those web board posts where someone has a generated signature made up? See if you can make a program that allows the user to specify a background, text, colors and alignment to make their own signatures or userbars. +**Signature Maker** - Ever seen those web board posts where someone has a generated signature made up? See if you can make a program that allows the user to specify a background, text, colors and alignment to make their own signatures or userbars. -**Screen Saver** – Make a screensaver program that will run while your computer sits idle. To make a simple one use some standard pictures and then for added complexity try a 3D object that spins around the screen and bounces off the sides. +**Screen Saver** - Make a screensaver program that will run while your computer sits idle. To make a simple one use some standard pictures and then for added complexity try a 3D object that spins around the screen and bounces off the sides. -**Watermarking Application** – Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. +**Watermarking Application** - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. -**Turtle Graphics** – This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. For added complexity, allow the program to read in the list of commands from a file. Do a search online for “Turtle Graphics” for more information. +**Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. For added complexity, allow the program to read in the list of commands from a file. Do a search online for “Turtle Graphics” for more information. ========================= diff --git a/Text/README.md b/Text/README.md index e8c37c9fe..c75f64b88 100644 --- a/Text/README.md +++ b/Text/README.md @@ -1,36 +1,36 @@ Text --------- -**Reverse a String** – Enter a string and the program will reverse it and print it out. +**Reverse a String** - Enter a string and the program will reverse it and print it out. -**Pig Latin** – Pig Latin is a game of alterations played on the English language game. To create the Pig Latin form of an English word the initial consonant sound is transposed to the end of the word and an ay is affixed (Ex.: "banana" would yield anana-bay). Read Wikipedia for more information on rules. +**Pig Latin** - Pig Latin is a game of alterations played on the English language game. To create the Pig Latin form of an English word the initial consonant sound is transposed to the end of the word and an ay is affixed (Ex.: "banana" would yield anana-bay). Read Wikipedia for more information on rules. -**Count Vowels** – Enter a string and the program counts the number of vowels in the text. For added complexity have it report a sum of each vowel found. +**Count Vowels** - Enter a string and the program counts the number of vowels in the text. For added complexity have it report a sum of each vowel found. -**Check if Palindrome** – Checks if the string entered by the user is a palindrome. That is that it reads the same forwards as backwards like “racecar” +**Check if Palindrome** - Checks if the string entered by the user is a palindrome. That is that it reads the same forwards as backwards like “racecar” -**Count Words in a String** – Counts the number of individual words in a string. For added complexity read these strings in from a text file and generate a summary. +**Count Words in a String** - Counts the number of individual words in a string. For added complexity read these strings in from a text file and generate a summary. -**Text Editor** – Notepad style application that can open, edit, and save text documents. Add syntax highlighting and other features. +**Text Editor** - Notepad style application that can open, edit, and save text documents. Add syntax highlighting and other features. -**RSS Feed Creator** – A program which can read in text from other sources and put it in RSS or Atom news format for syndication. +**RSS Feed Creator** - A program which can read in text from other sources and put it in RSS or Atom news format for syndication. -**Post it Notes Program** – A program where you can add text reminders and post them. You can have the program also add popup reminders. +**Post it Notes Program** - A program where you can add text reminders and post them. You can have the program also add popup reminders. -**Quote Tracker (market symbols etc)** – A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked and the program can show green up and red down arrows to show which direction the stock value has moved. +**Quote Tracker (market symbols etc)** - A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked and the program can show green up and red down arrows to show which direction the stock value has moved. -**Guestbook / Journal** – A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. +**Guestbook / Journal** - A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. -**News Ticker and Game Scores** – A program which sits on your desktop and aggregates news and game scores from various sources on the net. It then scrolls them across the screen on regular intervals. +**News Ticker and Game Scores** - A program which sits on your desktop and aggregates news and game scores from various sources on the net. It then scrolls them across the screen on regular intervals. -**Fortune Teller (Horoscope)** – A program that checks your horoscope on various astrology sites and puts them together for you each day. +**Fortune Teller (Horoscope)** - A program that checks your horoscope on various astrology sites and puts them together for you each day. -**Vigenere / Vernam / Ceasar Ciphers** – Functions for encrypting and decrypting data messages. Then send them to a friend. +**Vigenere / Vernam / Ceasar Ciphers** - Functions for encrypting and decrypting data messages. Then send them to a friend. -**Random Gift Suggestions** – Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one and perhaps places you can get it. +**Random Gift Suggestions** - Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one and perhaps places you can get it. -**Text to HTML Generator** – Converts text files into web HTML files and stylizes them. Great for making online documentation of standard text documentation. +**Text to HTML Generator** - Converts text files into web HTML files and stylizes them. Great for making online documentation of standard text documentation. -**CD Key Generator** – Generates a unique key for your applications to use based on some arbitrary algorithm that you can specify. Great for software developers looking to make shareware that can be activated. +**CD Key Generator** - Generates a unique key for your applications to use based on some arbitrary algorithm that you can specify. Great for software developers looking to make shareware that can be activated. -**Regex Query Tool** – A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular exp****ression against the source text and return any matches or flag errors in the regular exp****ression. +**Regex Query Tool** - A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular exp****ression against the source text and return any matches or flag errors in the regular exp****ression. diff --git a/Text/reverse.py b/Text/reverse.py index eb97aecf3..5cec022c3 100644 --- a/Text/reverse.py +++ b/Text/reverse.py @@ -1,6 +1,6 @@ # -*- coding: cp1252 -*- """ -Reverse a String � Enter a string and the program +Reverse a String - Enter a string and the program will reverse it and print it out. """ diff --git a/Threading/README.md b/Threading/README.md index cf50d2b28..3caaec781 100644 --- a/Threading/README.md +++ b/Threading/README.md @@ -1,10 +1,10 @@ Threading --------- -**Create A Progress Bar for Downloads** – Create a progress bar for applications that can keep track of a download in progress. The progress bar will be on a separate thread and will communicate with the main thread using delegates. +**Create A Progress Bar for Downloads** - Create a progress bar for applications that can keep track of a download in progress. The progress bar will be on a separate thread and will communicate with the main thread using delegates. -**Download Manager** – Allow your program to download various files and each one is downloading in the background on a separate thread. The main thread will keep track of the other thread’s progress and notify the user when downloads are completed. +**Download Manager** - Allow your program to download various files and each one is downloading in the background on a separate thread. The main thread will keep track of the other thread’s progress and notify the user when downloads are completed. -**Chat Application (remoting style)** – Create a chat application which allows you to connect directly to another computer by their IP through the use of remoting and allow your “server” application handle multiple incoming connections. +**Chat Application (remoting style)** - Create a chat application which allows you to connect directly to another computer by their IP through the use of remoting and allow your “server” application handle multiple incoming connections. -**Bulk Thumbnail Creator** – Picture processing can take a bit of time for some transformations. Especially if the image is large. Create an image program which can take hundreds of images and converts them to a specified size in the background thread while you do other things. For added complexity, have one thread handling re-sizing, have another bulk renaming of thumbnails etc. +**Bulk Thumbnail Creator** - Picture processing can take a bit of time for some transformations. Especially if the image is large. Create an image program which can take hundreds of images and converts them to a specified size in the background thread while you do other things. For added complexity, have one thread handling re-sizing, have another bulk renaming of thumbnails etc. diff --git a/Web/README.md b/Web/README.md index 07ef3554a..312f0f323 100644 --- a/Web/README.md +++ b/Web/README.md @@ -1,34 +1,34 @@ Web --------- -**WYSIWG (What you see is what you get) Editor** – Create an editor online which allows people to move around elements, create tables, write text, set colors etc for web pages without having to know HTML. Think Dreamweaver or FrontPage but for online sites. If you need an example check out the DIC page used to create a post. +**WYSIWG (What you see is what you get) Editor** - Create an editor online which allows people to move around elements, create tables, write text, set colors etc for web pages without having to know HTML. Think Dreamweaver or FrontPage but for online sites. If you need an example check out the DIC page used to create a post. -**Web Browser with Tabs** – Create a small web browser that allows you to navigate the web and contains tabs which can be used to navigate to multiple web pages at once. For simplicity don’t worry about executing Javascript or other client side code. +**Web Browser with Tabs** - Create a small web browser that allows you to navigate the web and contains tabs which can be used to navigate to multiple web pages at once. For simplicity don’t worry about executing Javascript or other client side code. -**Page Scraper** – Create an application which connects to a site and pulls out all links, or images, and saves them to a list. For added complexity, organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file. +**Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. For added complexity, organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file. -**File Downloader** – An application which can download various objects on a page including video streams or all files on a page. Great for pages with a lot of download links. +**File Downloader** - An application which can download various objects on a page including video streams or all files on a page. Great for pages with a lot of download links. -**Telnet Application** – Create an application which can telnet into servers across the internet and run basic commands. +**Telnet Application** - Create an application which can telnet into servers across the internet and run basic commands. -**Online White Board** – Create an application which allows you and friends to collaborate on a white board online. Draw pictures, write notes and use various colors to flesh out ideas for projects. For added complexity try building in picture tubes. +**Online White Board** - Create an application which allows you and friends to collaborate on a white board online. Draw pictures, write notes and use various colors to flesh out ideas for projects. For added complexity try building in picture tubes. -**Bandwidth Monitor** – A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it. +**Bandwidth Monitor** - A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it. -**Bookmark Collector and Sorter** – An application that you can put online for people to upload bookmarks to, have it sort them, remove duplicates and export the entire list as a Firefox/IE/Safari bookmark file. For added complexity see if you can group the bookmark items into various folders. +**Bookmark Collector and Sorter** - An application that you can put online for people to upload bookmarks to, have it sort them, remove duplicates and export the entire list as a Firefox/IE/Safari bookmark file. For added complexity see if you can group the bookmark items into various folders. -**Password Safe** – A program which keeps track of passwords for sites or applications and encrypts them with a key so that no one can read them. +**Password Safe** - A program which keeps track of passwords for sites or applications and encrypts them with a key so that no one can read them. -**Media Player Widget for iGoogle** – Create an iGoogle gadget which can play various song lists from your computer as well as share one song daily. Perhaps let people look up which songs you have listened to lately. +**Media Player Widget for iGoogle** - Create an iGoogle gadget which can play various song lists from your computer as well as share one song daily. Perhaps let people look up which songs you have listened to lately. -**Text Based Game Like Utopia** – Create a simple text based RPG like Utopia where you can create a civilization, gather resources, forge alliances, cast spells and more on a turn based system. See if you can dominate the kingdom. +**Text Based Game Like Utopia** - Create a simple text based RPG like Utopia where you can create a civilization, gather resources, forge alliances, cast spells and more on a turn based system. See if you can dominate the kingdom. -**Scheduled Auto Login and Action** – Make an application which logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking web mail, posting regular content, or getting info for other applications and saving it to your computer. +**Scheduled Auto Login and Action** - Make an application which logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking web mail, posting regular content, or getting info for other applications and saving it to your computer. -**E-Card Generator** – Make a site that allows people to generate their own little e-cards and send them to other people. Can use flash or not. Use a picture library and perhaps insightful mottos or quotes. +**E-Card Generator** - Make a site that allows people to generate their own little e-cards and send them to other people. Can use flash or not. Use a picture library and perhaps insightful mottos or quotes. -**Content Management System** – Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small and allow for the addition of modules/addons later. +**Content Management System** - Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small and allow for the addition of modules/addons later. -**Template Maker** – Make a site or application which allows the user to enter in various color codes, elements, dimensions and constructs a template file for a particular application like PHPBB, Invision Board, MySpace, Bebo, etc. +**Template Maker** - Make a site or application which allows the user to enter in various color codes, elements, dimensions and constructs a template file for a particular application like PHPBB, Invision Board, MySpace, Bebo, etc. -**CAPTCHA Maker** – Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. If you use PHP, take a look at the image functions of GD. +**CAPTCHA Maker** - Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. If you use PHP, take a look at the image functions of GD. From 4e2963957c9c68108e6ae7867068f8532a3a7403 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Thu, 25 Jul 2013 13:52:08 +0530 Subject: [PATCH 016/110] Removed some projects --- README.md | 96 ++++++++++++------------------------------------------- 1 file changed, 21 insertions(+), 75 deletions(-) diff --git a/README.md b/README.md index fad43be24..8c05fad7a 100644 --- a/README.md +++ b/README.md @@ -78,75 +78,49 @@ Text **Text Editor** - Notepad style application that can open, edit, and save text documents. *Optional: Add syntax highlighting and other features.* -**RSS Feed Creator** - A program which can read in text from other sources and put it in RSS or Atom news format for syndication. +**RSS Feed Creator** - Given a link to RSS/Atom Feed, get all posts and display them. -**Post it Notes Program** - A program where you can add text reminders and post them. You can have the program also add popup reminders. +**Post it Notes Program** - A program where you can add text reminders and post them. *Optional: You can have the program also add popup reminders.* -**Quote Tracker (market symbols etc)** - A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked and the program can show green up and red down arrows to show which direction the stock value has moved. +**Quote Tracker (market symbols etc)** - A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked. For CLI, show whether the stock has moved up or down. *Optional: If GUI, the program can show green up and red down arrows to show which direction the stock value has moved.* -**Guestbook / Journal** - A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. - -**News Ticker and Game Scores** - A program which sits on your desktop and aggregates news and game scores from various sources on the net. It then scrolls them across the screen on regular intervals. +**Guestbook / Journal** - A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. *Optional: Deploy it on Google App Engine or Heroku or any other PaaS (if possible, of course).* **Fortune Teller (Horoscope)** - A program that checks your horoscope on various astrology sites and puts them together for you each day. **Vigenere / Vernam / Ceasar Ciphers** - Functions for encrypting and decrypting data messages. Then send them to a friend. -**Random Gift Suggestions** - Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one and perhaps places you can get it. - -**Text to HTML Generator** - Converts text files into web HTML files and stylizes them. Great for making online documentation of standard text documentation. +**Random Gift Suggestions** - Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one. *Optional: Suggest places you can get it (link to Amazon page?).* -**CD Key Generator** - Generates a unique key for your applications to use based on some arbitrary algorithm that you can specify. Great for software developers looking to make shareware that can be activated. +**Markdown to HTML Converter** - Converts Markdown formatted text into HTML files. Implement basic tags like `p`, `strong`, `em` etc. *Optional: Implement all tags from [Markdown Syntax Docs](daringfireball.net/projects/markdown/syntax).* -**Regex Query Tool** - A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular exp****ression against the source text and return any matches or flag errors in the regular exp****ression. +**Regex Query Tool** - A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular expression against the source text and return any matches or flag errors in the regular expression. Networking --------- **FTP Program** - A file transfer program which can transfer files back and forth from a remote web sever. -**Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. There are various clocks across the world. Do a search for a list of them. - -**Chat Application (IRC or MSN Style)** - Create a chat application that can create simple chat rooms like on Internet Relay Chat (IRC) or a more direct chatting style like MSN. For added complexity, create your own protocol to facilitate this chatting. - -**Fetch Current Weather** - Get the current weather for a given zip/postal code. - -**P2P File Sharing App** - Create a program like LimeWire, FrostWire, Bearshare, or a torrent style application. +**Bandwidth Monitor** - A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it. **Port Scanner** - Enter an IP address and a port range where the program will then attempt to find open ports on the given computer by connecting to each of them. On any successful connections mark the port as open. -**Mail Checker (POP3 / IMAP)** - The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email on several accounts at a given interval. +**Mail Checker (POP3 / IMAP)** - The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email at a given interval. -**Packet Sniffer** - A utility program that will read packets coming in and out of the machine along with related information like destination and payload size. - -**Country from IP Lookup** - Enter an IP address and find the country that IP is registered in. +**Country from IP Lookup** - Enter an IP address and find the country that IP is registered in. *Optional: Find the Ip automatically.* **Whois Search Tool** - Enter an IP or host address and have it look it up through whois and return the results to you. -**Zip / Postal Code Lookup** - Enter a zip or postal code and have it return which city/cities that are in that zip code. - -**Remote Login** - Create a remote desktop style application which can see and control the remote computer (given you have permissions). It may require the use of your own private network and a second computer to test with. - **Site Checker with Time Scheduling** - An application that attempts to connect to a website or server every so many minutes or a given time and check if it is up. If it is down, it will notify you by email or by posting a notice on screen. -**Small Web Server** - A simple web server that can serve HTML files that contain Javascript and other forms of non-code executing code. Added complexity would be to try and implement streaming video, create a server-side language, or serve up other stream types. - -**Web Bot** - An automated program which carries out tasks on the web including checking websites, page scraping, and summarization of data or web posting. - Classes --------- -**Product Inventory Project** - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an inventory class which keeps track of various products and can sum up the inventory value. - -**Movie Store** - Manage video rentals and controls when videos are checked out, due to return, overdue fees and for added complexity create a summary of those accounts which are overdue for contact. +**Product Inventory Project** - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an *inventory* class which keeps track of various products and can sum up the inventory value. **Airline / Hotel Reservation System** - Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. -**Student Grade Book Application** - Keep track of students (with a student class that has their name, average, and scores) in a class and their grades. Assign their scores on tests and assignments to the students and figure out their average and grade for the class. For added complexity put the students on a bell curve. - -**Bank Account Manager** - Create a class called “Account” which will be an abstract class for three other classes called “CheckingAccount”, “SavingsAccount” and “BusinessAccount”. Manage credits and debits from these accounts through an ATM style program. - -**Library Catalog** - Create a book class with a title, page count, ISBN and whether or not it is checked out or not. Manage a collection of various books and allow the user to check out books or return books. For added complexity generate a report of those books overdue and any fees. Also allow users to put books on reserve. +**Bank Account Manager** - Create a class called Account which will be an abstract class for three other classes called CheckingAccount, SavingsAccount and BusinessAccount. Manage credits and debits from these accounts through an ATM style program. **Patient / Doctor Scheduler** - Create a patient class and a doctor class. Have a doctor that can handle multiple patients and setup a scheduling program where a doctor can only handle 16 patients during an 8 hr work day. @@ -154,67 +128,39 @@ Classes **Image Gallery** - Create an image abstract class and then a class that inherits from it for each image type. Put them in a program which displays them in a gallery style format for viewing. -**Class to Handle Large Numbers** - We know that the basic data types like integer, long, double, and floats only go so far. Create a class that can manage extremely large numbers like those used in space exploration. - -**Chart Making Class / API** - Create a class, or a set of classes, that generates bar charts, pie charts, histograms, and scatter plot charts. For added complexity, make this a service where people can connect to a web server, supply information and it returns a chart image for them in gif or jpg format. - -**Shape Area and Perimeter Classes** - Create an abstract class called “Shape” and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type. - -**Matrix Class** - A class to manage matrices. Add, subtract and multiple matrices. +**Shape Area and Perimeter Classes** - Create an abstract class called Shape and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type. **Flower Shop Ordering To Go** - Create a flower shop application which deals in flower objects and use those flower objects in a bouquet object which can then be sold. Keep track of the number of objects and when you may need to order more. -**Vending Machine** - Create an application which takes money and dispenses various types of candy or other item. The user enters a number and letter sequence, like D9, and have it return an instance of “Item” which of the proper type. Example when they press D9 it will return a type of candy bar which is an instance of Mr. GoodBar. - -**Josephus Problem** - Create a program which links together various node objects and then every Nth object is removed until you have one object left. This last object is the sole survivor. Look it up on Google under “Josephus Algorithm” - -**Family Tree Creator** - Create a class called “Person” which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen. +**Family Tree Creator** - Create a class called Person which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen. Threading --------- **Create A Progress Bar for Downloads** - Create a progress bar for applications that can keep track of a download in progress. The progress bar will be on a separate thread and will communicate with the main thread using delegates. -**Download Manager** - Allow your program to download various files and each one is downloading in the background on a separate thread. The main thread will keep track of the other thread’s progress and notify the user when downloads are completed. - -**Chat Application (remoting style)** - Create a chat application which allows you to connect directly to another computer by their IP through the use of remoting and allow your “server” application handle multiple incoming connections. - **Bulk Thumbnail Creator** - Picture processing can take a bit of time for some transformations. Especially if the image is large. Create an image program which can take hundreds of images and converts them to a specified size in the background thread while you do other things. For added complexity, have one thread handling re-sizing, have another bulk renaming of thumbnails etc. Web --------- -**WYSIWG (What you see is what you get) Editor** - Create an editor online which allows people to move around elements, create tables, write text, set colors etc for web pages without having to know HTML. Think Dreamweaver or FrontPage but for online sites. If you need an example check out the DIC page used to create a post. +**Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. *Optional: Organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file.* **Web Browser with Tabs** - Create a small web browser that allows you to navigate the web and contains tabs which can be used to navigate to multiple web pages at once. For simplicity don’t worry about executing Javascript or other client side code. -**Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. For added complexity, organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file. - -**File Downloader** - An application which can download various objects on a page including video streams or all files on a page. Great for pages with a lot of download links. +**Online White Board** - Create an application which allows you to draw pictures, write notes and use various colors to flesh out ideas for projects. *Optional: Add feature to invite friends to collaborate on a white board online.* -**Telnet Application** - Create an application which can telnet into servers across the internet and run basic commands. +**Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. Use any one of the atomic clocks returned by a simple Google search. -**Online White Board** - Create an application which allows you and friends to collaborate on a white board online. Draw pictures, write notes and use various colors to flesh out ideas for projects. For added complexity try building in picture tubes. - -**Bandwidth Monitor** - A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it. - -**Bookmark Collector and Sorter** - An application that you can put online for people to upload bookmarks to, have it sort them, remove duplicates and export the entire list as a Firefox/IE/Safari bookmark file. For added complexity see if you can group the bookmark items into various folders. - -**Password Safe** - A program which keeps track of passwords for sites or applications and encrypts them with a key so that no one can read them. - -**Media Player Widget for iGoogle** - Create an iGoogle gadget which can play various song lists from your computer as well as share one song daily. Perhaps let people look up which songs you have listened to lately. - -**Text Based Game Like Utopia** - Create a simple text based RPG like Utopia where you can create a civilization, gather resources, forge alliances, cast spells and more on a turn based system. See if you can dominate the kingdom. +**Fetch Current Weather** - Get the current weather for a given zip/postal code. *Optional: Try locating the user automatically.* **Scheduled Auto Login and Action** - Make an application which logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking web mail, posting regular content, or getting info for other applications and saving it to your computer. -**E-Card Generator** - Make a site that allows people to generate their own little e-cards and send them to other people. Can use flash or not. Use a picture library and perhaps insightful mottos or quotes. - -**Content Management System** - Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small and allow for the addition of modules/addons later. +**E-Card Generator** - Make a site that allows people to generate their own little e-cards and send them to other people. Do not use Flash. Use a picture library and perhaps insightful mottos or quotes. -**Template Maker** - Make a site or application which allows the user to enter in various color codes, elements, dimensions and constructs a template file for a particular application like PHPBB, Invision Board, MySpace, Bebo, etc. +**Content Management System** - Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small. *Optional: Allow for the addition of modules/addons.* -**CAPTCHA Maker** - Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. If you use PHP, take a look at the image functions of GD. +**CAPTCHA Maker** - Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. Files --------- From d8bfe9c2fb0637aa90a80974aef783589113914d Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Thu, 25 Jul 2013 14:00:53 +0530 Subject: [PATCH 017/110] Removed more very hard, duplicate problems --- README.md | 34 ++++++---------------------------- 1 file changed, 6 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index 8c05fad7a..817ed7c90 100644 --- a/README.md +++ b/README.md @@ -167,35 +167,17 @@ Files **Quiz Maker** - Make an application which takes various questions form a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes. -**Quick Launcher** - A utility program that allows the user to assign various programs to icons on a toolbar. Then by clicking the buttons they can quickly launch the programs with parameters etc. Much like Windows quick launch. +**File Explorer** - Create your own simple windows explorer program. Add feature(s) you always thought are missing from MS Windows Explorer or Mac Finder. -**File Explorer** - Create your own windows explorer program but with added features, better searching, new icons and other views. +**Sort Excel/CSV File Utility** - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. -**Sort File Records Utility** - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. +**Create Zip File Maker** - The user enters various files from different directories and the program zips them up into a zip file. *Optional: Apply actual compression to the files. Start with Huffman Algorithm.* -**Add Transactions In File and Find Averages** - Read in a file of financial transactions, group them into accounts, add up fields or find averages or apply credits and debits to each account. - -**Create Zip File Maker** - The user enters various files from different directories and maybe even another computer on the network and the program transfers them and zips them up into a zip file. For added complexity, apply actual compression to the files. - -**PDF Generator** - An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. - -**Bulk Renamer and Organizer** - This program will take a series of files and renames them with a specific filename filter entered by the user. For instance if the user enters myimage###.jpg it will rename all files with a “minimum” of three numbers like “myimage001.jpg”, “myimage145.jpg” or even “myimage1987.jpg” since 1987 has at least three numbers. +**PDF Generator** - An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. *Optional: Deploy on GAE or Heroku if possible.* **Mp3 Tagger** - Modify and add ID3v1 tags to MP3 files. See if you can also add in the album art into the MP3 file’s header as well as other ID3v2 tags. -**Log File Maker** - Make an application which logs various statistics in response to given events. This can be something that logs what an application does, what the system is doing, when something like a file changes etc. - -**Excel Spreadsheet Exporter** - Create an online application which can read in a file and create an Excel Spreadsheet to export back. This can be through CVS or other file formats. For added complexity, see if you can create formula fields as well. - -**RPG Character Stat Creator** - Make a program which will randomly create a character’s stats based on several rules set forth by the user. Have it generate a class, gender, strength/magic/dexterity points, and extra abilities or trades. Have it save it to a file which can then be printed out by a dungeon master. - -**Image Map Generator** - Image maps are those images on the web that have multiple hover points that link to different pages. Such images may include maps or splash pages. See if you can make one where the user specifies an image, clicks hotspots in the image and specify links. It will then generate the HTML code to a file that the user can then copy and paste into their website to make the image map. - -**File Copy Utility** - Create a utility that can do bulk file copying and backups of other files. - -**Code Snippet Manager** - Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. For extra practice try adding syntax highlighting based on the language. - -**Versioning Manager** - Create your own versioning system for code files. Users are forced to check out items and lock items during reading and writing so that a group of programmers are not accidentally overwriting code files on one another. +**Code Snippet Manager** - Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. *Optional: For extra practice try adding syntax highlighting based on the language.* Databases --------- @@ -204,13 +186,9 @@ Databases **Remote SQL Tool** - A utility that can execute queries on remote servers from your local computer across the Internet. It should take in a remote host, user name and password, run the query and return the results. -**Baseball / Other Card Collector** - Create an online application for keeping track of a collection of cards. Let the user enter all cards in a set, check off which ones they have, which ones they need and generate lists of cards they are looking for. For extra complexity, have it sum up sets and generate reports on how close they are of completing sets or the current value of a set. - **Report Generator** - Create a utility that generates a report based on some tables in a database. Generates a sales reports based on the order/order details tables or sums up the days current database activity. -**Database Backup Script Maker** - A program which reads a database’s objects, relationships, records and stored procedures and creates a .sql file which can then be imported into another database or kept as a backup file to rebuild the database with. - -**Event Scheduler and Calendar** - Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. For added complexity, allow the application to create reoccurrence events that reoccur every day, week, month, year etc. +**Event Scheduler and Calendar** - Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. For added complexity, allow the application to create re-occurrence events that reoccur every day, week, month, year etc. **Budget Tracker** - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. For added complexity allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period. From 58e35041ce00e426c71d99168a79870b898b2315 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Thu, 25 Jul 2013 14:03:45 +0530 Subject: [PATCH 018/110] Moving around some problems into correct categories --- README.md | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 817ed7c90..aecbb83bb 100644 --- a/README.md +++ b/README.md @@ -160,6 +160,8 @@ Web **Content Management System** - Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small. *Optional: Allow for the addition of modules/addons.* +**Web Board (Forum)** - Create a forum for you and your buddies to post, administer and share thoughts and ideas. + **CAPTCHA Maker** - Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. Files @@ -188,22 +190,16 @@ Databases **Report Generator** - Create a utility that generates a report based on some tables in a database. Generates a sales reports based on the order/order details tables or sums up the days current database activity. -**Event Scheduler and Calendar** - Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. For added complexity, allow the application to create re-occurrence events that reoccur every day, week, month, year etc. +**Event Scheduler and Calendar** - Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. *Optional: Allow the application to create re-occurrence events that reoccur every day, week, month, year etc.* -**Budget Tracker** - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. For added complexity allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period. +**Budget Tracker** - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. *Optional: Allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period.* -**Address Book** - Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database. For extra complexity, allow the user to connect to a website publish their address book based on specific options the user has set. +**Address Book** - Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database. **TV Show Tracker** - Got a favorite show you don’t want to miss? Don’t have a PVR or want to be able to find the show to then PVR it later? Make an application which can search various online TV Guide sites, locate the shows/times/channels and add them to a database application. The database/website then can send you email reminders that a show is about to start and which channel it will be on. **Travel Planner System** - Make a system that allows users to put together their own little travel itinerary and keep track of the airline / hotel arrangements, points of interest, budget and schedule. -**Entity Relationship Diagram (ERD) Creator** - A program that allows the user to put together ERD diagram and save it or have it generate some basic SQL syntax to give them a jump start. - -**Database Translation (MySQL SQL Server)** - A simple utility that reads in from one database and constructs SQL compliant with another database. Then saves that to another database. One popular transition would be to and from MySQL server for databases like SQL Server and Oracle. - -**Web Board (Forum)** - Create a forum for you and your buddies to post, administer and share thoughts and ideas. - Graphics and Multimedia --------- From 64d7e880bcd3010de5c9caa7146bbc980b97ae9f Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Thu, 25 Jul 2013 14:07:06 +0530 Subject: [PATCH 019/110] Removed more very hard, duplicate problems, sorted categories --- README.md | 32 ++++---------------------------- 1 file changed, 4 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index aecbb83bb..15367c4af 100644 --- a/README.md +++ b/README.md @@ -203,39 +203,15 @@ Databases Graphics and Multimedia --------- -**Slide Show** - Make an application that shows various pictures in a slide show format. For extra complexity try adding various effects like fade in/out, star wipe and window blinds transitions. - -**Mind Mapper** - Allow the user to put down ideas and quickly brainstorm how they are related into a mind map. The goal here is speed so let the user quickly write in an idea and drag it around in a visual map to show relationships. - -**Import Picture and Save as Grayscale** - A utility that sucks the color right out of an image and saves it. You could add more including adjusting contrast, colorizing and more for added complexity. +**Slide Show** - Make an application that shows various pictures in a slide show format. *Optional: Try adding various effects like fade in/out, star wipe and window blinds transitions.* **Stream Video from Online** - Try to create your own online streaming video player. -**Mp3 Player (and Other Formats)** - A simple program for playing your favorite music files. For extra complexity see if you can add in playlists and an equalizer. - -**Bulk Picture Manipulator** - This program will take in a directory of pictures and apply a certain effect to them whether it be reducing color count, changing its format, or alter file attributes. For something extra try to see if you can also create a system to tag them. - -**CD Burning App** - Create a utility that simply burns data to a CD. - -**YouTube Downloader** - A program which can download videos to your hard drive from youtube.com. Save the files in various formats including FLV and AVI. - -**Wallpaper Manager** - Make a program which keeps track of your favorite wallpapers, changes them regularly and maybe even re-sizes them for your resolution (aka tiles one and stretches another) - -**Screen Capture Program** - Make a utility that will simply capture a frame from your web cam. For added complexity see if you can also build in emailing functionality. - -**Image Browser** - This application is used to view various image files on your computer from PNG, GIF, JPG to BMP, TIFF etc. - -**Traffic Light Application** - See if you can make your own street light application and then put it into an intersection scenario. Don’t let any cars run the lights and crash into one another! - -**MP3 to Wav Converter** - MP3 is essentially compressed wav format. See if you can translate it back into wav so that some other sound editing programs can work with the wav file itself. Keep in mind that 1 MB of MP3 is relative 10MB wav. - -**Signature Maker** - Ever seen those web board posts where someone has a generated signature made up? See if you can make a program that allows the user to specify a background, text, colors and alignment to make their own signatures or userbars. - -**Screen Saver** - Make a screensaver program that will run while your computer sits idle. To make a simple one use some standard pictures and then for added complexity try a 3D object that spins around the screen and bounces off the sides. +**Mp3 Player** - A simple program for playing your favorite music files. Add features you though are missing from your favorite music player. -**Watermarking Application** - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. +**Watermarking Application** - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. *Optional: Use threading to process multiple images simultaneously.* -**Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. For added complexity, allow the program to read in the list of commands from a file. Do a search online for “Turtle Graphics” for more information. +**Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. Do a search online for "Turtle Graphics" for more information. *Optional: Allow the program to read in the list of commands from a file.* =============================================== From 0a9183cd45bc9a9523e42e073bb055ead0d5248f Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Thu, 25 Jul 2013 14:08:24 +0530 Subject: [PATCH 020/110] Replicate README --- README-scratch.md | 178 ++++++++++------------------------------------ 1 file changed, 37 insertions(+), 141 deletions(-) diff --git a/README-scratch.md b/README-scratch.md index 5c3e750ca..c3f24ff03 100644 --- a/README-scratch.md +++ b/README-scratch.md @@ -47,77 +47,51 @@ Text **Count Words in a String** - Counts the number of individual words in a string. For added complexity read these strings in from a text file and generate a summary. -**Text Editor** - Notepad style application that can open, edit, and save text documents. Add syntax highlighting and other features. +**Text Editor** - Notepad style application that can open, edit, and save text documents. *Optional: Add syntax highlighting and other features.* -**RSS Feed Creator** - A program which can read in text from other sources and put it in RSS or Atom news format for syndication. +**RSS Feed Creator** - Given a link to RSS/Atom Feed, get all posts and display them. -**Post it Notes Program** - A program where you can add text reminders and post them. You can have the program also add popup reminders. +**Post it Notes Program** - A program where you can add text reminders and post them. *Optional: You can have the program also add popup reminders.* -**Quote Tracker (market symbols etc)** - A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked and the program can show green up and red down arrows to show which direction the stock value has moved. +**Quote Tracker (market symbols etc)** - A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked. For CLI, show whether the stock has moved up or down. *Optional: If GUI, the program can show green up and red down arrows to show which direction the stock value has moved.* -**Guestbook / Journal** - A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. - -**News Ticker and Game Scores** - A program which sits on your desktop and aggregates news and game scores from various sources on the net. It then scrolls them across the screen on regular intervals. +**Guestbook / Journal** - A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. *Optional: Deploy it on Google App Engine or Heroku or any other PaaS (if possible, of course).* **Fortune Teller (Horoscope)** - A program that checks your horoscope on various astrology sites and puts them together for you each day. **Vigenere / Vernam / Ceasar Ciphers** - Functions for encrypting and decrypting data messages. Then send them to a friend. -**Random Gift Suggestions** - Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one and perhaps places you can get it. - -**Text to HTML Generator** - Converts text files into web HTML files and stylizes them. Great for making online documentation of standard text documentation. +**Random Gift Suggestions** - Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one. *Optional: Suggest places you can get it (link to Amazon page?).* -**CD Key Generator** - Generates a unique key for your applications to use based on some arbitrary algorithm that you can specify. Great for software developers looking to make shareware that can be activated. +**Markdown to HTML Converter** - Converts Markdown formatted text into HTML files. Implement basic tags like `p`, `strong`, `em` etc. *Optional: Implement all tags from [Markdown Syntax Docs](daringfireball.net/projects/markdown/syntax).* -**Regex Query Tool** - A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular exp****ression against the source text and return any matches or flag errors in the regular exp****ression. +**Regex Query Tool** - A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular expression against the source text and return any matches or flag errors in the regular expression. Networking --------- **FTP Program** - A file transfer program which can transfer files back and forth from a remote web sever. -**Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. There are various clocks across the world. Do a search for a list of them. - -**Chat Application (IRC or MSN Style)** - Create a chat application that can create simple chat rooms like on Internet Relay Chat (IRC) or a more direct chatting style like MSN. For added complexity, create your own protocol to facilitate this chatting. - -**Fetch Current Weather** - Get the current weather for a given zip/postal code. - -**P2P File Sharing App** - Create a program like LimeWire, FrostWire, Bearshare, or a torrent style application. +**Bandwidth Monitor** - A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it. **Port Scanner** - Enter an IP address and a port range where the program will then attempt to find open ports on the given computer by connecting to each of them. On any successful connections mark the port as open. -**Mail Checker (POP3 / IMAP)** - The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email on several accounts at a given interval. - -**Packet Sniffer** - A utility program that will read packets coming in and out of the machine along with related information like destination and payload size. +**Mail Checker (POP3 / IMAP)** - The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email at a given interval. -**Country from IP Lookup** - Enter an IP address and find the country that IP is registered in. +**Country from IP Lookup** - Enter an IP address and find the country that IP is registered in. *Optional: Find the Ip automatically.* **Whois Search Tool** - Enter an IP or host address and have it look it up through whois and return the results to you. -**Zip / Postal Code Lookup** - Enter a zip or postal code and have it return which city/cities that are in that zip code. - -**Remote Login** - Create a remote desktop style application which can see and control the remote computer (given you have permissions). It may require the use of your own private network and a second computer to test with. - **Site Checker with Time Scheduling** - An application that attempts to connect to a website or server every so many minutes or a given time and check if it is up. If it is down, it will notify you by email or by posting a notice on screen. -**Small Web Server** - A simple web server that can serve HTML files that contain Javascript and other forms of non-code executing code. Added complexity would be to try and implement streaming video, create a server-side language, or serve up other stream types. - -**Web Bot** - An automated program which carries out tasks on the web including checking websites, page scraping, and summarization of data or web posting. - Classes --------- -**Product Inventory Project** - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an inventory class which keeps track of various products and can sum up the inventory value. - -**Movie Store** - Manage video rentals and controls when videos are checked out, due to return, overdue fees and for added complexity create a summary of those accounts which are overdue for contact. +**Product Inventory Project** - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an *inventory* class which keeps track of various products and can sum up the inventory value. **Airline / Hotel Reservation System** - Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. -**Student Grade Book Application** - Keep track of students (with a student class that has their name, average, and scores) in a class and their grades. Assign their scores on tests and assignments to the students and figure out their average and grade for the class. For added complexity put the students on a bell curve. - -**Bank Account Manager** \- Create a class called “Account” which will be an abstract class for three other classes called “CheckingAccount”, “SavingsAccount” and “BusinessAccount”. Manage credits and debits from these accounts through an ATM style program. - -**Library Catalog** - Create a book class with a title, page count, ISBN and whether or not it is checked out or not. Manage a collection of various books and allow the user to check out books or return books. For added complexity generate a report of those books overdue and any fees. Also allow users to put books on reserve. +**Bank Account Manager** - Create a class called Account which will be an abstract class for three other classes called CheckingAccount, SavingsAccount and BusinessAccount. Manage credits and debits from these accounts through an ATM style program. **Patient / Doctor Scheduler** - Create a patient class and a doctor class. Have a doctor that can handle multiple patients and setup a scheduling program where a doctor can only handle 16 patients during an 8 hr work day. @@ -125,102 +99,58 @@ Classes **Image Gallery** - Create an image abstract class and then a class that inherits from it for each image type. Put them in a program which displays them in a gallery style format for viewing. -**Class to Handle Large Numbers** - We know that the basic data types like integer, long, double, and floats only go so far. Create a class that can manage extremely large numbers like those used in space exploration. - -**Chart Making Class / API** - Create a class, or a set of classes, that generates bar charts, pie charts, histograms, and scatter plot charts. For added complexity, make this a service where people can connect to a web server, supply information and it returns a chart image for them in gif or jpg format. - -**Shape Area and Perimeter Classes** - Create an abstract class called “Shape” and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type. - -**Matrix Class** - A class to manage matrices. Add, subtract and multiple matrices. +**Shape Area and Perimeter Classes** - Create an abstract class called Shape and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type. **Flower Shop Ordering To Go** - Create a flower shop application which deals in flower objects and use those flower objects in a bouquet object which can then be sold. Keep track of the number of objects and when you may need to order more. -**Vending Machine** - Create an application which takes money and dispenses various types of candy or other item. The user enters a number and letter sequence, like D9, and have it return an instance of “Item” which of the proper type. Example when they press D9 it will return a type of candy bar which is an instance of Mr. GoodBar. - -**Josephus Problem** - Create a program which links together various node objects and then every Nth object is removed until you have one object left. This last object is the sole survivor. Look it up on Google under “Josephus Algorithm” - -**Family Tree Creator** - Create a class called “Person” which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen. +**Family Tree Creator** - Create a class called Person which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen. Threading --------- **Create A Progress Bar for Downloads** - Create a progress bar for applications that can keep track of a download in progress. The progress bar will be on a separate thread and will communicate with the main thread using delegates. -**Download Manager** - Allow your program to download various files and each one is downloading in the background on a separate thread. The main thread will keep track of the other thread’s progress and notify the user when downloads are completed. - -**Chat Application (remoting style)** - Create a chat application which allows you to connect directly to another computer by their IP through the use of remoting and allow your “server” application handle multiple incoming connections. - **Bulk Thumbnail Creator** - Picture processing can take a bit of time for some transformations. Especially if the image is large. Create an image program which can take hundreds of images and converts them to a specified size in the background thread while you do other things. For added complexity, have one thread handling re-sizing, have another bulk renaming of thumbnails etc. Web --------- -**WYSIWG (What you see is what you get) Editor** - Create an editor online which allows people to move around elements, create tables, write text, set colors etc for web pages without having to know HTML. Think Dreamweaver or FrontPage but for online sites. If you need an example check out the DIC page used to create a post. +**Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. *Optional: Organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file.* **Web Browser with Tabs** - Create a small web browser that allows you to navigate the web and contains tabs which can be used to navigate to multiple web pages at once. For simplicity don’t worry about executing Javascript or other client side code. -**Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. For added complexity, organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file. - -**File Downloader** - An application which can download various objects on a page including video streams or all files on a page. Great for pages with a lot of download links. - -**Telnet Application** - Create an application which can telnet into servers across the internet and run basic commands. - -**Online White Board** - Create an application which allows you and friends to collaborate on a white board online. Draw pictures, write notes and use various colors to flesh out ideas for projects. For added complexity try building in picture tubes. - -**Bandwidth Monitor** - A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it. - -**Bookmark Collector and Sorter** - An application that you can put online for people to upload bookmarks to, have it sort them, remove duplicates and export the entire list as a Firefox/IE/Safari bookmark file. For added complexity see if you can group the bookmark items into various folders. - -**Password Safe** - A program which keeps track of passwords for sites or applications and encrypts them with a key so that no one can read them. +**Online White Board** - Create an application which allows you to draw pictures, write notes and use various colors to flesh out ideas for projects. *Optional: Add feature to invite friends to collaborate on a white board online.* -**Media Player Widget for iGoogle** - Create an iGoogle gadget which can play various song lists from your computer as well as share one song daily. Perhaps let people look up which songs you have listened to lately. +**Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. Use any one of the atomic clocks returned by a simple Google search. -**Text Based Game Like Utopia** - Create a simple text based RPG like Utopia where you can create a civilization, gather resources, forge alliances, cast spells and more on a turn based system. See if you can dominate the kingdom. +**Fetch Current Weather** - Get the current weather for a given zip/postal code. *Optional: Try locating the user automatically.* **Scheduled Auto Login and Action** - Make an application which logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking web mail, posting regular content, or getting info for other applications and saving it to your computer. -**E-Card Generator** - Make a site that allows people to generate their own little e-cards and send them to other people. Can use flash or not. Use a picture library and perhaps insightful mottos or quotes. +**E-Card Generator** - Make a site that allows people to generate their own little e-cards and send them to other people. Do not use Flash. Use a picture library and perhaps insightful mottos or quotes. -**Content Management System** - Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small and allow for the addition of modules/addons later. +**Content Management System** - Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small. *Optional: Allow for the addition of modules/addons.* -**Template Maker** - Make a site or application which allows the user to enter in various color codes, elements, dimensions and constructs a template file for a particular application like PHPBB, Invision Board, MySpace, Bebo, etc. +**Web Board (Forum)** - Create a forum for you and your buddies to post, administer and share thoughts and ideas. -**CAPTCHA Maker** - Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. If you use PHP, take a look at the image functions of GD. +**CAPTCHA Maker** - Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. Files --------- **Quiz Maker** - Make an application which takes various questions form a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes. -**Quick Launcher** - A utility program that allows the user to assign various programs to icons on a toolbar. Then by clicking the buttons they can quickly launch the programs with parameters etc. Much like Windows quick launch. - -**File Explorer** - Create your own windows explorer program but with added features, better searching, new icons and other views. - -**Sort File Records Utility** - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. - -**Add Transactions In File and Find Averages** - Read in a file of financial transactions, group them into accounts, add up fields or find averages or apply credits and debits to each account. +**File Explorer** - Create your own simple windows explorer program. Add feature(s) you always thought are missing from MS Windows Explorer or Mac Finder. -**Create Zip File Maker** - The user enters various files from different directories and maybe even another computer on the network and the program transfers them and zips them up into a zip file. For added complexity, apply actual compression to the files. +**Sort Excel/CSV File Utility** - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. -**PDF Generator** - An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. +**Create Zip File Maker** - The user enters various files from different directories and the program zips them up into a zip file. *Optional: Apply actual compression to the files. Start with Huffman Algorithm.* -**Bulk Renamer and Organizer** - This program will take a series of files and renames them with a specific filename filter entered by the user. For instance if the user enters myimage###.jpg it will rename all files with a “minimum” of three numbers like “myimage001.jpg”, “myimage145.jpg” or even “myimage1987.jpg” since 1987 has at least three numbers. +**PDF Generator** - An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. *Optional: Deploy on GAE or Heroku if possible.* **Mp3 Tagger** - Modify and add ID3v1 tags to MP3 files. See if you can also add in the album art into the MP3 file’s header as well as other ID3v2 tags. -**Log File Maker** - Make an application which logs various statistics in response to given events. This can be something that logs what an application does, what the system is doing, when something like a file changes etc. - -**Excel Spreadsheet Exporter** - Create an online application which can read in a file and create an Excel Spreadsheet to export back. This can be through CVS or other file formats. For added complexity, see if you can create formula fields as well. - -**RPG Character Stat Creator** - Make a program which will randomly create a character’s stats based on several rules set forth by the user. Have it generate a class, gender, strength/magic/dexterity points, and extra abilities or trades. Have it save it to a file which can then be printed out by a dungeon master. - -**Image Map Generator** - Image maps are those images on the web that have multiple hover points that link to different pages. Such images may include maps or splash pages. See if you can make one where the user specifies an image, clicks hotspots in the image and specify links. It will then generate the HTML code to a file that the user can then copy and paste into their website to make the image map. - -**File Copy Utility** - Create a utility that can do bulk file copying and backups of other files. - -**Code Snippet Manager** - Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. For extra practice try adding syntax highlighting based on the language. - -**Versioning Manager** - Create your own versioning system for code files. Users are forced to check out items and lock items during reading and writing so that a group of programmers are not accidentally overwriting code files on one another. +**Code Snippet Manager** - Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. *Optional: For extra practice try adding syntax highlighting based on the language.* Databases --------- @@ -229,68 +159,34 @@ Databases **Remote SQL Tool** - A utility that can execute queries on remote servers from your local computer across the Internet. It should take in a remote host, user name and password, run the query and return the results. -**Baseball / Other Card Collector** - Create an online application for keeping track of a collection of cards. Let the user enter all cards in a set, check off which ones they have, which ones they need and generate lists of cards they are looking for. For extra complexity, have it sum up sets and generate reports on how close they are of completing sets or the current value of a set. - **Report Generator** - Create a utility that generates a report based on some tables in a database. Generates a sales reports based on the order/order details tables or sums up the days current database activity. -**Database Backup Script Maker** - A program which reads a database’s objects, relationships, records and stored procedures and creates a .sql file which can then be imported into another database or kept as a backup file to rebuild the database with. +**Event Scheduler and Calendar** - Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. *Optional: Allow the application to create re-occurrence events that reoccur every day, week, month, year etc.* -**Event Scheduler and Calendar** - Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. For added complexity, allow the application to create reoccurrence events that reoccur every day, week, month, year etc. +**Budget Tracker** - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. *Optional: Allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period.* -**Budget Tracker** - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. For added complexity allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period. - -**Address Book** - Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database. For extra complexity, allow the user to connect to a website publish their address book based on specific options the user has set. +**Address Book** - Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database. **TV Show Tracker** - Got a favorite show you don’t want to miss? Don’t have a PVR or want to be able to find the show to then PVR it later? Make an application which can search various online TV Guide sites, locate the shows/times/channels and add them to a database application. The database/website then can send you email reminders that a show is about to start and which channel it will be on. **Travel Planner System** - Make a system that allows users to put together their own little travel itinerary and keep track of the airline / hotel arrangements, points of interest, budget and schedule. -**Entity Relationship Diagram (ERD) Creator** - A program that allows the user to put together ERD diagram and save it or have it generate some basic SQL syntax to give them a jump start. - -**Database Translation (MySQL SQL Server)** - A simple utility that reads in from one database and constructs SQL compliant with another database. Then saves that to another database. One popular transition would be to and from MySQL server for databases like SQL Server and Oracle. - -**Web Board (Forum)** - Create a forum for you and your buddies to post, administer and share thoughts and ideas. - Graphics and Multimedia --------- -**Slide Show** - Make an application that shows various pictures in a slide show format. For extra complexity try adding various effects like fade in/out, star wipe and window blinds transitions. - -**Mind Mapper** - Allow the user to put down ideas and quickly brainstorm how they are related into a mind map. The goal here is speed so let the user quickly write in an idea and drag it around in a visual map to show relationships. - -**Import Picture and Save as Grayscale** - A utility that sucks the color right out of an image and saves it. You could add more including adjusting contrast, colorizing and more for added complexity. +**Slide Show** - Make an application that shows various pictures in a slide show format. *Optional: Try adding various effects like fade in/out, star wipe and window blinds transitions.* **Stream Video from Online** - Try to create your own online streaming video player. -**Mp3 Player (and Other Formats)** - A simple program for playing your favorite music files. For extra complexity see if you can add in playlists and an equalizer. - -**Bulk Picture Manipulator** - This program will take in a directory of pictures and apply a certain effect to them whether it be reducing color count, changing its format, or alter file attributes. For something extra try to see if you can also create a system to tag them. - -**CD Burning App** - Create a utility that simply burns data to a CD. - -**YouTube Downloader** - A program which can download videos to your hard drive from youtube.com. Save the files in various formats including FLV and AVI. - -**Wallpaper Manager** - Make a program which keeps track of your favorite wallpapers, changes them regularly and maybe even re-sizes them for your resolution (aka tiles one and stretches another) - -**Screen Capture Program** - Make a utility that will simply capture a frame from your web cam. For added complexity see if you can also build in emailing functionality. - -**Image Browser** - This application is used to view various image files on your computer from PNG, GIF, JPG to BMP, TIFF etc. - -**Traffic Light Application** - See if you can make your own street light application and then put it into an intersection scenario. Don’t let any cars run the lights and crash into one another! - -**MP3 to Wav Converter** - MP3 is essentially compressed wav format. See if you can translate it back into wav so that some other sound editing programs can work with the wav file itself. Keep in mind that 1 MB of MP3 is relative 10MB wav. - -**Signature Maker** - Ever seen those web board posts where someone has a generated signature made up? See if you can make a program that allows the user to specify a background, text, colors and alignment to make their own signatures or userbars. - -**Screen Saver** - Make a screensaver program that will run while your computer sits idle. To make a simple one use some standard pictures and then for added complexity try a 3D object that spins around the screen and bounces off the sides. +**Mp3 Player** - A simple program for playing your favorite music files. Add features you though are missing from your favorite music player. -**Watermarking Application** - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. +**Watermarking Application** - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. *Optional: Use threading to process multiple images simultaneously.* -**Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. For added complexity, allow the program to read in the list of commands from a file. Do a search online for “Turtle Graphics” for more information. +**Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. Do a search online for "Turtle Graphics" for more information. *Optional: Allow the program to read in the list of commands from a file.* -========================= +=============================================== Sources ======= -[Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) +[Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) \ No newline at end of file From 51bccc06fa2f0d97dae43d66cc800c5464afbc8a Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Thu, 25 Jul 2013 14:12:02 +0530 Subject: [PATCH 021/110] Categor readme files updated --- Classes/README.md | 24 ++++------------------- Databases/README.md | 18 ++++------------- Files/README.md | 28 +++++---------------------- Graphics and Multimedia/README.md | 32 ++++--------------------------- Networking/README.md | 25 ++++-------------------- Text/README.md | 20 ++++++++----------- Threading/README.md | 6 +----- Web/README.md | 28 ++++++++------------------- 8 files changed, 38 insertions(+), 143 deletions(-) diff --git a/Classes/README.md b/Classes/README.md index e65e2f1fc..c37fd9d63 100644 --- a/Classes/README.md +++ b/Classes/README.md @@ -1,17 +1,11 @@ Classes --------- -**Product Inventory Project** - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an inventory class which keeps track of various products and can sum up the inventory value. - -**Movie Store** - Manage video rentals and controls when videos are checked out, due to return, overdue fees and for added complexity create a summary of those accounts which are overdue for contact. +**Product Inventory Project** - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an *inventory* class which keeps track of various products and can sum up the inventory value. **Airline / Hotel Reservation System** - Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. -**Student Grade Book Application** - Keep track of students (with a student class that has their name, average, and scores) in a class and their grades. Assign their scores on tests and assignments to the students and figure out their average and grade for the class. For added complexity put the students on a bell curve. - -**Bank Account Manager** \- Create a class called “Account” which will be an abstract class for three other classes called “CheckingAccount”, “SavingsAccount” and “BusinessAccount”. Manage credits and debits from these accounts through an ATM style program. - -**Library Catalog** - Create a book class with a title, page count, ISBN and whether or not it is checked out or not. Manage a collection of various books and allow the user to check out books or return books. For added complexity generate a report of those books overdue and any fees. Also allow users to put books on reserve. +**Bank Account Manager** - Create a class called Account which will be an abstract class for three other classes called CheckingAccount, SavingsAccount and BusinessAccount. Manage credits and debits from these accounts through an ATM style program. **Patient / Doctor Scheduler** - Create a patient class and a doctor class. Have a doctor that can handle multiple patients and setup a scheduling program where a doctor can only handle 16 patients during an 8 hr work day. @@ -19,18 +13,8 @@ Classes **Image Gallery** - Create an image abstract class and then a class that inherits from it for each image type. Put them in a program which displays them in a gallery style format for viewing. -**Class to Handle Large Numbers** - We know that the basic data types like integer, long, double, and floats only go so far. Create a class that can manage extremely large numbers like those used in space exploration. - -**Chart Making Class / API** - Create a class, or a set of classes, that generates bar charts, pie charts, histograms, and scatter plot charts. For added complexity, make this a service where people can connect to a web server, supply information and it returns a chart image for them in gif or jpg format. - -**Shape Area and Perimeter Classes** - Create an abstract class called “Shape” and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type. - -**Matrix Class** - A class to manage matrices. Add, subtract and multiple matrices. +**Shape Area and Perimeter Classes** - Create an abstract class called Shape and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type. **Flower Shop Ordering To Go** - Create a flower shop application which deals in flower objects and use those flower objects in a bouquet object which can then be sold. Keep track of the number of objects and when you may need to order more. -**Vending Machine** - Create an application which takes money and dispenses various types of candy or other item. The user enters a number and letter sequence, like D9, and have it return an instance of “Item” which of the proper type. Example when they press D9 it will return a type of candy bar which is an instance of Mr. GoodBar. - -**Josephus Problem** - Create a program which links together various node objects and then every Nth object is removed until you have one object left. This last object is the sole survivor. Look it up on Google under “Josephus Algorithm” - -**Family Tree Creator** - Create a class called “Person” which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen. +**Family Tree Creator** - Create a class called Person which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen. \ No newline at end of file diff --git a/Databases/README.md b/Databases/README.md index 6c443e871..6ca5485da 100644 --- a/Databases/README.md +++ b/Databases/README.md @@ -5,24 +5,14 @@ Databases **Remote SQL Tool** - A utility that can execute queries on remote servers from your local computer across the Internet. It should take in a remote host, user name and password, run the query and return the results. -**Baseball / Other Card Collector** - Create an online application for keeping track of a collection of cards. Let the user enter all cards in a set, check off which ones they have, which ones they need and generate lists of cards they are looking for. For extra complexity, have it sum up sets and generate reports on how close they are of completing sets or the current value of a set. - **Report Generator** - Create a utility that generates a report based on some tables in a database. Generates a sales reports based on the order/order details tables or sums up the days current database activity. -**Database Backup Script Maker** - A program which reads a database’s objects, relationships, records and stored procedures and creates a .sql file which can then be imported into another database or kept as a backup file to rebuild the database with. - -**Event Scheduler and Calendar** - Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. For added complexity, allow the application to create reoccurrence events that reoccur every day, week, month, year etc. +**Event Scheduler and Calendar** - Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. *Optional: Allow the application to create re-occurrence events that reoccur every day, week, month, year etc.* -**Budget Tracker** - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. For added complexity allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period. +**Budget Tracker** - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. *Optional: Allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period.* -**Address Book** - Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database. For extra complexity, allow the user to connect to a website publish their address book based on specific options the user has set. +**Address Book** - Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database. **TV Show Tracker** - Got a favorite show you don’t want to miss? Don’t have a PVR or want to be able to find the show to then PVR it later? Make an application which can search various online TV Guide sites, locate the shows/times/channels and add them to a database application. The database/website then can send you email reminders that a show is about to start and which channel it will be on. -**Travel Planner System** - Make a system that allows users to put together their own little travel itinerary and keep track of the airline / hotel arrangements, points of interest, budget and schedule. - -**Entity Relationship Diagram (ERD) Creator** - A program that allows the user to put together ERD diagram and save it or have it generate some basic SQL syntax to give them a jump start. - -**Database Translation (MySQL SQL Server)** - A simple utility that reads in from one database and constructs SQL compliant with another database. Then saves that to another database. One popular transition would be to and from MySQL server for databases like SQL Server and Oracle. - -**Web Board (Forum)** - Create a forum for you and your buddies to post, administer and share thoughts and ideas. +**Travel Planner System** - Make a system that allows users to put together their own little travel itinerary and keep track of the airline / hotel arrangements, points of interest, budget and schedule. \ No newline at end of file diff --git a/Files/README.md b/Files/README.md index 789b13fb3..881155570 100644 --- a/Files/README.md +++ b/Files/README.md @@ -3,32 +3,14 @@ Files **Quiz Maker** - Make an application which takes various questions form a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes. -**Quick Launcher** - A utility program that allows the user to assign various programs to icons on a toolbar. Then by clicking the buttons they can quickly launch the programs with parameters etc. Much like Windows quick launch. +**File Explorer** - Create your own simple windows explorer program. Add feature(s) you always thought are missing from MS Windows Explorer or Mac Finder. -**File Explorer** - Create your own windows explorer program but with added features, better searching, new icons and other views. +**Sort Excel/CSV File Utility** - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. -**Sort File Records Utility** - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. +**Create Zip File Maker** - The user enters various files from different directories and the program zips them up into a zip file. *Optional: Apply actual compression to the files. Start with Huffman Algorithm.* -**Add Transactions In File and Find Averages** - Read in a file of financial transactions, group them into accounts, add up fields or find averages or apply credits and debits to each account. - -**Create Zip File Maker** - The user enters various files from different directories and maybe even another computer on the network and the program transfers them and zips them up into a zip file. For added complexity, apply actual compression to the files. - -**PDF Generator** - An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. - -**Bulk Renamer and Organizer** - This program will take a series of files and renames them with a specific filename filter entered by the user. For instance if the user enters myimage###.jpg it will rename all files with a “minimum” of three numbers like “myimage001.jpg”, “myimage145.jpg” or even “myimage1987.jpg” since 1987 has at least three numbers. +**PDF Generator** - An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. *Optional: Deploy on GAE or Heroku if possible.* **Mp3 Tagger** - Modify and add ID3v1 tags to MP3 files. See if you can also add in the album art into the MP3 file’s header as well as other ID3v2 tags. -**Log File Maker** - Make an application which logs various statistics in response to given events. This can be something that logs what an application does, what the system is doing, when something like a file changes etc. - -**Excel Spreadsheet Exporter** - Create an online application which can read in a file and create an Excel Spreadsheet to export back. This can be through CVS or other file formats. For added complexity, see if you can create formula fields as well. - -**RPG Character Stat Creator** - Make a program which will randomly create a character’s stats based on several rules set forth by the user. Have it generate a class, gender, strength/magic/dexterity points, and extra abilities or trades. Have it save it to a file which can then be printed out by a dungeon master. - -**Image Map Generator** - Image maps are those images on the web that have multiple hover points that link to different pages. Such images may include maps or splash pages. See if you can make one where the user specifies an image, clicks hotspots in the image and specify links. It will then generate the HTML code to a file that the user can then copy and paste into their website to make the image map. - -**File Copy Utility** - Create a utility that can do bulk file copying and backups of other files. - -**Code Snippet Manager** - Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. For extra practice try adding syntax highlighting based on the language. - -**Versioning Manager** - Create your own versioning system for code files. Users are forced to check out items and lock items during reading and writing so that a group of programmers are not accidentally overwriting code files on one another. +**Code Snippet Manager** - Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. *Optional: For extra practice try adding syntax highlighting based on the language.* \ No newline at end of file diff --git a/Graphics and Multimedia/README.md b/Graphics and Multimedia/README.md index fe3db4924..f7aa3ce9a 100644 --- a/Graphics and Multimedia/README.md +++ b/Graphics and Multimedia/README.md @@ -1,36 +1,12 @@ Graphics and Multimedia --------- -**Slide Show** - Make an application that shows various pictures in a slide show format. For extra complexity try adding various effects like fade in/out, star wipe and window blinds transitions. - -**Mind Mapper** - Allow the user to put down ideas and quickly brainstorm how they are related into a mind map. The goal here is speed so let the user quickly write in an idea and drag it around in a visual map to show relationships. - -**Import Picture and Save as Grayscale** - A utility that sucks the color right out of an image and saves it. You could add more including adjusting contrast, colorizing and more for added complexity. +**Slide Show** - Make an application that shows various pictures in a slide show format. *Optional: Try adding various effects like fade in/out, star wipe and window blinds transitions.* **Stream Video from Online** - Try to create your own online streaming video player. -**Mp3 Player (and Other Formats)** - A simple program for playing your favorite music files. For extra complexity see if you can add in playlists and an equalizer. - -**Bulk Picture Manipulator** - This program will take in a directory of pictures and apply a certain effect to them whether it be reducing color count, changing its format, or alter file attributes. For something extra try to see if you can also create a system to tag them. - -**CD Burning App** - Create a utility that simply burns data to a CD. - -**YouTube Downloader** - A program which can download videos to your hard drive from youtube.com. Save the files in various formats including FLV and AVI. - -**Wallpaper Manager** - Make a program which keeps track of your favorite wallpapers, changes them regularly and maybe even re-sizes them for your resolution (aka tiles one and stretches another) - -**Screen Capture Program** - Make a utility that will simply capture a frame from your web cam. For added complexity see if you can also build in emailing functionality. - -**Image Browser** - This application is used to view various image files on your computer from PNG, GIF, JPG to BMP, TIFF etc. - -**Traffic Light Application** - See if you can make your own street light application and then put it into an intersection scenario. Don’t let any cars run the lights and crash into one another! - -**MP3 to Wav Converter** - MP3 is essentially compressed wav format. See if you can translate it back into wav so that some other sound editing programs can work with the wav file itself. Keep in mind that 1 MB of MP3 is relative 10MB wav. - -**Signature Maker** - Ever seen those web board posts where someone has a generated signature made up? See if you can make a program that allows the user to specify a background, text, colors and alignment to make their own signatures or userbars. - -**Screen Saver** - Make a screensaver program that will run while your computer sits idle. To make a simple one use some standard pictures and then for added complexity try a 3D object that spins around the screen and bounces off the sides. +**Mp3 Player** - A simple program for playing your favorite music files. Add features you though are missing from your favorite music player. -**Watermarking Application** - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. +**Watermarking Application** - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. *Optional: Use threading to process multiple images simultaneously.* -**Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. For added complexity, allow the program to read in the list of commands from a file. Do a search online for “Turtle Graphics” for more information. +**Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. Do a search online for "Turtle Graphics" for more information. *Optional: Allow the program to read in the list of commands from a file.* \ No newline at end of file diff --git a/Networking/README.md b/Networking/README.md index 2d56c9224..d222d7db4 100644 --- a/Networking/README.md +++ b/Networking/README.md @@ -3,31 +3,14 @@ Networking **FTP Program** - A file transfer program which can transfer files back and forth from a remote web sever. -**Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. There are various clocks across the world. Do a search for a list of them. - -**Chat Application (IRC or MSN Style)** - Create a chat application that can create simple chat rooms like on Internet Relay Chat (IRC) or a more direct chatting style like MSN. For added complexity, create your own protocol to facilitate this chatting. - -**Fetch Current Weather** - Get the current weather for a given zip/postal code. - -**P2P File Sharing App** - Create a program like LimeWire, FrostWire, Bearshare, or a torrent style application. +**Bandwidth Monitor** - A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it. **Port Scanner** - Enter an IP address and a port range where the program will then attempt to find open ports on the given computer by connecting to each of them. On any successful connections mark the port as open. -**Mail Checker (POP3 / IMAP)** - The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email on several accounts at a given interval. +**Mail Checker (POP3 / IMAP)** - The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email at a given interval. -**Packet Sniffer** - A utility program that will read packets coming in and out of the machine along with related information like destination and payload size. - -**Country from IP Lookup** - Enter an IP address and find the country that IP is registered in. +**Country from IP Lookup** - Enter an IP address and find the country that IP is registered in. *Optional: Find the Ip automatically.* **Whois Search Tool** - Enter an IP or host address and have it look it up through whois and return the results to you. -**Zip / Postal Code Lookup** - Enter a zip or postal code and have it return which city/cities that are in that zip code. - -**Remote Login** - Create a remote desktop style application which can see and control the remote computer (given you have permissions). It may require the use of your own private network and a second computer to test with. - -**Site Checker with Time Scheduling** - An application that attempts to connect to a website or server every so many minutes or a given time and check if it is up. If it is down, it will notify you by email or by posting a notice on screen. - -**Small Web Server** - A simple web server that can serve HTML files that contain Javascript and other forms of non-code executing code. Added complexity would be to try and implement streaming video, create a server-side language, or serve up other stream types. - -**Web Bot** - An automated program which carries out tasks on the web including checking websites, page scraping, and summarization of data or web posting. - +**Site Checker with Time Scheduling** - An application that attempts to connect to a website or server every so many minutes or a given time and check if it is up. If it is down, it will notify you by email or by posting a notice on screen. \ No newline at end of file diff --git a/Text/README.md b/Text/README.md index c75f64b88..9cfb18abb 100644 --- a/Text/README.md +++ b/Text/README.md @@ -11,26 +11,22 @@ Text **Count Words in a String** - Counts the number of individual words in a string. For added complexity read these strings in from a text file and generate a summary. -**Text Editor** - Notepad style application that can open, edit, and save text documents. Add syntax highlighting and other features. +**Text Editor** - Notepad style application that can open, edit, and save text documents. *Optional: Add syntax highlighting and other features.* -**RSS Feed Creator** - A program which can read in text from other sources and put it in RSS or Atom news format for syndication. +**RSS Feed Creator** - Given a link to RSS/Atom Feed, get all posts and display them. -**Post it Notes Program** - A program where you can add text reminders and post them. You can have the program also add popup reminders. +**Post it Notes Program** - A program where you can add text reminders and post them. *Optional: You can have the program also add popup reminders.* -**Quote Tracker (market symbols etc)** - A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked and the program can show green up and red down arrows to show which direction the stock value has moved. +**Quote Tracker (market symbols etc)** - A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked. For CLI, show whether the stock has moved up or down. *Optional: If GUI, the program can show green up and red down arrows to show which direction the stock value has moved.* -**Guestbook / Journal** - A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. - -**News Ticker and Game Scores** - A program which sits on your desktop and aggregates news and game scores from various sources on the net. It then scrolls them across the screen on regular intervals. +**Guestbook / Journal** - A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. *Optional: Deploy it on Google App Engine or Heroku or any other PaaS (if possible, of course).* **Fortune Teller (Horoscope)** - A program that checks your horoscope on various astrology sites and puts them together for you each day. **Vigenere / Vernam / Ceasar Ciphers** - Functions for encrypting and decrypting data messages. Then send them to a friend. -**Random Gift Suggestions** - Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one and perhaps places you can get it. - -**Text to HTML Generator** - Converts text files into web HTML files and stylizes them. Great for making online documentation of standard text documentation. +**Random Gift Suggestions** - Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one. *Optional: Suggest places you can get it (link to Amazon page?).* -**CD Key Generator** - Generates a unique key for your applications to use based on some arbitrary algorithm that you can specify. Great for software developers looking to make shareware that can be activated. +**Markdown to HTML Converter** - Converts Markdown formatted text into HTML files. Implement basic tags like `p`, `strong`, `em` etc. *Optional: Implement all tags from [Markdown Syntax Docs](daringfireball.net/projects/markdown/syntax).* -**Regex Query Tool** - A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular exp****ression against the source text and return any matches or flag errors in the regular exp****ression. +**Regex Query Tool** - A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular expression against the source text and return any matches or flag errors in the regular expression. \ No newline at end of file diff --git a/Threading/README.md b/Threading/README.md index 3caaec781..70550fd4e 100644 --- a/Threading/README.md +++ b/Threading/README.md @@ -3,8 +3,4 @@ Threading **Create A Progress Bar for Downloads** - Create a progress bar for applications that can keep track of a download in progress. The progress bar will be on a separate thread and will communicate with the main thread using delegates. -**Download Manager** - Allow your program to download various files and each one is downloading in the background on a separate thread. The main thread will keep track of the other thread’s progress and notify the user when downloads are completed. - -**Chat Application (remoting style)** - Create a chat application which allows you to connect directly to another computer by their IP through the use of remoting and allow your “server” application handle multiple incoming connections. - -**Bulk Thumbnail Creator** - Picture processing can take a bit of time for some transformations. Especially if the image is large. Create an image program which can take hundreds of images and converts them to a specified size in the background thread while you do other things. For added complexity, have one thread handling re-sizing, have another bulk renaming of thumbnails etc. +**Bulk Thumbnail Creator** - Picture processing can take a bit of time for some transformations. Especially if the image is large. Create an image program which can take hundreds of images and converts them to a specified size in the background thread while you do other things. For added complexity, have one thread handling re-sizing, have another bulk renaming of thumbnails etc. \ No newline at end of file diff --git a/Web/README.md b/Web/README.md index 312f0f323..82708b573 100644 --- a/Web/README.md +++ b/Web/README.md @@ -1,34 +1,22 @@ Web --------- -**WYSIWG (What you see is what you get) Editor** - Create an editor online which allows people to move around elements, create tables, write text, set colors etc for web pages without having to know HTML. Think Dreamweaver or FrontPage but for online sites. If you need an example check out the DIC page used to create a post. +**Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. *Optional: Organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file.* **Web Browser with Tabs** - Create a small web browser that allows you to navigate the web and contains tabs which can be used to navigate to multiple web pages at once. For simplicity don’t worry about executing Javascript or other client side code. -**Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. For added complexity, organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file. +**Online White Board** - Create an application which allows you to draw pictures, write notes and use various colors to flesh out ideas for projects. *Optional: Add feature to invite friends to collaborate on a white board online.* -**File Downloader** - An application which can download various objects on a page including video streams or all files on a page. Great for pages with a lot of download links. +**Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. Use any one of the atomic clocks returned by a simple Google search. -**Telnet Application** - Create an application which can telnet into servers across the internet and run basic commands. - -**Online White Board** - Create an application which allows you and friends to collaborate on a white board online. Draw pictures, write notes and use various colors to flesh out ideas for projects. For added complexity try building in picture tubes. - -**Bandwidth Monitor** - A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it. - -**Bookmark Collector and Sorter** - An application that you can put online for people to upload bookmarks to, have it sort them, remove duplicates and export the entire list as a Firefox/IE/Safari bookmark file. For added complexity see if you can group the bookmark items into various folders. - -**Password Safe** - A program which keeps track of passwords for sites or applications and encrypts them with a key so that no one can read them. - -**Media Player Widget for iGoogle** - Create an iGoogle gadget which can play various song lists from your computer as well as share one song daily. Perhaps let people look up which songs you have listened to lately. - -**Text Based Game Like Utopia** - Create a simple text based RPG like Utopia where you can create a civilization, gather resources, forge alliances, cast spells and more on a turn based system. See if you can dominate the kingdom. +**Fetch Current Weather** - Get the current weather for a given zip/postal code. *Optional: Try locating the user automatically.* **Scheduled Auto Login and Action** - Make an application which logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking web mail, posting regular content, or getting info for other applications and saving it to your computer. -**E-Card Generator** - Make a site that allows people to generate their own little e-cards and send them to other people. Can use flash or not. Use a picture library and perhaps insightful mottos or quotes. +**E-Card Generator** - Make a site that allows people to generate their own little e-cards and send them to other people. Do not use Flash. Use a picture library and perhaps insightful mottos or quotes. -**Content Management System** - Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small and allow for the addition of modules/addons later. +**Content Management System** - Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small. *Optional: Allow for the addition of modules/addons.* -**Template Maker** - Make a site or application which allows the user to enter in various color codes, elements, dimensions and constructs a template file for a particular application like PHPBB, Invision Board, MySpace, Bebo, etc. +**Web Board (Forum)** - Create a forum for you and your buddies to post, administer and share thoughts and ideas. -**CAPTCHA Maker** - Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. If you use PHP, take a look at the image functions of GD. +**CAPTCHA Maker** - Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. \ No newline at end of file From 41a87a14c6ada85cfdc3c4c3af81833ef9c1920c Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Thu, 25 Jul 2013 14:27:23 +0530 Subject: [PATCH 022/110] Added some problems to Numbers --- Numbers/README.md | 8 ++++++++ README-scratch.md | 8 ++++++++ README.md | 9 +++++++++ 3 files changed, 25 insertions(+) diff --git a/Numbers/README.md b/Numbers/README.md index b70dd6a39..ce820a66d 100644 --- a/Numbers/README.md +++ b/Numbers/README.md @@ -30,3 +30,11 @@ Numbers **Tax Calculator** - Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. **Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. + +**Factorial Finder** - The Factorial of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, ...1 and the factorial of zero, 0, is defined as being 1. Solve this using both loops and recursion. + +**Complex Number Algebra** - Show addition, multiplication, negation, and inversion of complex numbers in separate functions. (Subtraction and division operations can be made with pairs of these operations.) Print the results for each operation tested. + +**Happy Numbers** - A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers. Display an example of your output here. Find first 8 happy numbers. + +**Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* \ No newline at end of file diff --git a/README-scratch.md b/README-scratch.md index c3f24ff03..340dbd411 100644 --- a/README-scratch.md +++ b/README-scratch.md @@ -34,6 +34,14 @@ Numbers **Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. +**Factorial Finder** - The Factorial of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, ...1 and the factorial of zero, 0, is defined as being 1. Solve this using both loops and recursion. + +**Complex Number Algebra** - Show addition, multiplication, negation, and inversion of complex numbers in separate functions. (Subtraction and division operations can be made with pairs of these operations.) Print the results for each operation tested. + +**Happy Numbers** - A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers. Display an example of your output here. Find first 8 happy numbers. + +**Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* + Text --------- diff --git a/README.md b/README.md index 15367c4af..e6ff54517 100644 --- a/README.md +++ b/README.md @@ -63,6 +63,14 @@ Numbers **Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. +**Factorial Finder** - The Factorial of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, ...1 and the factorial of zero, 0, is defined as being 1. Solve this using both loops and recursion. + +**Complex Number Algebra** - Show addition, multiplication, negation, and inversion of complex numbers in separate functions. (Subtraction and division operations can be made with pairs of these operations.) Print the results for each operation tested. + +**Happy Numbers** - A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers. Display an example of your output here. Find first 8 happy numbers. + +**Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* + Text --------- @@ -219,3 +227,4 @@ Sources ======= [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) +[Rosetta Code](http://rosettacode.org/) From 2231272e1ad19ad694db70385811f260a5e2a0df Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Thu, 25 Jul 2013 16:18:54 +0530 Subject: [PATCH 023/110] Made it to top monthly list! Whooo --- .../top-languages-python-2013-07-25.png | Bin 0 -> 238584 bytes RECOGNITION/top5-monthly-2013-07-25.png | Bin 0 -> 80168 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 RECOGNITION/top-languages-python-2013-07-25.png create mode 100644 RECOGNITION/top5-monthly-2013-07-25.png diff --git a/RECOGNITION/top-languages-python-2013-07-25.png b/RECOGNITION/top-languages-python-2013-07-25.png new file mode 100644 index 0000000000000000000000000000000000000000..a33d5ab8b477e5972c3b873f483b16aafdf6370e GIT binary patch literal 238584 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

SBLzXJ(Pl!)0 zB9k|yH1ydcc8P%vG5{0QdwwDo{X<2}*akf8y;Cv}uz4T^F565iOy2{vMZKI47TdaA zz?0$^LuTK0@hRt`NPs?du>`;r@vm=0CRB0!k5}U@bXK~f%d*LMK8!p4g)_a<$bl{V z=tgQ5^qCasLS6wRdkh52?A&_n0T9Ba3S)g?Y_xs`d^+MAL@e5Qn5NM(ePUnAk+mw{bd;4EWbP zs(SEQt|DHmejp9$j_z0>r6K@41^j1yRv6{j;r=!T09!+T!+`xjKwAvi@(zj~h%{1F z#&=lo16g}XSC65&01CZNWcOpAUliCXx}Vj|Q7s5e3RQ_E{Insn(F5$ZsEXSR+3XnJ zQx$b4LN~Xzq6bJmu&x+fLes=zDE!)f?|*({DAuA6{191|L8Ckl2>v3Yr}`dH4DuWt zCeyr0ljsGh{Q9q+bl(3FIF=R+Vv`O~^AEBO5c|{tXlOpeJf^C~SOmwb!grhg7vpUV zzJI#_ND}C>{{_B&_|+1irx3xQN*lkGe=wc@UX=WXxUq))!2f;ff8H{UcF#Ms?Wk*W z{D0lRi}nFQk8HEmejo+@w`Zt);2o^El$8I<8UFd``wJq(-y8v;A}!(Td7w6=RqvIg zh?ClrBi@T2b%9kCmR#B}UUhz<_|GH60-vczT>V3@Tjw9(?SHy>bT9vP#Q873a(~VD z9${dqJmm*8t$1+rvGBbPRYu)&`yYw#0}=E4k3Qo*$aTBTByG6=r;q;4h)82Rd@ZWr zpiasE^)3&&)o-ov^y-_Azq;@LehT>ggH|~0OW^;hn@9Ssm$;nmdMDgn9Ib&e@L3-O zfv-h8S?x$SO3nV$m0tV+vlRJly~J{%xi%>_k;?(d!!=M#t$`3gLQDh(=s*$ERyvBlN1D4C0?dZ|j)4=S552kmDTg&?l&@1r37F+DitB7Cd zgNE3}DagbJ$*v-~#%13R_YCzO`P{e#9v_pCyu@X3BZmusL*0j+KkE?NvRA$pi&yof zNP>|3Gorm@1OWc*r2vR31G_CIP#Ix;G5B5V@|t@CuS}n72(8edJ_f`Ij~aN&$TTte zAR29Lv1eSI1LYPB{?3v*!q@L?7un%BrP3NopG5STBiR!OHJtyPn+cH1g0uV;V9}&P zGe-0(jA$L1GF1=+#3swg`$hQgPskf!IJ96uLKa2X@f4dy-Q0M9lucSiCA)8LexAtL z*?C}QhA!!6u-|*e@3U-(41oIl(pu{Z=yX3)K)cGM9q_F*g<-xWz0wVvC;Xi+g4gp_ zxM%a>A{^w8l6n1u`GhB=JSgFl&$H2H=^%@B!+YmQnGidC6x7AgRWr)FZ|kz1rCk;O zojZ9zC*b(6r$NaNHK{Vi6WCFKyhh0zI+|Nq3EJ7&VRt^Jgn3*XhysO4-{%J?Wnkyh zXh`yD-&SVUi(eJh{y>PW7I%=s1KM_km6nr+=1!b*PR$Pw|DKET_UP(bwnXtxq(8>; zjw*rOg`n?pD3PRX)Wf%axKL9Ew2e(t!w;C4}Tu;VJY#r@uzO33-g=T#jFJbr-pcr4>Pj1TU&Msou zSOj$P`R&qvEM(n)&$w5Ojh@{rBo^l@Ylmcz=@qe<2$CLeSVUCPatiGo|NU^#P~tyIZl^ zrDpK@tKj)KCq?yiKCZu?Kfw1CM#j1r9vSfkF#DAudJxJ`4cKD?0Y7v~pl5EaH$Gr;QdPlz ztN^m9O!X5<%+|=LeRFhcQKIlch@F}iI`YB}H>PqMCAo(YpXW2V6AKQnu!rVW9jE!* zWzxZkYN|Ll`2;OBPYmZv-MuFm+ z8T%(gZ(_@e2x(Bs%j+=d?tzm@V$!Zq&q&q1%X~F2vN-<4yvx<;xsf8;8u#cPm>|LW z5qMIxjpyY8&&h#&EP$p!aLt17!_oBc0E6w;h2{B@ ziQ>Z7BP<<3iMQ2##?2FR=aM9~hUaR6@!R6fx9hB^X3kw9F1}$N5c4B^7(c zn?k|sT-w{jkuUH}ZzrjI=;Sixu69{G!n23J1$gmKyH*!`j`JH%bL+Np~CS4O}|tA%>} z5-1T64HqL{h88GlXnL-@F;^PI4!3=tBP;$?oZIo-d5e5{bkcWfXhwZ`rs9Jn2nrUM z46VXtYE^F+t23W0&K=`42*u`JR&9&+-Z2za_Iz4G@#)wW)ty!+mZYI`!+NgUA$>2r zp`{!I3A^1T7@2eCdR5?DxQ~ai@RixApmVC^>L6Kncuq4Qx6i0Kulu=e!dQrtg9XZ| zk}n7${$1@pNvT^|arVc@T-vdC+qvdZFZd+{uc(WSJKj+Ef^-QOp1CA`^pIE?-rh6* zZof^SFfl3bGWboR^zAB6WD$>1b3m`UDC6)>DwyMm5)Rhq0bL|8OOQg&mmFQH3PTO9 zpbx{X<=boA;eYZsuQWi^NEz_TD%=r1`JkTfrGFZ9iRyRrr}DEH^tI-xlwvFc$7jqh zcSQwB6Vn_DhJ)h9!2ZNtGa(utH+H`KsoFvGR3M*WiLwExeO$5rXxjgYdyKLSh;v!)YP4v~YXp`+wYpUJ3lUdzsE>G;!;wrO;vm`J zT*g>r{dyn+^JFAR)JFlrGPkcghFm~n`vZkr8W_;veUgQPvn6DWaNUM;j+kT*1UQ#V z#)YW6Fsi*ORX?n*-t?8N(6yv?4~QGtEZLz^Z+33mfen_{tkRxBTBVf|2e9{5nZQ|c z5q#WQTE{Zem@zTNnpbW!D1lyAS~j*?nmLx`G#ePQf-@7yG9?eS#6ygrlGtaR8f~5X zx}z`$J4DlI>JXY{B^xMm@LUvCRNQ`KUOQ_4rNlzZeww!Ca^CONGG!V5`$@~omM8En zPxj8WLXde|9m<34868{Mo#$ilBDEcW;#VPn5y=CXDA4_`oniq1Ed`X6VpZR)7wp(K z1Ejw{Sy$~n-zx3hyALS#+16RT{WH_P%;bmOh#xo$yIdO9K4#@MD(^&x*loSQi&;h%&Dl= z7X0iWB@jP7wx`I9k_H>@ar$~%g*R4Cw@>Bm>)G*f@2%O2r#^03(pOT1&EwxJg!YPC zu(vnC=kmN7H@$ZYafCN0h*`aS`lKODdroZh)ms|T$8CllD|;#yICOOhO?WdLDzmCiE6F;_pV7JAmgbiA z{T+2>4g1-f#}i%ej4M3__v$##I=0GOw&yNgyv`(;Oy=KQ2v}~65O(&@m(?r%GY3*dNu8~KWnjk)<&cRv`J|S^(+KzOX zU%YZhYLIfS4qRsBHyt$F0bob-oy5@fNM9q@$c&&LMrlx=I(w>WVT-PBYR436s**)z zrJH(kfTF&Po302IGSnQz?1bI!AR+22{t*L$bfHa~)J|rj4dCjw+DAmcn{Nof!_ zoU1xM&GHxFa-7ffmHkYgY3d?5sE?i2Q)V6oVPI9tVguArU zUD^kx$ka-^4y#Cjyqlk@sjH8^>|G`P6t4%D@oB9m;>Z5?<(6&-7rNNNFPcH{!O72` zF53?Tl379BMLNq$Hc&z)N&+q${tCCtKvL9)Ws`*2*g zmum?&Vco<;bxHsaXH(W0TYE89861<`V-Ik1`g&*(s#;+nUUYVn*0vl0#At>In*K5L znLi{f1QE7WI5K96^aF`t4@KoM*bMPk3w202lMx3lBvYfdP%ROwRFk=4|2Y_34(7)k&?5G%607 z8W=GGJl^*O{&g_5+N<|(NOp|G0~y~52z1Kaee>`_+?@+dVfemX?CLbf%qbLPJ2TEj z<6^WDr$ZbG(h~Fqs&GBPX1@<8^=Q}{_{PcbHM{deQIvd#5YX80&YqNNhd5);7*V#@1 zOiS8Z1i*2~CB9}f`z=d3IIvw_U7@qx0yvJSVH~$piD(Kj@sz!~nF2=?h!r(`27VyGi(`ii@34zIPU(o( zY(I|}25+llD5=Z8P67%|CUCOo(uWTztI8bgPlpyZq=RoT;U>B?vL<>%=1{Rns&p3H zGet{t{GMm)4n;Xr^wrBW?$cHWUgB4TNTT=kHU|wyvBw|mbN-fM1IXWNt$3F_2>iei__N?zboK}@fVEa2$PgxUU>(}P?#oS z)r*T$nY|k0t_g;0f>9$Vx8YR$orzb8hcE zyp+T})C{KoW{GqqG?MnI8)1M1qS;`1<4surJ=U@Gap1l9o$V}QAy_+s1t-=O} zsqhvB6%2pjGu~jrMG}GiDxRTP+JnIxQ=$169MGKY@|`8IWi2W&x>kSSm`?G=1jaFW z&bQa>M=^ta1V7UE^d9yo>vG^=%0r>&)Uu8d2zD+mF6dK2TS;#K_&q1YRisIOZ?;Y} zA%cM6(p(4wBDw&x-0M!2Kz3UE2AG&0H1jK<(5Qd*S zwxtTK`UGJx3MgG_8~O*<0~AcCCE?_UcFktRzE%qJ!W`X(Jl_cX@CN*+av_bcfoB*}j`!`oo!k4LLkR z)8<#lg1my)LQLkDNCJL8WO+Z*PHIkv#>J}pS6S2uZ(Cx>1UUiwdUhsm-+z%4VW8R+ z;56iHnGhMO$Ds9)vJ3GI4)vejfSEu-uaV+C1Wt0#UDzuTTsQY*cwDrgZofxM=t&I32d}|6$%^!^LR-U8YluW}X*||9B3sbg|IWgPtheNz zgz#C9e7i#Xavp{lQJEGfx0W7y8j?hR@e1C|xW2PQ<3Fe*V5I?Iyj0acyf~+skJkDL z%`v$jw)4SB|4(55{{;4b=JWp#b^rerfxY>~V!Gq)x7UGfB%2wnI!p&1iy%$=wazst z;rtQofa|Wj>(;Q6PnwuLlFC;A7q>-lM1^G3MOWBdAxfp>79#Fd@AEw8dxPaSw_s?Ga&<2SD6cQ#8iblQyXYJFNqm}^(@)H>|5R0o z{;9iJ$z`KF5b#+1y10?%QcF4#jeYIT3l~7LzC|eCAa;jU#SRbqEe``QbE z9tmL8IT6)q02rha@_DdrL}9x$QV?Swzs3t&%w9vD zADnCO%@HN84J?r|zXl9LI1;Awf`PC713{0bTEMR^run4QC8;%^w~nBRPxy-_sw_qz zLNQs0!dgLFgZc@=`pWV;K&YMJY3=>{ASu)L#h66Zv??c%w+xYzbo_QQBq6R!{&-#7 zbO*Ihvf!H8P5J~}b!Qa5aAv>Le|IxScs7sja6{N0nl1PSt>u@*tU&C&KS2BDGw=+} zfHk0GXI-|MtoV(3JJnAf$leWh6fdC8PsYb+ixLDRHRMz-^fjX8wK$uGPKUK!m;}C! z;*&w`RJ08WEb8-wZ=2rFtr;k}!rgxXiyDSRwLpe)sB35le|NA;xEPE$n~0*p9Ynt~ zRV1Mv1U=Fhs~hJyild>f5yDlJ2Vrsj-E)vi%L4(`5es5_h9%)FbBE1R(aKARjkFY? zS^W~RKaSj;kY686$@G}OMF-jZDww=F(A{+AoETY3e~GO|r#x&5u~@agO^0}xY(Dii zJ=~)4^$#pIy3!c+iW!{7m~XI)OB;u)-fift1oDSZ0kqi`IfjAf+QMg`GR_xu6{SHQfMdpsqA9kosW%&gtsnAq zl+x5`T>8cKY?M-@0Aus}p*yN^*1|w{&#*t8rKoRtBXSL(ch8e z(`?q+`ENx9V1ROfV2i~~F~u0bD)-X9a5;47r4~9&FFFZ#1-UZ_56}8OJ7waJ> zfcZj$WHb&9b9uJ)mLAOX(}6hDNl0SF9B=OdaIl28zydfXLTx1RPi zc=VGOc(dG{hGb}_?YjP)@jp2Vn+_$SDRSp2GEXF^ zF2ApeWlZ@H`h%ir7US2qGmb$in{g%MxnCAD&uK-F8M>!C64dYVe4h$__KaR9fi*md zsve8q%yI?XSagmm2$%Xgc>Vd__!f1pFqdB1;^D9d3XA)`QfRfD2sxYYd&?``p|`T3 zb3kIT^j8Z|lGtrdKSQ!@`T&x%N=?G>ATjzR%G1>pr3W!eP{bR(lbD#Sfp*PjbLk^%|ZCToO(5AK% zJrhbF3qQERmFxzb*-7NUbhzN=z#S5+!Ije*Q`EUcG8ew)jT*&6kwm|-Ab5Z~_i;yO z$b2{ct(Tx4z3>YuW{-lIPZk;kAjM;_2)`jyEaB>$;2^A(Og2YUtmt3-cUpZL9LtJo zPHLA>ro=x!2tsK`vra9?P#bA(Tl{uZgi^csZ3oMEm30wL%3nZ#SNB~n%oe#y*!>zs(N!10pOJ_knufiU?1@k=x9>bA*4>xH;r`g&b<09tK_!U(@KNc0 zuI4aRbD>Y-2yCoxVtGlrvpFr$T<=LuYOfPiHW?wa#$A|&=7T}c=JBxzM5NvUiN8%?>0&xSqzR11a*uZTh z>$Taxx%;6APuo09hSC_C?1;jp=`Od7i&A4A_+%xVnpQ)N&8c%EvVzZ0$mN4i(^hL) zpftarKj57Q`z6i(m2aFNB5~_@0P7A6D}hDcaE|+ui!($mR`)1!6eZ4!rMgDH&qNDV z<1-2vX_f*mmGst^jjB4s8D6C}dEdBL%sc-0tBgq4TjGuPxCpRs{3un-(A68pHEnjU}raLWe^@w z(6yW3Go%pmu)CR}v$|iO<){}3#D0!PrQkw9yz)MB)CWs zs0Yt(t#Ps}_R$(D$C-j#zC0*fV)B^RY=fZWvV1t$AzG^=Oy`RY^l~~O$A)n%x~@9V zjWOgTfkG5r{!}9O>!Y>(hK9Lx{?Ih)tb3OG=CT~os<^s|P5tPjgJn7gWA$WVIlBI` z&QenQh~?{2%BYPaUrJO94jcNIbVu%bGt@krb=5$6)&O259qz~eH4DfH zGOF8f`CCK9@F>9wiwXW8^OO(W)!ime&gbjK<}Z9mxEWT3bZ0o=15x^Jo-hPK0t#B$ zZZA4GFd(vi#uQvmZ04i(pT&5SMYxPnAj}i3WnwcvGh*XZS<;;tP{Ib4A+wm3k&&(R z7q}25dZFKxkM!hIS@5Tk@9<0|tv+Z`S?>H_tPamdYfn+b^Q5*7mK7f|mZ%1+P0u2(PLB}fPH#~0C zq5Pa$y~vSGo4e%meZ7FRBYbZCp=8-fU7&Jh z>9a+-+`VRe+&hGRLU))Yx8WkK)wXeKLzZ`UNiQ7x+s0_#R2|qB11&Qy;$T0LyS~`8 z3#=S(2GyK)l;ISp>$7LQ;(In3aT_toCG>y8|h80izv8c?? zm{fy^tL3^~=s%qwVL%RvsuPF>VkH2DAi2k9FX2PN22JkjQ4JGw5BQq13Pg)9!P7e$ zqzoiSa&mUsJAqKff@Wx0iDDmyVh!Rqh;QZ+psHkcO_FW!q4{d2;j?U);!;G){gK&! z_e=8Rq*FDp9))%%NmPjP4hOol|HpUTQa;_w3hsxWR9ETr!!uUsC+Yyx6m{o~PWc z$_A5CBU2W05vD;M^`gqM743&Mj!aE6FY=so?j zh*t^ur(GwVL-k_SJ)Gu@vF-3ehdhn;XEc|uvVJ&3(EZHLT#sZKBuf%xLkrR|b;B%h z?%=@2;KJ&Sd-rmT&P3D~WOmsmS=KO`9?A3W@+x-prI0lcAG?FHpcfx`%^vT4E|a;! z^T!Vw62L9il_f^oAh#c7Y=275fOJJCHw*@yg#9u&3$m>PqH}DaMl9HSPGBM9OAF~| zKPFF8eLV!gvGlgdz4q(~lv=m;;ykT+3hZ1Sxa$X_6To(`C#^>`t8yUJNGL#wjm9OI z+&oAB10h-C2$TC}kx+nnri5fPDRUx5ogl$K+{`#{XG}1lJeevN~Hx${kmxC`Vi58IQW8kDJ#QyLon(_N( zmMqqQ2jC4s^j%#N;6Xuw0!u?IE2(sMq5ZtB zh~6?AJ7|g$zA%{Ikwb;R-(j?iHDwI$tdIoT3cw$ji|fnozdM5u0j=;xQrlbxF+!0mnx*nkiNE) z#`_Zf`yZmYr$dL8>n~n?2sUMt9BlSY;C9we3=$4F=MlEX|GI~YWpD#5r$O{{mUq`o+*}3y zFgtuj|Fdeu+3u+qPRB|y3K8PDtZ>5ndA?00g= z2?BZ_bc9Iag%N5x1L5S{K|K&cv6r(&oZ^G}%4yIDH+AztO{(Yp(H168I8etL$pCPpFSd@4wC~n@HXJZ_k$L|69TN*tX3lCLirZ{ks{kvg3?uc=wOgk8q}$0{TMy{ zchaXpRUPQ}p^=bJ))v+2xh(}~$5LtmT$PNT7jfU2&-oiEt0}d?tCOMhSw6x!CU3w|vd=^1-#SN6|u9<!F&Js|(y+OyH}UelAlf7p%7uoy--?K|`AF62w+9NKXJ8iMtTq#%m6P(&lq zE0fiQ(!Cm7=qe;+O=H5pqUFl6rQ{4@uh}sP8xW)Mi2Vk{?uVJQ@a^L>{{(RCbBWvtDT}s3S=$Q)V2<}&DhdP8TiMe*0pKZ^85unZc}^v+ zmn(4xW}T$XF!K?oiw%)ZqL(aJ(o8I`x=+UI44&EV&b;*K43AfGXI^;wVep%w6fc+H zU!w@=5MXb)d<~pE11P+v1HM=~CqK=J!*>qU^(Py-RMjD2TVd&>kI_(`0u@J`L_CBs z_>9q7N)zh5v)t||nimHK`)$bXxaDulH&KG=6O8}4A8>IGe&1UgB~yeT`nnG3&jA0{ zCeRqV&OCiPl=(82DEwbE2be!E0U4PJ(1%_-r{jP=vxctw!Sn;Lr_ETG4Fs7P6H}JH z_`4ClA8a(gRkG}Uf8x{cDD}@P5Z&(;uhV^)G5^K8f1_l;Yo|BRBET)hL0JF#$o!+N z1cK221(7fS#2J~G^uW+T?P#f2~~p-f;!+;Q>H;>-b?jWv;61^F(@b1IM03$5Mf)hZ z|Jgy-<=EO$k0uJV4dwaMQI`nAr-RriNU&C$dR(00bzWa+X}bB!2+?_OwNQ93=L`Uo z9EPKWXrRwAi0>u!r?T~F%~)_SkFO7qr}j&qc?5ginja@`eh?lX6Ip5x^muKE%>{?v z@hdem^ObH#sLJFVtgJT@dY)I*9V?a^AnGZjXo(RqRyq3p;APutAnhsZwRe<#SWC8 zQ3>SG_%WjU7v5o@gf(f(1Y9Na^!>+3BP0z<|HE|Vl4AO-*JS~Uq?J;MF1MM(XfP@N zlWXbCPoo4Mf2t@MO-*FYZ$+t?#OGVaK&1~Gf!i`u?NW8a`=x0P(c|5%tq*2qbbvEl zvhE*exQFrbpe_cUTWZ?5)RjE9R{6TSw5^aEXycTeoL6$0ea(YQiR{+Pbn?$U4|F#f z-8P?|Q+qpVUs(*EOeUkefE}>PQKF^Qfe(BqfYR#Y!PySmEUbxY3OID6XaUp_z;QP2 zoh^+tqP(-}p*XngsTt&Td>)(R09Q~uuP%>Z^^N~p-298b6?zttG~|h95lnr~a{+H+ z`LJZq+xo|~6%F_jAX=20Sbhfv9>{Zh@`?YN7_yGFnW`;T3-!w?SJccLybr^PuSdQjRr9^4_#!n@V@aBrp@72 z%9Kd2%#j2P+7W76XBAmiw;V_N1!PL|;ZkO8a{au}xZzCgwr6$Ft)AqSE^zL9*-_#<1dhv;`51te#G>Zrz z3oP`wsBv6xx(nc3AW?qJt(GbE)l+P(x5+4~13`*Ef+APeu|_;8_<-Lw8}&ln6|;O_ zK?&gi?2CiIrzxmJ@H!W-CQgu*-ee+4j?`crZ130M2zsfr(OpQm3=|5R$D@QjeG8OI7?e5(lmz} z7q7L|UHjD4Eq9Hu8LTTiGnS($B$@>dV~_PC~hMdF}R*Z2swj_6!kpzjbDurb*{wngr=wzx5sT zv`WVGz@%4vrmGy^QD+(J>a5Sw4)^cB=(qLAEvMeg-)pKM+vD;Aw1uYyBnTz%SDJJc z_ryx#Fb%tYE&ZDAFufYAm*8I13~77$9&;jvvK;U(2LQt}*R^-4rJXa-WifMPI(N_o zJT>xeTcP`jO@h;@YpvD3gnZyk5SDm+NRroMylup#G(-k|0|PE+si2~?zRLZfzBLoZ|AQVw_^q@e_UZxfx|w>z<<2(}t8<1N}_AX9!4C#m(5;WYGL z!r>N9m_Pnhej}blZ%>PMq2^ncNXO4=(DxNKxpRxeAwEXL(TBuBac+>!%J^DbJi+ai zvu~Ez=>qs*%jxKF#IomynPFG}C3SqwD^T)6_AX zN-#dv8N;P;#Y~W=GIEvLnj`kDCG1zcH!2|t56qRTP0Jk-7N(TE-&W0!IU!1-3QDvZ zELcr-M1EPoW5T%4o*7Mm63t-Y*`i(mQ(hi{T?? zcZLamdoI!78h;?YVyvdDWAT>mN59G1aS@z^k9vvYpmY_jWZ@LXdsix{DO~oG>EwY+ zk2^y5QVU-D+IqsZBv$+$dLzLM-r)DzCQ?c3tp{P|5ww+0qB_Ex-tJYSt!bXKKJ|?i zYuLBkIP{Yy<9=zf8axx$9tIBY+yD&9OUko1V9I0yjl@c$v)SHkRE)?LiNMo+ePJZ| ze8gy(Wn6zI{h5RC5eE3#!G{>DS&sJVG@NT2JzIJ1kHA5Ut8~6u2*@ zEe28F`OWn2wC#>f9w@%?G#m+U@@mQh!8iK}@YqRIrJO)#=0|n1ZC_c8<0n;o{7IF9 z$g7HPCaO1Reu*yS_CkvNg_QSFa|l40-Ibn^ds-!&%-kud&Xl;$mFP|sC$f(hTcc9E zWI`Y_OX&})mrkMh?tsGZsn4<`|Xy{ z@o_c_Iq`)~zOr>h*Ahvhsgp=QkDIcAb4G4KonZf+b9jzP_et#CoF?buDYE-DOF3@5 z%gW}K-OSWn>T@~S>d`c^QVl`oy4-e75%~KrJ*a8#vTEV7+8zIC&&^%bZmqAm?P! zCcy4;#A>N~HgolL|JGtx^jB^a#s1m`qZkl zZ)1tH={UKpFX~m%&a2rUGMi<-t^Q2TO&5B(v3wxsJeAxa_w1B6C-Ls+HN>MO^s78* z$b0HeK<;Cotbtk$eG&(qL;NdD#~GA#K9^VMN|0CeMRD>|iOu&iec$2m?xZeDN(W)hh%{^+lwGEpb&06^#x3#xxX|P|NS0q%m4qtHFX;l)O z7haWJEp*tX6^dh$Bj_p30yh2V91MeGmyLLMI(pX6r(ML^vZyfek(nkl+h5==Mt}0( ze(ath0LsnAw!kK?Ue?xRe+pxS@FT5f&h+*(J&ThHR$MTc0XSSebC@DAK^bwi@7JQA z*jtNVcu`;zzC;LqJ57-$Aod^VTGg$-yo?{g-yN`#;?|Cg=^x>PloRY^k3N;Fqnw^9 zWUJqO>jZ>fUdFSlUvN<-WQQ@-NlRo&S)?&+WKD8pEvEn=bX)-%^utB^eIlW>z|(7n z;u}QvInCPlv!6K8u_HzsX%}CIaDK(Lbd)cb ztZaVe5LuI;j}_{jnj}-2Ny9Cuc^{DEuC7+;t|-NGm9W{}!fBVvb_UD;$;A27Snyd5 zUt!D}3$@`@jKCqNA9nt5bt2c&f}{~-bcQXZ-jY!6C8s%Fqz!s2I-?&(#g6#E4h&GN=kLx%#ey@=HA4& zO6Zxr(%*B`6Ai+);#Pt*8S<(4W5J)gTsu!j z6NQF+K^Hp~ti-8R{zO!@YPo8ga?bb4i53BB_E%3ag=ULB)rI3b|ye{-Z+% zzw7{o8@AN(UTM4{v00gq5zjgYSu_d;x&m{kQSHybbM^zbe$LHTa0U0WqFGB zGGgfK<=N&AU*YrGNow9sQ;gbOa`1TQ5CI)B|HLKDM6G1XfludKN}GUflAcn*2reQv zUU!tOOPl;JQ?#M>50MG>cpp$hqmjzk-YX=y^6W3C-u#mNs|BzWiDPFrD~LC}1c0&I zpVY7WVmxW8-)Nk@#OHPIY~_&}DvxC~+>4URNh?u5iK57z^@V>sGKRaLUm+qqo7q9& zB3_y$&NdoKZoF{Vqfle$H8S%}w)93osiyumac?5cy4o@ol6<@0VO^O$*wK?}hgl)W z;&l$4U6ygwG}WWXnT~khXekg2F=3JC6K@)>aYs7-a)1}G&P*DGHb{m%xYDwBL-V#g zK~BOf`eR>0`VmOA{BEAuPl|Bh_$z^*7|n5Rhm>K{=dNnoJ`9C1i4i@y-Q%vzmg=2f zJtw1k1kz?ZdNYTcO4&ITf^#!Yg?;gOjL*VfM6c_t`Jc73A=gP-zb-`lx|hoF?Z+po zWHDEQ_F8V3Nm0#`ks8OKvRHNJiI-iti%T9f@tf@7>k+AXwnO}{b*YqGBt-?0gUHe% ztV9|yA@nM@aEUx)Y0#X0lZg=OXeEVL5&B`9#x$XzdC!j$$>z<$aPle&S?HOsrt5{= z^FN`gYTSH{x0}$X8JQYRB^#Uj9$TGJZ1i&9EuY>eV zryiGvlsTR%O^F5<<@~I$oS&qgv83zAz3`-w~n4ba(-r%hI3X?nxFM$@I=N%?sC3jZdCx)aPdy?^PBb0@>kc^ z4#zdZ4O337cBrG|KgP`VO^yr}G-d!t-*e>!-|wd4{*(`6cug2h=vu!AwsHnN5V|`M zRO)+Pa1jw%HuJIvni|MVf(@_Pil~N@DNxg<4Bhne?8~tOX(K{WMbXyzSA{PHCd@_Z-VT zIfkT0odOD(xrT0}k_ow=Wb|X-J!yNBoImQ#q&vA+prQGN{viughWi6(K~HWmP>gFH zQl4a1$wKA1e_qXXsC_m}MRrNOB#XvGrZCDz>2hoi(+JFTLM=&lKI55cw$U5y0jDE( z_OgSOpbhh!J?2-dGEu^nQ!@h}L-#xnJ?hV>|L3wE40y02l6=1P3oJ)^%%rCmmDblx zhdP#5Ky%%~;z@5LIclBZJa}W7jq-bwIP(tLlBDeQODxP`b4(g!hgLHOo3l`4rLhK$ z!#-Cu!Z1&(al|rOL(==Alg*qLOkcwMh(-L|P)Ptt-vM2nl*x)@cFGY6(Fa?@bN3F& z#|~Kz*IXr;_4U#pc8_Mvty4^E_Oax~!~juuIEr~iTV{=NIC67YcYSst`DqKAR>3|~ z9EbF9D7AgC>R_d8X@@gN9EYXE=gXgNt2=7nQfbh$OxnLP5X5^3b_qGNeq@Kcs9KJH@GxmZ>-Os9YqW9m?>l+sZoMj-V_WE zipsBg5cRFk?%?v<56#DG9Krz?Ft^CV{MBNEwH`ww_Kahzp7l*m?PIzjYta>~J(AR> zw!oZDcPsUGu661bM-dJqM`K3cNxEc}*O>5U`HDrf;)N9Ym71ovlP^`<#>SeQz%!a;UpA#H(KP=;?EV7GE@vcaKeO8?XbVf0sYEz(3zEa^HRHwbq#bzkK`ux8FXI{FasVX*Zz1F_W;r zzn?z)oLx3S0B97CnO()t{=Y2H4hA2B4>9MvzYOmC-9LcF|M1|hA^YQKc_!HZbhZEd z0O;)wZwvLG_VN!NKF0sN>b5HV`IA7{|1#j+aOnSUxc|8||Ci0g_u=jeJj$Lel-VeM zV|0O2LJbBYayL1GvzxS|VoU|W|v#~KUT&WbtEbQ25`)Onx*PKVt>-Kd7`v|1` z&oP0E#}{^U8r*M4RL;a=V0885%{J@?t!z|09XT)`(cUo6NBIAehue>u#wg>}B&j18 z68q9UA#-wBrjl^-ETwivp;YRuR<@ z)mqnv^~e971frN`K{=qmt_D>&~ffhN8sz=B0&&3$}chcI{ZEKKq}8F)PK znCj7g1koGCoX_vaJ6fp_l9yVGH`BOlP8Fg?aTR{?)fVC2wBEGQFYizdKz;mK3}9@c zC=;6*1o!!oyw}`=f3pkvbqwwysz3kp0W=tz@FP#Urc?u2Z1rOxsbazn*v-%*osU9) zKNe#OI&{CHvgybZ^$oN;GLky#TZX$;m$ztw{$4du`plJ4b?0NEi7hT{`|Layvzm&M zjsCMuPvG&4PtqCq{ypK_xqsn7fe{Jb_{22-n8;+RLcTg5MkH3W!{Fu(_wD&UbQXT} z_aML{LJy!Z@k z4ck0D{{{i^RWDZ8r5fxbh>;MOtm^sor>jksr`CcpWtRag6cVE*ZEakIXCgh-7Cvma zVq<|E^g~sHN7Gwg9Ag`c-~bEB%HyxBlG&W7;2zZivav0PSaqFFupB55o*Mj!l zuDJAY)_D4c=JqQ@|dIjB{!(Z?_Aqzh->xYG5SgD zg-4X}B-S-M=@6fJ5%tUN1qWG8Kf0P4c%~o&(Edl~o$o2@$FQKU+HpQZKb2PuV4mT9 z0ohoknoxp8KeiZcuI^6j$HV>}>r2S3EfuvYos}h%_FCVN0~a&o>EUtv6YCdQtH>Ho zsjk)Qw8-Q@-WiM7HCAPJ#t6H0LGb^Qy@^3J$uBJD_ zOEtDL;NF6F7qCN32VtNYk-Z%Q(2~Sy4xQyQkF89A6>loVSnL-+`ty?7eE|a{5!_W{ zU&iLZR9DHI|KdE-hbETIEO9ajtM5tDDl!TeIEsW~k<7vAGP`O98EOWH;&H-h+{Djd zFp~*M!Yno$3c3{`JQ23W62gLo0Qt$q`}P3W?hZF8E!T8f4O*OT)R&71V-wUbm)E0F zigmbnwD;}OQfr<-orKPQZDB1}JBaM-@AxXDJ0BPyoUaoUZCt4{*~YbfYK`aA&L?m4 zH36TVANpOggMhwF2|C^2)QQ;fP#Mqn69yYpb~b(%?4J7zhn^Qu9Q$Z$V0*sF6u*u3 zuSI)KRYih*ljg`l^r4iCZIyidmW`G0b~nW4lZvS;we~u%w(za%Fm9@l(dQ`mqm0tL zOp?M#KkjScOQG(=VQojYGqi4zCC;`EnW{b$L8lC-%>dufA?a*!vgjMUi=i+40@IIWmd>^7J z)}k#lP3vf>)I0wJ(bTmN76k3I5wp)2oKfVejOx#VZiDE z@RmSnBsEnH|k#~b;higa8+J6H{8ZrT-=G$r57?H zOFUuoj5R-lfc2lF+l3C>qak%#I7Y2(I*FTtYB$5)}iix?07c7ef;br$D~ zL(|C~C2?8qIufl2hTmyPyNW#D+`aWLRU;=Qrd8MuV5I&q9Qc1@|f2y8r>gOHlqkW zm$M70NO+b=3&o->xIDlx{y6N2*#}-yJt+BGVX<*#s&??($gBZ4IlF4qF9K=stjN1Q zv;w*^C5URp#XB+Y9uu873_APc1USGP9aVn}J{ z3^An~m`o~s=P`ZKi@9l_3AQm)XWAqed~&aIwFo}1G6K|$gNCgFex}vXfx4%M&{Fsb zBc8c!?nmSH{V)tZbJR)>5Pp5zK|ZrkMW$CIDQ2Mor#>r5dvxZ55&pf@ zTFtG|g!+=Xyb&vbecdFQ1X0XI`6c^)#M-3ErbXlO=OJiN^{dii%x~BSTAsh23LSv` z7+n;v2*pgUW=*_l&c>Ou3lQ&j}4K8^8>xn=tJ0w=%Rk zjeeRc7cAjeCqY5wT)dJ<+$B7jbsRMuTSq9?FHGuzZIo$3pWTHKciU9F^{4k&p^rVKqKoYx7NeA&U0cB;g zJO0hi!T}{A@I?QoI25b{ ztS&O(;B*--#>U#qum2kf-ZZ0`18$ z?)%ZIU_b1AQ+T~yFFu82iB4Unoym7u-rL4`~Z#TOlC0LzkI7wE(mO5I#VK~Tq}pb z>PIV~9qxbJBXR4D?&%g{(EKe?+?vsMKGm}!*#)M*-}!?tdjhwxi>_0To#0<90-zZT z(mUj#iD~35!hfIZ1VBT8!=v#!ap1o;vZv22FwsRX{zl@zz9NPOaA++N)o@)e_ddqp zP|4?FL>`zU-=2LU;Rm? ztLNkv*XU=@-XZ{(T8Do+65z}aBkuaqjt@&&t*w&(GXi(yt$By22Dxw`1Pc%IrPXug zcKV7q-&|iDMIzW{*Jnt|MMO|i(8yWqR&`Q}qA{vd+tyv>K{i}Xr0ZET7I3tKf>vpI zZ|LA7=GH=&nsr%#u?|tp1<;MxSL-AF{{i2)@uLC57#A#BfTE7NCtF0onvi zWLn$%iYvP~6lx^$xq+p1j9zzi@)gZW=|QrP^%X)vKgY>sii4vgPEjkG+NNt)=Pn4- zj0Jzeqrr|85e0Zj3-(y_Hh(06J{=bD#fTsn-bqn4KzI%N$(X$~ordUR9!5>Peqo4cYcs?QEo}<4Rs^O#f`{ zB(idzIFGhs1)$Y;K5$0i7qOnaiYp^?imK{#!UrbY%n!Vh@v6-6;UX&ZFYw}-Rycyq9=xfWqk{|V?zr^Uqti(sHpp*a^l@?dK}wV4wv`oOZ3d4Eq0PW zTnp;*rVe{mP)N`*v#8QmwY=zw8%5{%qiR)nCu>P_t3OzJS~OZv(gAdt@9BZb_Fu$X zfIrr{Km1mud_2HpB?nqO%$ocg=Ukkx&1O@s>L&`wg5pQQW3lq0Sw!m{=N`+1W{O3S zDs*jPt>w9vf2emZ5^=rM*I*_P8tS$vcP~|GBA1i|l-c*`r%Kd_&u31Qa8$1eYVE6T zWGSGLGI|guv#cj03)%*L3P#MWzT8sOC_rFO>v04C6yMm^A>>_O;3P3HDivmV(`xHb zzJ3M(EW6OLv9WNj$h|;a2rMit-)yd?5lsFl9&g&wt`-V3HKjZ++|$7At44ItwrUQR zp7>Zm6m35po};pfT5T*xo`iy$ON@gEADhJ{YwcFbjZoNfH+Ib`vdRyk^e%`=&m=%w zAg(b`Nntkjep*LNo4??<-H!0(C(b<=ASAIL?dH+J3=Lc!^Oo^UN};vSZo+FDb?mN1 zVU#9$8T)Vm*{6w z*>}EeUu^Qw-1Nsqq*gV*Q@c#&asl!TZ`e#`s7)qygfP){lx=bqYMZ*OaI}j)es2uC ziPqU`=F&THy533fL4ozKEU?Zcb7w+`BET(J*#oqXY!X64x}X_?@w#0Zl0WvZ>zMxK zEto+7IXt#uADdyz8t(`1?~C9#&lT1kpVce)Ng1oKPrji*9X+IwiRZ7TtG3HuPan>% zFm_XS+N7vGPuLk6+)&Q~NJ9~^aDv-p1@QnykXEo}*S(zo!SZk)Ymc+L4 zY#DR$?s0jBcblNL*aIJ!2kFVSy6Z0ukrX2`(2p4jp6n zo{(s=+9h#1npbg#Z!RPEquV6sVD$`6vY(kp?AKJxIiy#>cLk#j3r zNND!iX9V)ss%ov2Zq@@-vc29tXHQ~&L+WUe)(!((hn zuq`wR#L?~~9iVjHsb%A9s1uYdHrf1=3`xU{^Z>T~OR1xX$gJu-ASf&;U5_LmIVLIH z)N-_rFp{~@Y(Kp}hBxHz7fJp@|0PzsTZlNKc9XxSG{^^@BoJ^}@~3n-6mm`H#XHxL z1hK#uf*g`!PGTSev#C!~U7Hg=9Uq5$na*&->gr+rklWasSa5f2d8Set1Bh?|78lZ! zaJD4B1gME+kk1Y}y5NtEd3e5kyT<}G3Ql0ZY7U-f!bL&)bMtU-LJp`{Yub-2d2}fJ z)6zz`AM(rzjLQaHi6Yk(WraX5jmwI`-RqweFF;wVgGDQ7)O8G>PuxtXQWIEXge>iF z6-qsQ@h%H);Y?b$(U+3U9h96Q7u6S+FW|SFQ>y2iUvng`T)ZwwRN34mA>@aS05ogP zQC~z79Nm<7rn@IGVrM6vO`o(nBm9wkpdU^DOEB0{nzrrqV#8ssG9du+gMCh*d^!)o zC&JAV*DTvm@)!Lt)N+;0S(pd{ZFgb3zhbxNW!kbU_)dxNp|A{-lG$O88FHID6%Z%) zQCmo*&%tQW86d%j?#6!j#z72=14kTs9t_Vs0=wYvT$m+%fDy+QYie>1_uG#9e7jcQ z2COXT+LI{S6L`ej+#Vi~pP4ygyL}N`K5bP&Iwqf$Q6_GsCnhWGnv|tCTo5a44Y6C2 zgKRnDu{?E0E%%Cp|CsYi0PPhKM0Qb~ku8oN62t#&hXzT_NkuZ|O?A(_YkkF`#XA;Z zY98az3_p#A_JwG%s~$Pfo*%RDf;b5z+KKiAcc@1=4Ltp%IFA~&p<%$->CEy84TK+g zVaA@AGIxm(GHyjwv)lGD8sO9c>j?v4$Hl%<4`-q)%4%}Tv1Gfy{+|3+$dHDqAOv_U zda#I(aOl+ZND7_v`oiSRhDJ0^S}cpUn_;(025o6}r#sR#Xk%yX#mp7b5%yT5G>V(f z(aVb)V^fSNb#hrb^MR%3WHkn^>)C9ugn@KPBEbqiM6dX#;P*itE74+eAB5-l>h^Rd z6Z2L>nUnldVu>A+Q)`f9s1e<=U!`@cAs&HzOeDh=nKhFX=ch9f7d)}kasUb~=hs4x zS8!1FfK_5BX5Es0ZUq6V8fnTDQQljtKrYo?*s^Y>*Io1zhkR~@sQn1^)fCzsZ{;1-2{OD#b$TF(r z1g?H@7|cBHeMpre+P;zmm?JCY0wrlqA7kG<0-Wj=s(l?RF}69fS$>F8;F#k_nJ8bI z6Rgx#E!{W*paowJZ#ZL!>7|K7qrC}kRDgK)i|$pGT-^e{{@B5^c-ZDfzrrlv#fD>& zxz_abXc-E3V`IbK6a1(5j>!kRTWrglwpNhdf=k}KC<#iYB{LV?818O5T79z^bhIhc zm)Yn3QqI%At*aCkV)YnM#2CB@TW+6poKPzQCNF#i=|%E+9S0|B=8?JM?^m3Ue#G>6o;y zr%VR~*@GxB%W$Gs&;ArZ_cF&NNeOF?O@*$^5)l+?iwedjm8-*mj%tki3Ft|?BcK(b z4yn#Zyu783k>}bn3$SxC<0i)Ir{w~Gvvv2%KD__6JZFxr0VA#9Py>VDu-TSUIVq|9 zpxPC>!y&vY{)i>rSY@>|VU(OVnv}0_jJNy4&*+BA=;{ZM)beZgwH6R$z=guQT0{Yz zojF!7=qMLA$w$k-@<#fW6@1-NV4mau%JH;~PtzR+xc&;Wh(M3u5$19coV6ckn(Mcv zzYL_Ixs7Yz!UTx#e;Fq4sh{_|9B2Z)~_=ap}V?ajVfCUIlgE3bEHGLQNT>Z@|f9n)}Cx`t|bF&aExHx zwl+H@nyx!WfGn^3$tiI_4UqgyJoK84M&{5~H!s4d+1_45p3!Q>r&sEX-aZa~4 z<(7$wbmpKtMg)~kpOhgTZo_{>kOhQ&}!Yh|A3p3lYS;0&tub zZfPfgtr%z2%l*f{ZLlM{BUKCz*^dHoK?NcGsO_tjf(?yp>$n(}(XbX+W=1WMq$iE# z^ranRgJartjJ~4HZ(4=(RScoyq-7{4FNM&S&>U`_a^_C13quYh#|R<*73{%#yqd3m z`8ID8p`YRW!4v!~eo5o>R))C!s&cLEg4Yq<&9yiU#4dzXGBy={r7t_9TIfnp(PFh(YCGg2jF@iO1eIaLsDx!MQGav zLV|DajABNr`&|XZu9fmP*Fxe6^4iN#+FP0hkR*+!1~)+l7!+%R%=fn}zyP`Rvsry< zV?IA`vB^e9`2S#8d>IgF5HGGbRVgW-oeTFDKP4ua8)Gvun#n)SrgJz*~ytcd>^>fVSMhvA0~OK zya@HM^<6+K5j9E}9GF;kq453k!jbF_6#;w|&#Q+PytfO~*vLG8%hvr$0rX85kZZsVvv+yTd~cQfd2)mIFZ`&e zqs`}!cKGuM?U+0KNHKBNAK}kYzF!Ev7GQ!SstFqJTWJ0Fxr(HBvD?TM7VW>^H83R% z;8+5uq7Bd0Ns)Hg7mdnu>0SJ7M6}^OazlC`v2*V)e)`?!(Z2!)vP4yr&sSCI-?04I z07U>nMPPJsY#!>y-DScL)l7X#`W{x9bs5YMhQ@k~vTuCBkpyi%1UEdq-?OIlbs zO;$P?N-o>=Tlb~pMzOb58m3?u@5#eJ{?Y4`{6 zf&dGZkQiXS)t~j4g*vd%)Bki*kd_WDUs*e@UXC@og{G$0{(+`2B!A5Tw`QkI&>$xF zX`QQL5QnAM$QxZO^GVDP8XEPToloL-8kc96(3Su$>8|BK33LG?MjIjDBp>oYADKo&|4O0mqzv1^@=kgiYNC6=@v<9gUdud*gE@ z?DrRiIc_cw0$1nJ)PaapW7|JmZGcPmiwU_enWR);cC*44`#~X3ov2bQUNJc*UpW;m zU@Yz(4NhPKqt&PY+>7w+wW>Bbz2eo;;Ze-`NT`H&d!a7Z2V^7Y<$jN_Ly5~Ogez(p zQtMBLU#BR5{sp5&t2JP5n4LFYK~APTXW7k0y4_72%ScL<<4Tq8cvOX;PsF{f<6i<= zIbYaxztW(Ft^xaPBx~{czNA&noG8)X$jV5xe5VL>DNH~l#Fp1Nv1;-O#9`Ot-*}!e zKeaZLan${~@9o7@5Sj)YC1i7&P+M#MI8C?U7)!K-vg3Nf(KrXIxF|qCyRQ(w#WJY> z#l1iaa{ao`9XXvdt~an>yaoG-$E&EQf#t?(#SS)BRu8kHP?;nAfx`RX-s9J?>I%ue z`-}-YIdTyxxB;Bv`P@$a~W0bFnj0VI4PP zZvEV-n3IiL$%o;C%r8~JlmE|xXOMBgdeXp1kRNdSPO$gOKQOUAl`Br3C_Vywt( zdU{%d7M%(_zICj9P%|Dh-R4UjrQvc*c*Ze{T4)PuqBiK=dwi`?`zfJZ7f@qC z98I+T6LEoG?nBu0o4-%&zOAdNCB&%@Xy=kzZ?A_mVC;Fu@13j^Up+1g+r!ISi>!jkZ{XCF4PJa@yO(M%zA*qQ3tPbk&M_HS#k7}53dai~p z(3tPm^{xNhf3eonb@eo`8T{R~_ul}XWliZO=X01-4z*mMS@u$wIPd=ZI_m0ahl)zP z3UEk;Sn1UX0NJMlO{(-~f&7?m)={|EL{yN<6*F zp`ly*TcTSAX0PBYOxjxyzw72~SYxfu^(H+llY!@>RSgAqYEuULQQ!+F-Zl-k?6Wkw z?21%geMckl=z(YAbgU`%VGf|ovs_B?J@C%uE(@D|dK)Y|B@NC8BbBU~OCgii5 z+kqD6CP>WKB!aLv_oR`u=PW753o@>ye+oEybTaaBa~z=;~6IcSAvvu+>z zl(&?pQv;Y~$ufJEpO{!T`Jo~jE;^%Zn%YkOz@N%_UlCX4++#X4duqGZ;`y2$uoH}aMD1srCDweS(_*2I*Rb`pB|T@RgU zC^kFl8}=@@&8_WI-zs!E6Y3uav4&9iUu_fqXre)e3!>qHbadS0s6T%w}jq=L7t{aq;JvgaE6g#S^Y4jztnE_HL`}dcKxneY`oL znE9cfq868qxxf#BuXw~CxMYk&BcfjLg7&7mjg7T@dULyv-?Zxq1hTZU^)r+CGV?L58Qil0pkSW8{-whDZnmBt;@w=z zjflq^h;U&`MjX@D9;fS0URGdRZ+j4B=jJoMxYRY=q8dx)6OVmk61u0yTCg2>;4mMv zVtrCx+uGC;9>AO|AP@RvLN_usTDJZui9M=fb#N6y0~YZua`^=c_oVR36|JTtKdKKL z0PEGagaM#6fk~%dBvjKM5y?G`}RqHACtnY}vau@P?C3T&&*aB|M$ux?W}u zEg*>71>=VhMP&Hxh<#%eS<)6J z$@wX}Ud_DG{YN2Kw$X3ev? zv|~`m05X!=BzyIduMzF&3fB=X&b!m-Y%$X>B4Ix)*3zOxQL+yQUwa)LXk1IzZ_G@B?%QUq^zU_aR;w5TImr}94GU6X?^51 z)g{`2QKLh@NI=sAP^BZ&q8WyA-+`a}QT!K6Fw|9({1qiYLe`=|pPRAjGYQg*#V$G& z18fu%rLWkLF`dkMA2ljw2T;)(W#YN=60n@D;&A`*6{GI3)vj6BdDpes>%A^PP>eD1 zny2`nU{*RrcIRp+u2iQ}Rh%+wWUWqKT#;Vos6=mL&RKGOf=_a_-gVboooyr|yHlF% zEWbn%22(O-RQjsp+{SrP6de($!AeYG4~f2fdXJoDsR8zr(aDug)TJG6gz7uB8neQo zMQ5LgW(kI6)MMH~px)o96}=_&CAbTyx2EH|+2)WtZpe>@)=EWxz6VD$THSIzUYH8> zgEZ&}CF$K^PU?cEtD)}%Jcli%;MLGFXDo5BC<7S*Ue$%?>-%NWLw*HIoR+om2J3%Z zp@}mI+JfA_(0~Q;reZdA277K z>lMC!Xlni?qV2?kwE(Gz%T=_R6H@jDh^wu@;fX_IN;+WwTq|~P)q)**HYWf(C&XiB zYSp_I+KNJoEg4mM_F_{!TGUPogfvfldbHfOM{LVvW*3KD&X!2eFm_6Oay@LX6DkmO zszsQ%%1qAUe`E-YA*l)eDXT4k=7Ko9y~?P0Xahn4;?ZGblA~!+>W2KEP#iwhDCDkc zS(T0l(I9L^`j$`SZIyA!hZhNh@^-ZZ&^HLQfyQrX8KQ1iRw0fidTeHqK>nj;nLZTr z_ang$<0L1rD7T$ds5l&quJ4w1twy}g_feZC9_VMa>(U8a2?nEf}kQ=s@6{}F!YZM zqvg`qWGD}Psa|e$E{Pr$i$;Cg&#hu}S+t+7+oN*Wvy018MYUv#f;!-mc{Axvn|9t+ zVZAD&@u?5!((=%=LZ_5vn{(-rYamI=^nPYh=l~`^N>YwvD)gHCoAKRbF_N^`4iKGA zS532kpM^2sBmIwQpKoI8vb+%M{E*;|oc~=eIJB$exg3miGe0qn!64}<4qOQ@He!3= zX9ZA^kYZ7@FS#E&oy|K{#@{a-U-;kfAh|n0B07qAh8X6e{pyVJHI!m!YzsB!$SQ z4Q1uM1AD}@lNQ|{RSpz!ybI!SUMF*nO>3Nal1e0Mx<|UmFe}4Fxyvb=P$I?b4+M1S zt=%~9g;C~Z%kFT$Um`W@irT(N=d9m?iU37Lo2NiU9EQL3gN_?&ae&lpY^j}BSF`V< zt3AZk@&YwJCYi+P?{MSXnTkv!PK&TkveTTTnL(CZl=~_Ol*Hno^`BIyjDVE?BoV`>vMklg z)-r~}M*LBUb-1+~2(I633pDg;XFk_m;!Pda+d7S*GG>o9XT4cB-Wv5l*;;2EE7<=c zU1k%$THwE0e1^yF#|N^gd0oS*aXI(?aYEQFv&J9gp^GFsyD{KY;8A5N&b5#Zo0ype zMFa&d4uocBXU98lw!zT?r6_ZWdKDR_@@(8!86`-Oo9?5e06-%4%ZtrFxeB?S6TL}O zk|E1-67fl=iB5(1$c6awFK3jMO^17!j*!jTcv-D+U5{+VO0)2kp=6JY45Yw@1&I1j z>qj7T4?J!oU30QjCAzl2Qkzhc+Kh1rl>ZT#ODLQx3>OxbNV6{#ok70in+0MBPhH$&zRHm0e1o8iU>nmGJYHd(Ur zEs@k%+NzI?nAuz?zOkyexYqq6NJr@CZpkr*b+ zMk@_ceF56{kcm|pNx{zF9$T)iwmbo0Dhx$@2XJt0pM;ZQxO*-DH>D&x3xE5h6t=W1 zP}fg1(8vP~+fc^?-AJRlx*CU}6?egxnU;t@s)$Ji1O5+ki;?i#JKO66s6Q3rQ`=nM zW^uL#{bNvu2WE1518FmSJ;if@hgD+~&d{Mnph;{;Arp1F10_G^jN|l1C8ZsO-c!-B zrA(>2Oj2Wr9F3kF0mympg||AOdF>HlkktqwWgU*X{HQ0hrsIGqT60l#BM9nP&@zYl zGmX#OJil(acl9^5=Ph(egUKm$S$Y7iKOBh}EK;G|mn4^|)8I|bs7}{9l{O{I%n0^7 zaw|$IX1wq$*O*feLmUhbEGG$i(v3a!Scbjqywin7c_;`-jQS)2AgtUB$nQyjcj$qts4Wod~`JOHc1Qz^$#cByM+5t9LsaA_GZ=%~>)*?`bQUOGvqhFZi zkt#a%=OsUQ7;`&opvlrhHq&TEe!AE_sm$#4UJd=aDlMxJ*n1C3-Xr1-NLb zGB%gzWZj>7w%rd}d)IJFZe3T5u~!#L`WLQV@eSlbtHnQ!^o&Jb1)+$HlrmWOH+eZW z_qpGqz4Kwg&;Ob{1|IaWp`V4-1YXY)a>v$SG_|kYK?c9T%Qm8P0{nVk+l%bXpYuqT z@m8D4*hs>v-&=`dE6;Rmctv>YLj(5`nl{!3QIF<*Jj4X}vY201u}DIZ;oSxupfb?K z?=6G-Ee7(&u$32mkzw6@Cc4gQg|TIp>^n-QXX~uyz5BJp6EY1J;6Lr3e8-(flSbXE z5r+9HGPzAUc@*E}DWV=QRERKBy_Y6wt z4%VaP$jAAx~Ex|Oy=eMbQ$Az@-;(PHgjPdrP zzx_j`CkWPgo^2nYyGY<9-$h4afg0JKPtf?*oR*4?xKWV3PO-X*)4Kzp1J zm+rt%2(wk_R~t)2TumX4h9U2X+-F3~FfSDBGN8`E$~82mksgixA% zK6zgD!TuA1Jkdi{3;uAXsW1^i$3Q&)3_rl^P!JQINT)m7K84H|4cw88hqC$#{|*%Z zhxBHve_*Z$GvoLTywXa5_s(?U=tl2u%LI^cMA<8c;CMqO*|w zAI zkW!I`-U2zn#L&5`ZsIhdempFH_7zA8{7o1vE*`AH(ACw2tfj}HKKB}#p3Yn9irV11 zUf?Ps(slIyFmRx8~hK?==!w7+J?&WvRt6zs~pq<bdvq4h5_y_U|i>j($&g(J;w=E;|AH-7{x(Vb8QveM0}9;U(NzHV@vW9Gng{?tFRSuVrH}7SPEA=~U)lpUuR1Nz z={jQiraR_!ppY2Q>pIs!+jWz<+WW2ZdFg@12F}-vuJ^OZ@xW6tXm85{nDt2>&CjiX zju$D!lT->OeXL`3HjR?@lqt#*D02GuR$R%bO2o`6`O{iaTK7ND$*J1xJxq0}@<5HA-NfoNN6S2Q<`7{?zQKUO=tVF+$ z&8_RzL4(me`0*0>oEgi#u)p9j! zHmf{a`i-D5tMhXF9$~zGBOO&dBG`qf_SM<6i+BQ~63Pk_hT|s_gO~+`A%|l(m-Dcs zOc(XqNHt3zB<*u?yTQ-vq!RsI8fVG?B{4<}Fi7tO1eM}$gVCv?6+>F!Nb>Ep4r&yU zS`e@ux>RPs>Iad>WA)c%iFWg_WVU{2s+(=TRLr^U4t1)w)7HHV%&*pf7=hN852-A0 z(|}FknaJHeqhGq0V7^ygQ)DFXkf)-SJq z8BXIrpyZ7$0Ir{%*7QW4zTef!#q5m>S)bpLXHossJ39Grr5d}UgK3VFA1Qd(yI#Gv zHe4*SpMVq4Qp;^HkyERjCRft)%;=9%0+5e`JoA`NNWy!g&QhWaTAh?iX8%GpT>Y zG0~S*QwLi{tc|aQ#WHC}Dmyl^OsLZQyK~JszV-cpw9G`52r{1T$!|vy&rz~@ z7xs}WFCn6UVC3MUDKhU^TrB8rz-^Yt9ecDq+4=#55Z<@FcJg%7Fvs?}WIX!1b$>P% zf5i@4;3$|0^3iVD_3^5-x4?erQr$dSL4Rii)zQ2k9UF<*R{fUi7N@+qQlaLT>#f;q z@uZ6%EAfVc%rW_BYQ`-HRF%MG#UAn0^~d)M&YZ7ZT&XN{cup!+WuG%dO>4#-a}mu2 zqT=M$3h;KWJvdJlc80IL@J7zy^VS)_qE~L1=U#orvf2xbN7g6&@Gm3U-!{IzxLheu zT5mw1TR#IBMpY;)uPiRkRn+rdxLy)DtZcb{GrQU!<1>?aN(3Qq;On27(X7bWWfL=* zlBQl&`^fFF{|s~USs*;MMM%@^@&|9UiIbAsCYi%KIEpzijQ_rtG zRwhHrzZ$0pQx()m*Pph~#rG3obLw>QPT^4%j$g^=DW~nY-dvoYkJaZZmFTUthY$r; z0C;_;D98eD{3LfIe`I+}38eM*g^Q7m&`hR4y{O&W01nwUed+lot*}wksRD$+7ne8= z5lYW4nX_VzP>>d%=aIUD%9CxeK1CgL3FS0ZA*HF%4P7TNP6QEgA!8(8)eZGsm zWxM#Xf&puAq5kXh^}0UX;r$o2O2V;S0I^&N&*EUzR%PLdN#XYVK>s(-)vx6T;+qH= zXDuA0Hds6JBw_9I6Lmt$Tc;UqeQVAv>zobM89r)!7ake2A-j)pOTF4n2fGoGfVWEL zGG9=32~io|*YdN8-R<%aja*aJubw%}uUKD?fJcS1jp-C1RjT4J`;;UiaxpS9nVv0t zaMWBvb{KMU6Y#P-A*XH-xz=F|TUMU)TPS+c=oa23$OSA)IW>fMB)vPy+xKv)tjxv= z%yBd!V&*OST_B37oTg)=x3j)=wc8-|W~pV_+V75H5P z*u!>VI{9Z+TZfK?Z;x&3%LQ&|V=GC8{DqIbi_XRP3oW>OsEaQhgAZBS7SzJb5w?es z%4vEkQ{?;hFgd1~O9E!#+=qmdY4v=xgWI%N+O;(sC9cXhX z<`(Yf+t!L|oHnAzFIE*eZy6;76UB**IW&#;6IUmd2+mXkH5}b8zM&uXhaV(hhH`*^OwflKhawrvaLiMyW* zGVQ|4R4(2YyFat$2eg-HUzU*dPg@}-=Xo*bLub5EDvg5+<+FW3wf*9%SjEAd&>2o_ zDILx$N=$NVN~{R1o$oFOYL!lIob^k%N9qPcct7goQPQKOhj22=3`S+;XsSshGP1V61=WG*JJjcNSl0G3a>gOl1VIXC-VRuuVy4?*xBjHhz3o zht6;KGFDo(3!1@|pZYP`Z(fAI=`R`|GqC}f!e~9xt6ZIWv}p-hCLaWZ&J4}WY$=f@ zcJdUuRc6oSudZfqY8OWK6HjV{fNl|E2Yp-xNzp)KmX|b^l;{(?L~*JtE4zd{S`F4; z-k&8vOU{9pSoU{TV^=Y-TrVC>y@Rva03BeRW zLTsz`_ZBoTbYWoM$MunrLiq8*wd;juYXsXWUXx~@USPY5z7n2~&dcyyF|jwcKt0Oz zskJz<>$k(L3EPLuoicW)5RS8Pm~{y>T@ct2;sPwvHHURFxR}L?SQZW>mYVuNG zBK=7a(DN}NLtI?jG1T}Y^D&cDv#{dfQ@c;kY^rVbQv2j0OeCUCU0~sNztN`>voDs| zLeas6?yI&;zJEzZxKaUeAjY)lofA+xnm`5#gd3Y=P@&qpCmU?z3U!*I%c7~QPB*1PKc#j71t# zu|6IdMnFbSfnH9u?b>F3!DHFyabm01!nvYS$o1<%ssiJd!kCQYEQlB$?X zZgXOnhXdP4tEGbLsu2cNd<)&1@%20}!5=CLuZU%i^U;VjJOEYu+ z7N_>oZer4Rz%E}xBo|%lwpML_i)mL&ke?_>yy0!1XHGf!UB4v2i?WLU1~>Y&DnDyI z2~9;RMiWEG5Th-Thkt)%?RE*>=f=nZO;0 z9sr7N*Jp~I*55!$=Z|+ktI$i-@PwkL#nT`iX@3B&}57Hm+xbBFlA(i6p)YK2hSexgM|Q3+|JL>m}HDS8<|BWdfXHD?2SO%pm7) z@-;y1c|RUSP2!o?zy{fyGwm&RFC$T{ z`{#4+k4RyFu`!$~%W~giDl_5lV*y1mYd#0knZ9&Tp!s%3$UovE!VbpqRFG@)UD7OR z3vyq;z1ZVy%EP{?$ns5Q}iYXQ``b27N|1Cjc9905ss-1lt@@wdBbVDI&ijPUvLhnv4B-P)#1_M#gd^kZ24f}VM3ib6*jI@ zluyU_LikNsGE=$;EP>A}6mguzD9f@d9L@NCi?Ma2CA*SJx-mww^rFxDS#0t$}Rs=TkW3nP%WUKXBkr7jD%UC{rK|w*5?` zxR98|!$`mq4^1lFJvrfi0VHU7J`)6s*E&a#8znR&P`-Sx0P8>0s@e0okt3bB=3M$ZEC$XH0#Z)umBt~>MuI3r}lShfMi0h zW);9E=;S?{GEfKZw#%pbzKIBg?hJs@G9OUg4maW3kSSpw5#vT^UW8IIF%tsD-C*vp zHmx0ImyWxE965ri+$U?iHGCC^QnnD)kr=HSUI}Fdmam&L-5wD$4aABAcbw!gDWC1q z1V^Bw|xasq1H|3pkk_x_`Zy$ATdX!;Ub<=M%!WwMEOP3dtZu=k$&ZuSAW|N+5 zK6+~D3}j|5NbNEAcICWE#Xp$a*K&x>-dH!PQ}v8FE+x?=LDD!Su?iM}qO;9G{m1&P zK|N9}^D>d6M*fJ4?(R1)FI#Gl9#;^vOOU)#*jerm`&#L{#@ExIa%sm)O3IJF<5)YY zHdXWDu@;`>4z)|t>s>MrXDK|}Mhn}OhDT?-UvciayvgdR#PDL=_Rz!qtYX3tL zAdru~odb3I=s0k{?A2#_4;=>M-#5LNKStppoeE3&h5Akyrk=XGdeYDf;ApBsS7DSM zOQ*GE(fn;G$YE=YGPmzUwdn{`EUNxwL^62=3{X3iRkc=?I4@@=n_?O^A_kS$vEhrB zhybwt6~(3BL!uk+0i-X7Bh#+q)T;Rd&WL{8VB&hMzQMPL#+!_op#zOm8GDMw>Q$F! zr>Bm9Vh`3~URG3~0?_nPfq`E`FzQ1#bPw zJ2hUPmOAmgwrJ7R2|h55IVA?-7&F@R($;P$m%2tr8lGdM ze)I7>$t2ta3RR5&Ike=DMAR*>OXEGD_Y+Ub-!l8=z<=SM$n(@WX}uWi<`LiH;+dPSJ2?r%!XC$BQ)4fh3^`e2zubzfNV1iYu3-M1M#gsdu@=S9>+G$V zm#0uqXtZC?u321ci1BX$D-mepBaq)a)Q9M^Si9|(=Jva{W_^!2TFKfLKV8dXhOU&Zk*Kb&dd`m;rNZsg462D-Q(6<$(Us5nJKu;TFqfc5KjDW1Ui9RFsYOp*h4Bw2~ zL*kT7={W1~{v%%rhb^1Rm{RrZz-~o{tM<$-d0)@dgG@8dizKT4L!)R+@Ue7r?zCiS zC!pk-Zu_I;60rTjNuXTGZX3=12r>mk;}m4yePsFc{$D<_r2yqA|J~5B`_oX8N+m+nE2WF3B(9e|z)%;jinK9*Tva-V->zKk8Pzpt19@Yv{v87f}EXKWv8ON;>YI_Y}O+xvg_`t#1ab3;Uv)TBGg=!lFG zK!G-&mytX!x*5V4UeJMqmo34>RV>x{mK~3Xo1C>5_>3UBjoQqdDK`|BC~!Gd6rGme zzr;Ckge?v9fFoVx$Oof)Jw8GRq*gbvU5&oBmV|*Wk$^Y&%=*jFep5= zmGOo zk51pEX)Zd3Ab1@8`Cssl6e7TvK+nta!$5))U4V24X#_PH{tdSH?J1z#sO;jeQyB0= zUpQAieZvlb8rM(37ISp~J=sM>3b>jGgg-6=B>L5_=Bo1g50-*J z6S#xQWzCC+e$O5xg!o-pcRTFsy=NG4x(frg{d>f~HGy37;Qlgx-6C2>act13W_c*h zd(knJhDK}+HRBztPtP=Lo|}X+HfyZT;<4-U8nh6+Kl5&m#Wa z=zqMOf3&*k@U#JMSY*v>e7WHCjOQ|_NU&~FJH;S>_LUUd&VjMCR{L0n?ZI3w5OCdaP-c113o?U>J={Lk zBKJw|n~`U&7d^X>gse^~7=_T0&jg!a8?tuZI`5C~Z7k%W^(qfB)xtMc92t4$DDiY^ zEJ96M>dEg3^Mw3Iuv#xT)h>V5Ha)tx<6JF*>jky%k5kI^aO0{nQ1zdF^k}2&u$t?% zE)$alp{8bECAM2_$nSIJ$WR_8j5Z1Fhom`_g$PGEW9 zED{TWo^vixTM=N@a#Pzl5$uiO4sb~BYaX$6_O6C<^A|F&C*_zgg0jz^m9N>KUp0V( z|1sdz5wd(0NlpY_`5H0&FNw2&-_QPaxOuqlZRQ|doZ@`a`4F@-##o7SdK6Sjr8~cf zdcL_4Kgx3YL7Z#I<#jTzhuJ*P=WAIIvXhN=+TsL{5nJ#kWS=?lPJIBX;oi3 z$kZCL_lRbw;sDw^SseLvYBAPa>j34YZXJCsOtYGO?$CzsZeXH7)P~(B;C9JtHFZ3A zS@)V-11)c80R}w{ZI?U^8T1^EA1YsOl3{N$D!&HoMijifQjPt2ji{)pi1kDx$z}SI zb9*njjiki7WU?x3+u!o!`JUCi*lG~;cytj)o9 z$-3TrPpA;z4P)9M35zOe)Hl@=#@fH^KfO;BdB()a*6(IDnR&h?23D`t#1pftXHL6U zvZO!r5+sg6r6D11PS=COwH>r8wTu;z%+K_JW;loEp3mAVQZYZH!<5 z1vVj4x0yeLK~G>kSNlM>==z0Vd@OWSa*#JWBn&2WO4gUxK{C3#zdN}?OlH326TtO3 z%D*OCmYWM)wP-@rVgYsNNj($-Hu zH>?=2r*$_R(I)H6;mnmrUCfrYx0-aYU$UTW$>=?DAmjOLYu3?tXvf^VRsU=6^+n&QS#DDfEzpaJjp;YvyddPC_X9}eL#=E zjbgID2XS@WX2UNjkw5*0qh&wZz_PtDO@<&9wyff{Nvdi@2d-;r2aBjzrl}RSBH14H z0N`ldgbx}r1Pcv!&i>kLz$IiK57&Cdo$sW{l4(toou%6oo8Hi5m4}rbwLZFycaczg z#loVGvv-nmBag_^)zCCEVP0HhK^9bNInwH6Ig&J6s#vwQWZs$5%AS7KlAO+j)TZqET&t)$@qTW8_(Xx<<(N^5FboYSpU8kIHSNLLW zbeWC|;A;_iHac{bK+Y08zHMR-RX5Lo^fGW>HhkisjxL>9! z?|v1r-N`oaBCZ+pvAf(k{&--Xe|c#aYB^jS{;^YYTJZd#Xf4+EA(j}Aj2RYhXDyql z$jTy0>TYnw`dOvM_y{)c!t_}ez=H{HVjb6uxp@7y>Q4;^xPdz<((tM`LbEB4mf6Wh z!no^Mn5>EM%VZpBHIrjql{b(xDOLi9D%Xa~;8;oj>E~S!=PxWs>2*Nc6k?nhA^@4X9{>faLZ=YJS+|d#-hdQl~YemmfNw?SBdY z2v8Zlw(I?>$I+_h7ydEvWm%5>4M#+~+|B~gWH&(?7Zh&8q##1;4;E)0M8Z)ak35VY znNL~OpG}(YM@+SreTgV5O_~u5({k|L$x~i_*mbyuOWPtg-A*ywRr`pzhA|X56pxEU zv-I5eEeih9H8%rQEa&@QMg+hC<2gL|c}#?30nI3E$Dg|TFksRA(nmen5`9@E{+tVZ zS?#f|ooq7(VokWB^T^R3rnclho$^}`E>b92#?37(_9&G}vacv{h0@}%L~}}Qy~?fN=B=W)2hqSgLSo?}9i}(?8QHM3Vn6e`q+*ePgcrG9D;@6Zq z?_E)9UMa3J+B6U40#R?p*CK17(UQVJz(}1SlSJM`39*-$yUhrTAbU&-#^XqPh@oO= z-@wv*L3=rXbu*91c-iOWA>sss&Vv_}=)mX9IyUI*DK=kkYuRrCSM*jw=Chi9M0PHl zjkHM6tzs-g~Zf*vN-`I zo%)*hXkVw6ebEo~#h-)QisVwYk{DO=G0@^*mK~c;U779lW^Ns8Xy8o9dx^^$y`x{} z-(aR6ODn27l<#<~T3w^oVqz`zT6i3J8At~;in=-OOr+|}M@kY9nmx7QO^Hn4iyUbV~Zx-We=JIs9@K^Rjsw$TOojNuVcqcQyNQzMb2Y@i9+COZd z4?gv~7Y(`$aSI+_JjABikQRUQt6x`=er(k57cXKIl`}h5@E-78WP!OIP3F)rl+2qB zP?eNS-)zfBo8*m?M0$O>kfz^=pGO$e?TJ+Ze98*VQ*SFfaDA;tVu4nd+EYD`FAAq( zmNlm5xrxXCyoZ6Vr_nTTdTovUFuX?-#CV~(H(zqR921Dr zPXXw<3Jx+p94tFkJF(*uXa`}Lm&X!`Jy+9C@FcVe&>8W-LuJS5}^v@0d~%#vAt2wC8J72Z3xUEGwWOk10c{Ozge# zDHm)`l4Z4S`3XyOP*2aDQ0^<=bsZ%`z$u4Z)-f=#<3Y|WxS(>us3RrnaY`mUdF>||nD zhKG#vkalF|sxe?ZdOA3_>VxHR(NwzGd+x40sqGP>;(o;})4hQ~@0uB-d2LMI*hLLi zQUOlxb@i`hW5t2oXEvTMmWVI6s|Y48!OD5p@l1&l5h&>(Bd^KM5@8ha_%MJje^(zT zLy`;Df#eZ*zL2N2`v~vn>D^laUXIIm<7n5vY4-!&>Mi2NsC!BfkD&W!`*Lc!0uDLu zAftW`hrRhy-8W%pgeYdq$Ml7IGbF?%CsZa!;4vxlu{nGC@w&@H92VHDJKY&8QHJCc zD^J7&CT$dNjsRkRbbc@*I^+e%^anbt+Y-LMF@5NpIf_KAfNZy+{sZg%rX)H>1VGV$ zRgZS1%p);A$6)xP%Jj&TPW<|RYkp)WZPK>(no3}0vJYOjUaye)~<;4A`Fd9&AjCy-mnt5HKa@lU( zUEWm4H&Zmqw4c<*=bFo$csV~)Z&_QgT^Nk5n9pawaELT8S(Pa(=WCkQ2Q;B2sBe*; zYyVw~8yGwGybDXqDKfmkqGE8KN68N4n?U3uTY;fPgc-Er_bgk3iq(M+%k4M^UCUya zWIxt(`_Qh|%DyL7^ypKT2G=<4dBP_nPZ}JIwY%O@@LTbrsPMEo`X){+f9KPgh+&M5 zuu166*JSV)Wb3iM&Gf0H_x>o)24mQ0T^4CC$1Dja8e$gGXiFQ5*lC(1c-NBbmRU_O zB4;hY7`S9lvJ630atuljr_m}DUG8&@N+_hv#5-8+rZq!A5~6?_*%a_fIzI3(q#IL@ z6mgCpjQkie9KRrf_meR2R-hbS7r<{r-#7N{^z%n5QRb6t&3WZ+saqYBxUt`~cdhxe zuD##7T+U?D(l-}WY~7NM;}A3=OYMCYt5bOCM=Z6e7%4nih2{#Bj9gDmtp{A3sDlsT zDTY@9y01Vk?}5$E&;uOxxM7|x`0cOcfik-%dD=!n$iihrAWh-(9?B`?Kn!1AxunE9EoJ&30%t2X z&ti^)_o6M8HQO`-Cr4Jv2*#4^vPneF(jBgzL;^mueh*%GM`H&z^xEZwlaxPwK*vVc z(k|sC%MFs2<73c8UP?Q5+O9`uIb*?o#6`exM^uW_aY7yp%}iw>VDQ=xh9&p%Z0(jQfjoFV)IjHcBD)mj%Xf-x>0BU6Kjf+OHya&c0g2qiIzTT6ig;V2}+B-4;hTO=H`oo7M(+5ybg3&pmAid^_Qp{nL3wAW*y@kLP6D; zd#N?9@+Bg%adLei@`M!*FOL3KfsYp$GG4thLRs5jLBmKeUFgj&i!8JqLHP}abTR(O zJwRJHwJeyl8pQL8iiW-tU?`l7aj{M$)b=S(gA>dgfKv_>#nE&yU1oQGODWnmoPW%G zB$Y-zqa(g@Y!ZQ}kP{1M^4;3r%PRHR##!{wj7ZaTh zj>U>PwbTY!=9E$l&hH+E2kZA%*ROjcBo(~8b-da<=ze&!e0h4gnUK19X}`WXVm~nS zxrE@D<*Y2fW4Od4$5lRc8Y2p!fMpMSAUdnGV{4oe+sXL zsS)f%($h-dNMrW&QE38fc+WsbJf{imL9N^!{pAg~RTQFR=8>t>nN&#dZW zV2OAX{*V-jy~n`s5sr<}z?Z`QokIJWU1oYdlp_|yR$#PXN2?Lzy`ksU^?Ii(d}C>! zec9IVZSGyv?`Xtlqrs@Z65}i0Z@2YEW&oR|{sgQ+BvSd>XF>QtlDY03r#1R_v?VC; zZ?q+f$otgkewA*kM0JUJUUkQEw#x$7z4@tB=Zrw;f)18xzj;D6*CR^`7RnXQ(H+mS zxzQ9vVF~_53PEm}nv$crwztPTy$>Z&=H8k}W9uI3!h zOjg<%+FV?gS798EmJnkiDn%D>Q#W30do-}JjQ&I~5w5`!siS%J$KLGwn0m{Lexm2_ zfxIGmAsQb@cNpVLIfr?(cn8!A90xB00uW-B~ zU~BrAxth|*Vr7)$j6L^}!kR-q-~Xwa47{b-GJn#%KQ)WE|upfD|7Ty8^Loz~58lWM}6 z94D1=4j0EEW>>W~e7&%&P#sxi2m+NxxJW3|2=Kt{Y*mgMK*4mn?a)Lf$ANcf`1?~>SaRGde%?L z>4W=&6Z3fNOC&}8J8{PMLrR5XgB{z`KMXC=KidryO$o@=Rgfq|gd@9A6WsPc*}=cZ z(Aym&%}m~h0WKYFvSy$0{|y`cnBd;%M7j_+tI>INOmR^~p~!P-ctwwFkSag(fBxwl znoX}X{n?6px7K!M1t~mUv`Ak3dx;GtI?elk zp_g!|$?;!MQ_1@OFQ_ShGpO{hG!3Dc@&eZ+z|rAk zDb=%(Hc{h5Vph>@DZ@$z+pgDgQptdeY}xnKe_yfKAGE>4oKf zdrr(Z9D~c>FQA+CBNydveDUUF50DcyL+AHFK*65=UtEAuZtIC|@{}UCy?QZ#Tr0Vq z;w-e^u*+tz)f+se063`$-s{Vp)n&+Qy5_5-#J0J%a=PcJ_?Ur!F4@0dohBz%|_bPmqoCLzAk7Rn7vnbJ`~~F4q2y~THJSTeRLNAPd1ix5`vJZUREeB_WPy& zxqbL!Sa^>6mlsD;`w53n8%WV`e8eLB6+FS+NOms zG5BiFsadr(E1*M~PuC8t#HCFOx7x#&FYR7s;ux|%yQ2a^tOpz>vI`r;)@gafZeYhc z0K7Q>^^pfIH!jbC)5v1uz7=__q>*y9W8+LlNHeV7SgK&Oi5GvSymxA#=@vd`lS(du zQ`Nh*PZMYJTTEwFqYr4f&+r{Bc1W!~BM0hNnDF;@*esu&c2qf?X5g0PyVP0zyAbe4 zpc*9{P1d=&RCS$2ww`Pp9UQ79bQVD6J^9FYIz5QJAEPcE&(uE6p#%sCFfmtU-pw^F zc;fGI7KOe<7&r93Lm;Whl>uST49az z(lVTYf)HenrC~zqp>oB}KC`i2`X;j$W@(wCRu3-MHI_(n^9U3Wfyx`%RQ1|@xmr%s zQbb-?TggJ>R8W$Y>pnC%&N5;%fiU_f5GQ>)TUB$aZoM~lQD2stzmt7#zxvscyxO~D z7qQr9b$db_DPp=nO7&3Q@wC z2MGK$efM9Cb4i_&@{eES^9?#d^DhU#9BYLw6cTQl&D$MziPJI7vI8eWIvoE{9DpHZ zcLTdg7ci>73_kC%R`C+6%o#Il@wvattnK?R{LK~>Zz$#L4q2^an79;Q+W*Ag(7={^ zG~3e7tC*5V){6F)i%h2Ukp`ohq}>)@F1hchms#Y!5RPR@w*zcwejJ@ifr?K6>R=S% zG6TM1?sb@VknF>lz^dBVDwN(FS*|{CC><^JyfQdNy(|5$lOWP9ZP5bdQfeTEFLJQm z>b8YLDAO{cqNz|=K~hED#B%!@)3>+cO;B&tC*r3WJnpt(;KHMMPZaB~e_$}XDU%NA z7huESU<}cF-XC&%@0{m#taQ6>*5_6omh0p#I3rEO4fT00lX6^q=uY6$%aCDMO-D_X z>kAE~+g)s4bVhaj0mK!2hWrJ@q19Txi|buHc`6*MSK?#HHiW4aQ;M{O(s_?Qy0{0# zP;W&)dd>O6nf^!|z{f~a`$rwo&;e^msuuZGuUFrZK{zLHuL(+x!`~#+%XdkCxjE=n zg4%ckQ-=*Xv1I2+uo}0P|N>u1|fbnFAHtPgvl6DH?&5bp%m>V0SqFmW@?$05e*9USo* z_$cXR;+fCKeyr}5dwW4_M7=2b;vu1=*QuRh0N|kw<~eW}AD=XvFZC)ZPE1h}xp|v| zt1)BHsD`s;=CIZ{D!nwvMO<}Kz|WB~wSton10w(Iqt`^6Vf z*V!ln9H16UV8ta~(Am>~FfYx?##OWVZ)e8Hj!q^D^UjvD4TFbKz zNB8qdQ32!L4SS4^es9g!KJZ(plgy##-afrDv}t+%8e$)~j*n3}&47m<%8B`&gMB;4 z-(fO`6UJXPs zl!FbfM81RSIqD1^+ZbjoJl!Eo9qRMrVoj(R>QEb+nqeMy9vj};-D1|J!|&jh>##yG zadT@p+np_4uWiiIg3Kq_uW4$HyH_3(6%D^Vq^Zj2ZO76|fk=mxlZxug80thI5+Yiv zR<5Zf&ORYWl_aa7m0y(cjI|*QT}Y9{jmz1H=s6>~k9?;NX5w=&z7jBH45=xU8A0y)s zi@c?%N4d4)Z1A%erBBYI#hE&zcA@M@C68Am_i*1BMA-DvQpUB_4@R!p2UtAiAs`MX zuL0;=hcky3!umXFcwvOiU2D^EZLm3h&U5ERt&SQO`s-;x_VQj7lwVvtKImDefSdXa zk|UcpK264G741@*S*SDXv^S0@Cas#;y|0fE);v<97-s1_&_%V%)np5vnK|ET<0RiM zs9nqu#3(UU*yIxLp>O~cM&=5$9rxSl6aRJp{9Q}6?$G48*2Lo_lQsG zbYCckZ3r*b#W{TNjKgtS{-Zw+er88_z9scF>)?am!Oi<4!NKiVwbek~Tp0EYHJ0%D z3j)_>mf}gf>`fs~$S1q4^2*c28)%+moLq($*}i~-Lv#*M)W9sV(`bk%*^)gw^XA~H zSJWqeEF6O@Z)Am-!*hX$)_oKcyxHMoSTA@GfOgh<8kn;|U#{&JniSZxVB_%n+_w;GC8`TSw5%w13O4385t_J6WaJ5X^s)RnsZ%$ujB-pl%uFjsD zYC2TcSWOr8^TPrPa62|bter#7cBYE?o9m=!&mFfz$l14wT*%FOB}=zt6Kl=P-D(d* zDJRPn$r4B!l@oY8at0uKu93R6iM4$h!dQc_oku-{Tk+zv`4&1; z4Mr3NW8@v{BlnF-z$9h7O^1FZ36pf$=CgrjYRuoI58uzVkAH5Dt$xiL3GI_xW57k@ z<>E!Ciu>te^|Gw&7V*tKFV|F)>~@Hod+eb$C3|#`>pPE`Hz_T9jQi&aK45Nclub+w zS5VY6#iIlsx@5Om2Ux?6+RgcnJ@^LqeAW2|g+4?+vM^clNa<-O%zWUDM)dd)bTLpXC3MI%J~m1HZ6$JRZz|nZ zOiHe}+l5t5K0CRXn>9UMB~nU!bDbTM_QsJ=uC*#QpY zFqJ2h`PdJApo?AU$T21gCZV0(!6aJ9#MrxibN4`%RtZQPINy)2G)nGNcBJubZ zq%-Eve~8F?J+%x_Y&hP1@-w0L3vLaH@HqmEN^UR|ty9I>@r_+j0N}-J8ExOb6H11N zaibN>>w&qHK*@x}El& zv5m_nse%s>Nej1(moXW>JFjPBp{(LTzwcPjCx2X0 zWO!DELrM!r2ffbh=e=%Vmo2ePc}Utf>Xx2|B9_d12eGLhF>A@XO;?FF8CwOmGuA>O z7ONS%9m}ij$qmUv8JW0b1*MgWlGmH_m*bbG>KF6=V;*(v?6^Krh!~0_N>bII50J1K zTLigw-69t{B(t_LJX#W?y6zJx1W?dOWzEF(b=kbRO?5~SMN!=C{eCcJX; z%%U-Om+!c_XsI5K4)^mDbe1ncrrI@v+l@5AhHCMLv*(oTsHu_iT%k{qcNWttKE2(N zVy%;iL@l)6_q@mLR&`?|hb#TTxV1`LRC6=>kW#6?O0=K%Tp^^8uvE}s)RGSiii0*x zO5-Su9@*KOjc#P%vGgjZh8CzR7TEX@>ENQ$J3vCTfk=F(;K3{bd#+^PtyA`VA3!X*8Zr(hGnlTLZ~s{7K39d7|WFP{pNQ!$WE5%QB^J#CxwL~BHE zX~B*1s9xA=*u*dWkmevNScb)Tk#RsTJ}Q`vT-cYLGU>Se_+$#}dIh2l2z9OI*P`-5 z>GHMYW?#N}EY~*L{$ZeICUIP%fVy+@QxjV?KMWz6!{OZ_D4(Ui9PoKGFGa!MliyCa z+MTP>7(Z1O4bE3e<=p>vZ{2)mm^`nAMa~#~lk2O<+CEmYlOV8)QoWdY<3)6yXg;YB zElm(=DMHyc$Q@m!v3G`qY*R&7!1m<-YE9f`SBtkIYSkCe;`yB8}g z_q9Wq6TK4`Z7W@GD_@S0^QZf(mW(Wi-N@)%j?BkfKMr&-ie9N(ivB<+{#XjOiY-F{_^~Hmf#<6c%fV1)>ywI9lHUTG^(avp5&eY zdK>c!N(^38_vBD+yMzve+g#9-`k8Mdy_c|2uThS~On}bmc*o|G4+cIHznE-l4!hQc zvB%e5opH;3uhbY#r{ofk?P^zme>ndG;7BapmTqu?BlfC|EPQJZgbT2EPvl4%yW%A7 z1;4`I*^^sD@)|=^UfsfZuoaI?pP%j-*wYa*8Yz3FrkFsMuXib|JRv(8A4_K^6p5GL zE}mh2!f1vwc2L0G@W15oE1oG>E1_Y!9}3{)VP+_JgPX@Y(nM0vJu<-&6mLW;Fibr zajL578}^LeR}09kdjL&w>Vaum)&pVT*nQ7QMEVN;oZ#?b$@|g~bGA5hmr?i6ER>TG zhiSGWXEbIVHgrp8pl)M|_)5+BR%6abrd+E#_CR*PioD#a9+@78VJYY^t{#9{TY@CE z9x|x?dvtyrMuFNW*JATIG@B!9*<8?_%4(zDr^Iof_=q7$!We@fgcp)CBbw?ejTv%_ zxau|F3Hnb*JQbdp46hKg^lFAQeeG7L5#hM`AV({j4RD5jGq;Wk=#AXkNBIEHGZuIr zqsc}F3(!__i{pJTp^$yYxa_qr)4X(&;{Ww#j1 z&+W6l8$&)(I_eE`>&KXVd%w@gt3f`mq(H&f)}yqrco^-}K_)b|zqsMF#Hm@#>+(4D zUq?fM_17cxd`|hY%j6}fbJNv-4r7-KLnVs1F%cT;?S@WLiI|8 zebqb(b*k=>K{UWCNES`9nuX{fxVb4$4yCQ@IIGbnzXyNKNo27%&Rllk(A{zU2}}ZX zaZNQ~0{(iPCva8{kc~pdW!orUEE&IsA+S0Pn35Uh&A5NwAJ)0P%0=bH^()i4xCJjaNredh6?OQ~;i z_2R--_Qtz2m8#TUr*&rA3&C_ljACawNk(w0bl+ACau+g^@QmLd5rfB{Lj0Elv-x2x-4)Ar}b zX>=2K8eyEtx;}ClcNUH4FK*-fH5$J_2nLl0Ma_!d_e3pBEk^=7 zjQcgP#_*@}0L1D8o#*YEo_l|sk$>TUigI+a}ym?RCEA+NoS+Wp!`G8$Uzbz0KJYjO7D$Yf=(rkhb) z&5eUK3E}t)V?|W_{a=}^UvFtB^$D5Q?zoQQg%Ck`+XY0VmMc}mdzFp2u21neA?M@c zW!M}ty?X5{^QSD5t>Qh2hr)r!cj1p)(u@a`Uca96v$u|9o}=SD5nn<-(meFXuC7a= z5w)*(8)tN7C{sZSc|5vu>Vt^HR@j<(=J$NngGglN794B}r<3-(_nTbubEGavA3vmJ zx)-$67$YVWOw`iXQvI+<%jBq%#kT-|ex@J?GbM?hfIc381$h|L%d!+a;058Mwr1We z{M9Ilgtvef{9Ql(wl2Tt#U>*?F8yX|*aa3VNwZ9{y|I>ZirZAQ{Q1nY83#iQ@Svz8(j*Z*RwQ9uDQAo9>Pj-;^uj=bk`*ua(l1D&s$>B%3W z(yw+?Fn<4%v}Prq?(Zoe@VzQAPy@SiWaHj{AN!+TnuJ9+v(|rmUJt-<0PxZ{d-#vr z^sng(l&X3SNDTqkH1tGU6EM7Sr1b~!|Aj!GF9O#Tz=Q+RVe-cb^H;wCyAS+J3A?Y% zrvLr@aJzr_RvR)5Y_)&7`1{8+lJ8$et+c!u`R~ZP16w~J^*G1L{G$o`^#B2JfY<^A zRJZS7)_());(Lv_h<#R3=zkv@0TjCe0xAM2Rs8qW;rAdP0R=Mwee0rm@Y#PKOZpw^ z%_hO(i~MWe0nJ)T{2nt+li0ieeXImU%SfBm+4~v9y9KxjQ_#2Z#{@2 z`Tk{u=C^-s!@qj|qxJWgxzIMK`bFmZ4Ty_Krb&m4{C3>@U;bPWmktA2HpbqGkV`4tD8d9HA^v@DI#}{%imH3al#vDSZ=}bpZVQ!-y2kjWt6}%>2)=g z7QIOWpKMH8%)fE3-$QQTC$J<8hO?WL+lt#|IF!XVlv2ZztmE)BI!8pM#6b}Qc<35j{$1_a~+)%JN#Nkf3jQRTD*Q^l52Tr<0!m(!3DKyo! zlP)|=LOMg-FA4L=b2EB})`%}gm7OAWA-p9Y9jvBd{;8X`+X)!YWWkmpZR!I`9Irs` zIlG3;s<8&?lkf1&8_j2nr)7U}0bYOLeA60W|NLX{r&sf0n^T|N7Zoqe_(vVfGhg16 z825xW0A33}x5q4CDT~P7U@})puCZkHW+?eTzNJm2S?dH;B4et-OC?im@+ocrEq-+Qlp zt!u4yE$I1L*U$O4ZuSB2Q9vCWi`B$|iJDCwX5$8kq|;X_*8 z#0A>UmBsY$g{?y`kp`(lX;9BOLgX0ezx@<}zlrLvTqohTCd-X)a5Ev>p|EQr^3fmG zAHubo8vJ;JReCFB6X$Ak;+*+oZnl2;u{A~L%%GxoQXXUNxoNaNDsAt^l72HFV94j< z>6fxQn>9(HXG1>tnj_wlGTM@EcnY`pk%r?do;NHMh#_I3sXsH5r^aX&!Kt2lj5{8) z9@Ca0nbtWP>2dt|GQRsEUF+kTMn=3T;UyAE7|6H4!W2et^TnR$xYQ*arrB%sjuf{P>J?ac#?x@SZb#B#_lodPkenIZ+$2Bd%dZxUTl<`8F?h0| zx(#QjKtlgr($DS;00eY#NB$Y?#{%4z1FAdo6>?4!mZtW6stmZpw6Xg)P`1tZ1bM%8VRWFPXiN<&m(zUv zjp`J?0n0Z45VEC-9ZTE}+S!rtEW`iMx(gPBMAxO!pJcsl7Ok6SxLH^R71U62mbC^o zv+`0JZYm~of#V%pwU^!!ONS;D?!io2!J8Or_G?Z3MgtRK0(t@&_QO0>tZw6BV-75@ zm)obLeMOsoW@Z5Y(XXYRKnVk;_>&Y9& zp*U$8=n{b(q6R^CyNB!N`q~`}N85 z-s?YbMKm9942VC%m(E*vN?)$vN^k;sfViBnrf+n(v?B~0PjXppD=9Ct#@)9CZTu1< z>A`C-C^h~WFExje5+zXHfJ3oll^6Z7|0L<*?Q0GVOG+Vyc=*tVDQSk__D{;s-hQi| zy0cLB=!y(4+*ac9<>V9`%ldOQn)sq}4U)ec_Y_bYN~SP>B0pS71x*bbRbz(!?q|Tx zbC>-@Qx_Tr9boyN$QAH;yMdOW0D`$H<#hkomHA_~V=4ae19VSh|GPQ`AThzp%1ZrR z$SdOB9q`76JFV2e1fVSOxmq{!e?G=I@(wxn5$R6I{>#Ar!GG)rzmT_tH$ErApM&e~ zEn0|v0bS0A@!Tr^6Jh}>N`k)z7^Uz3N6hmNv(jJoKw+f9&7;{e>CSzW{^j ziUuY1fBx{$7r!8>@msBDwEsDz?q87p|AL>|oh+I}t~H&vHeUATAN2jqwrp$=V46i8 z-2f>Ov@d#hN$-)~@c-JJ`r===VjtP>Wjr@jyV9a3G~>ab&v9T)GSnq| zUu-0*4EzWUBjrUMrhQ;Qh6=n=Z3K14uQ}nzSa^`omS4y=#;C7~pr9U@_7VuEwgkAtl)^3nLFD>b3&4XwEN zc=OgX?G*dXS9Ob>q>dXM@p+}q3;Y@1&e@Jg97zD$jKi|iky7yhs7waLS61Q?|JDo= z*&)1Yg{pJqJB{P;zmN=vj}(n7!KC?~eiPI%+rJfFiXn}<56mAh2S=v?FJnFj_O^&B zj;oDdoM%RCTKDr>q*v=N7Zj?g>y>=klvY!XXEtciv}ss$pWBZzC1LjxnCCdTikx4% z@&TtKD8yseV!#0@4I&gE=j*-P6O@aif2+Tju%(ivT)LA?r5qF2Q^ z3@}|ReDd~?x%g^rlH0-P15-UF@e5PYz&iJD3i08eIOSAc%Z^riH_0EX&}~SHT%>Mx zDU68@t+|wuKg+n6DVolC2!xJ}6xPvfzpQf19**j{gY6AS4(E>HjTccR6Rd=iG9XUn z_{Se zNB}dh2&Q}NOOoQY=GeGaM19oKHgnv#TRIW->~%mRM9d9Rv@Gk!50m-2+sws-oJ8Iv zle9KlvbA<5883=u7b9(MSMincYz4=O4==ZNmh^)b*RnB1w%D(AVhj&4R>6jJ4%xqE zx;wF?V?^o3p`MFin^h{D4GGpK0Lc#~jE7-7Lw)$@C|jXPgEVzE{f*xD+*g&ApPpOR zrOwrj$I=uiR`!f@W~$fSJn7mTEDawOX;@y6>mJ5l6Vwr#E;ft>gkMb@o|5!0#T9E; zzO`nkvRM^Wsk7{UMD6adqY%D=0@?R5bk^;beQu*}p`RAzZB3yM`(nsA$gvE$<8u?X zCk;OjFCV+d5>dACR{_i~ZO?WeZ(70^6XI{YonLJJsz`*c;p{u^2i}~4Fom7cW~ zR*5OAkrbo9~M^0$@za)hO<*-<#XL;u+A1W z0w%>NsNT4*EZ^{w+T!~GO?_FSV-K37KDqkM!q1kQ;L zv{7^ z#_LRdwYI480Jgezo$ZpAMHFik>!EeP6Kh`d~tn8Iq@iZ zHzn&XR??4a{3un$WVnzN`SYUOi7*4tvD@gJH`y8D-OFB^=3}gXU|ym@ZO5r<4~!& z2gDKQN&-#y3{=`qrYa|=#)iZ~_Q~6Ga$ExK@c!7Bj(_wmvP(<5YMm!ubp#NosjFMg z0IEzs;)QdoJ`%)qWvgKLrsv3hTA`U1aypR>OH<8l3UP0|7;~uG`#5vtQYxb1)i}q* ziyu0x@zcJ})gR{+&2s9vkXD|!^t0=aAVxXE4$f^iqa|Z81>F?3CToi%4r@nH^nQBL($d z3@bRc>CxN0tR&i}AL)$D4PhShyND-8L1V+lB%bU;ipnP1w(kiwWXMJ1!A}a2V@)JY z3;tdFbVmsTRvX$c@}o&iEs&|wcGsp@)45R3%{=L%k9lm=PD&-0%d7>N*@1*~jH_PB z%U9cJM<5+Kf65^zbb*L;*)P$i%Kin#$SOhU=SxC;s}xBhtr{MI*pB-7z}6TX|8u{H za1?PA=)-XMQp8r@64|XQge{pNgPu$;7RI9GekjNOdS@gv;|n;XCu1v=HW-eBzr?kI z`ZP(k7q<@o1^$5v3JMMD@FJLFJF_G`Mx2gwJ%POtxkYoBRvtNl7qOsyn`)F5%hz=g zJf({EG>N1fu`C~{j(Oux4{2ZByI`xd<3?ErRJNb;GOfP@M=>5-OZfDwPNn(svjWak zwq;pOB_}V@M;@3P66?v>KcAI#Ce=Vu1KB^DGn4%2SrF{qb89t@}MJTCy%Q zpi9W%_Z_|y&ew9rDuE734!=VL=_>$GHvw|G2wg9~7{2%*q00E|mAyxu$8ns3moDke znaAO)+ShW$8pZrJgI~o--n0e{)SoFsZU%2*_m`)YZGhf6^G3IWYXN0DNC?ZEgph`F zO)JJUSFNnfc{Guzn63}BJ@HpVuOS&DUEW_i*|2DEAPrOs0_!iscqM}!N0Un@sc1m> zJLKH5!yUsB_VH4afW9(L)wewjhY(o{GisdiQlZ@m0`AU!xK5F2sm#1{1j;?VVWgzZ zXlk`5hq$N59 zA5u~ZO7kbOLYTrzL6bdUqmI)JlV-rdUc8AiI<_!r+WzrCs>e*yF~3{Fao=jTn6NFZ zw0%u27~2RZ4mX^B`X!W$Rf)=XE^?vZW9M6NCgLmeOn-l_fneg&Qj-dm$1_{k(dIpH zM4NLZ;`b`64rMY1XE3NWZBq0whmo8t!Ys|?6tQ~^UQKy)o8Gfv`{VY)O|A(R%0pso zgs43#D~kjlk`oRIO{rxvt4&3*Gel?7BmpYAck;hcIqg4@=j=gbx}SZhfb4=<0g;-j z8j#FTe6j9x^{8=g_HdIo13Z3zdEfqJ;{f059H3d2YM((0sQE+!;@MNn#73$(_wF;AZ$;{owZ04YK?`-&CgyK3k7em`%S|(~xfwLC^ni^|`fUPX@MrMd6 zchIWS;eY&V->f@o62NJ7m;qw%L#H_nybCNWzOkuI*IMQZJ6<;D9me(NyjP0TJ|!DL zd;Yj!CWsY()s(K%M%3&2dZ2c7?bL3qfw`nk-B!ynZoqxVN^NqCy6$ZoaFo!BQ{d?N z0Vj*)z{@{A+PhyQ2moj|_ze)_In`7XP+#J6PhVZ3xi3X1Y~h-@chIhoEYnP~^1hd=WyH6>Q3M=E;k~bzg(W#Jc;_pShfS>(Y`+0IsC$4& zA)yshAHrV_ThyTFpEC4~jakcH@yU(rYH!U2&mSIu+@;;8siE`_k52Ndb2T1FXxbe# zB!oyj`0CwNp6xQUV#V=E*5|XNuRV1ay80(>Qzk;Bi=)Ba^T-@|elgxT&nK`x&BoCL zLPQFze@rLK<9|s9-?BR;`@0MesPF%O86Kjq5w*3oIiLGxN($W(I7%XcR(F%>3y;Py z82HbKu;{N0ARubK*867S4?XmUz`5ru_)n1Y5GT{^-;w|Er_KKfa`wj!7X5v7e`y%E ze}bIrv=WE^dE1eHf}Ee2)3p9G8hLQnyZOPe|CiTpdSP4u6&K3jD;B@smJ<$N&2az( z$p`Q1kPii){F5%@%W`+f09Q}K=zp?7SPcI#KD0I4iJX71;okvK-2P&y4w`%6_y1iF zzcWS@-~amXe@jCE2!@+q9MpG~sxY|4IR#`50s;4sgicC8cbL-Pj%$h1MGyE_FZT=0=bM3d z1Xe)=y0bZCi>CcB1`fJD8;KorKs$f{^6=3k0FUR0-0ZjrOgSkMraIM@Yd(DVNL5dr zy!+e9`!_JRq>eVyN=0fq@KY7XEv&a#DT% zrIJAVvp*W07$%bnCe+Y9pB&#EwyiE1PK+6x967&Lc$0GQ5aZKr?>C=$LQ=obpKl)n zoR$QK?@JhzS-oBb?coRe4*XLg=FZsoc*&Qq2hs$dr&#?@$m;Py%zz|>9ffog1>88R2c!_ zj9@w+T=M)zt7yOg*#)#`ZK<&4MOU!7X|%cgT3LXsO48rqhllhqY-*%5n|`6d1+s5g z+x4B;?tQ#)heS7lbLZZ=B-=0@{C*R?Fg&*RlB*dsRNp*i0$KCc;vVAINrP#Md)Qz zKd<$4pePkWupp!e%j+9Q7rdJ~LKbcQ=Un~qhzuK0g{$G(QwTI7koRwmZ{wlKcv5xp z+W*stU9FrMJ(_hn>YToIeBy^cv&A5dkPoQh>_PGv)_Jd90Ix~O(N0KH`0^SP9s%K(FOHl)UbQ$$$`}7E3c@S-0Jf^sc2ewmw3a zWk5X3$J74)OthT=RI5nK_kdo!?=*nhs#-}6mvxaB5ci?L@HF8_0*ZV4o}qad?`Yt;Hl6dYs|N7-M9jEr*!Q{7bgW@8nnNP zmfoyhm2UPtyM{@Y9x9a$BJcM*dy((2Vk7o{FBbgH+fTde@H;j+t4fEV0&b2R>+9 zY7`fOGt(mmrSSh*Dn-c9_J_cykV9A$N`duB1R}4!^I}+!>jne7_L?-+@PVG~> zA2L}@W;@O~`E2u}~oBF2{Xd4B4 z016-%R@9&T>`l0ZCD3Y5=CbzK#!lbn+{`x7?DAAao*(Swm%@Tr8)(Slu>ZGqsmliH6^>AIJ6Vg8oa4^NC(krK07NOStB>872w+ z3ggkMGkv7NbsN(CZHo$4y(XKKik7GEH>xMg#FXtxKNa~fKB*TDutm!GO#)5_ zmR?ps4s-5AL|&y0P*w3yV4$SAGIg7eC7W+$51UG)a?rIMK1rKn1u|j>pIF9<`?p(&cUkW#B z)FdGxaXjdue;zm^$f{Fi6-?7DHx?jd3-m`0cL~Ke)pK1$+WB7IweQ@c=g48?Jl6R1 z3o$8`bLSiJXn(gHQiM-K^3#bPNKc=lNapFmh=sAe;S3rE5t9Me+Y*gmDwM({o*qim zOxHhp9DJH@Z3ep;E#I02|2+@^_zchl%8qtyXD2De)8CsQJAuxH<@Mr1UUT6teOdb| zV_es+-2DOr{6~c%m$BsT2ZaU5;VQPDbsTcPO@6%gQK=T-sy7T*_kwe**XRa=4kz3W zGS6^@1%%vi$a~_kMsD3=a!=f4l8u+EL>y&k2G?=e8qDB*Zn4$D_4#jkiBs()qL*?U zWXDvDV-TNx(b{JyOT|DpRLC4};P`1o{{v`onm1IWRqi;ZB+1`4-{4jbBz+U2;D_)M zmUcn=w~X2%t++Ge^}V&?;^NwHAj;o|^3GPsfEx-hTXy~@!x8j^N5yor-B*a&y z1&fv*30f9BhGdmqjf(T*K_<+i=*=@1fD%{oZNjyBrzBiU!d>noe}UN?e26-ie`--3 zJ&jj%y-Y+vF9DxfsWpspt_$vFyXKaT*Bhe7y{uOH-Z2zZMaqV|kLstsT9l*#~Ar_@vEgQK+J7?5&? z@Hxxj;wtyy&w$*LGpC-E39NzHI|8S9PR2lE+4ZEx$XSJt{CUQ@zBW$>f*BE2yHz-dy5#uIsW-~-QMD9qmUPpdJ=BLL}Wt-EmuVM*BX}R ziz0XyvVF9i%5UnfT|TKgXUQiyRZUct4AZkUYXDVI*4|*k+kmg-ozbRA&W{fP-7*4* zZ0dWD>a8okY?uRWogePLfF7V2M98bf29sHoMHhNO!Qtx)>#H!&Kz+m3bY?^&+g)t6 zV%>9WU$(1d*y&!Uxl6G1#JG?s3^Ys|mm&+OT0d_v;|d1RXm)x3f$r=Vcc_@MZmRDF zD&no*N8Y4`Ul85DyOcBh1if10^{igeV-=fQE;pTrOc##RS-hK;ySJ$yZ-0EyKJ-}_ zS34}3Y)XY_+x7KI&A*@ZBLs_NJK+d`rXp)h%nJsuVbJDclSS~WLp(nlipfk9hS08E zf~QTx%5|gl2vJTB3M=-zM?~IBn=UC4>m&*Xxx==AV_b#<6v_aN7PGb^ytE?lb;9xh zx1Q6pbjYX?XibM9Q&3tui9(V43vC#RGYWp-r3M z3|&N&@MF+hh17UIlqb|(ky5-EGcA-@-Oukg!#RPb@F|WXujIjeTa89w!lcZOCM$EZ zYSoJCS#{noB0!(>SB}Mdz$aUj#xZ+qBcrrbV-jL-uXx&HsQdK0S;Ou`CrvJ3GTUGo zN_Pf%u|p~9e4LHPDBK(LBVqVoRA#mt*uej#Err`%D?ooZ4*J6sjF!_0;dBM>TdxA5 z&-0+`0WeVbWbV02qo$^wzc9uuFx05g_#nqZX(8RBz;bMEE>lvtLERxdEw^|^PiZ-- zJh^ICV-409nHz*_oAz1Iyud!~Hm&iQZ$yE>%-OSNiQAEWwD;R^BDrbaX_~4qB7n^B z3m(2;HG^vEAQgA0Gg0APyebaTf!6%cKzgC`IgN_xqqd0#B5o@kmJ|XCrAbmzOyc=K z?K2nqXNf&5k&z~;TWkRB~Bjca!%`{B6Q_##qq~IJs6M9``IW< z;wf4huQ};G&^hzj#4$z-FEs)2isFYhr#88O>z)Caoe>0*$dylteM@-`I3IM|Z{nzm zx=WpRrWwU#fGWH=#5(1msJKv*96r{X0JS}A11ga;@c%(pRYSpj9IjtspYEyolplT(JKqLD5Vhz0qj=%Sk z&<%5(w^$`Uw9WU~0#!TROMu!yLzJB4b4%_}{}-_%Iq63g(dMV&hL{Fl z2jdM#CnDG_;1Sp}!UO!Q2-pzqsbnJ;sdtD{E%XT5!(eiX4je`p(49$g|7}!;xCM7+ zXefGuEFCy9KR;h-I`3RRs|$*!WumDhFCQK~1Gc#z3=%$04!gU<->Zce0S^Kab&Rsr ziC87?9J?hB9O7Tm6J18DyeJrppQ)h z@$CjHgOIU_N99P=mHcovh8)3T|9?lM&3Hcq1Y9AXmt5;Fb{3zwo~?4>X%MvLp_S85 z;G^9?&(Qa-_SZ~*M#}CqCJrBO!~_^EUpbjmqc#mo?5C4RnGYlEs&aE>n7yK>tZ^vr zH>1?J*LCAE@ThpcdI3gdM7`ltkVK#vGD4{d0cn?MhcKg{pumSS1F3SP*a*09 zdB9Ek|Wscl+?W znR}F^!BG5n(On&{D>ERPEOfeVq^ZeY5H|u(4R43%hDeWHO?r2eZOs_#5c|u!e4|B& zaQ9X=U;)TI$so=w1}du7L^2IjX3jAwR5oRUC})ijj)FHC?nQnw!?f^RqWh8eP<~%6 zwDh9Gt5iXt1CYf+$;Y^OqxG+)k=~wcy}dF+!b}8S^|Z^q-qb^tD!i*XliC*hh3mT= zN{f_-t9_R#dK|#;&!2sL4BU(h_r41ZS}3Fz^RaLh2C2^pVbLZns>*$+d46t|! z5DMTUvDevh*3xx?ynlW+@cZB0ZIdfJNW=X`qDvJO6}C=u*T;A7#%vfd3qC?dYHi`5 zxW@f^U$uxJXlZHPJZYIIP8C&FRxW%hPVpcez7z<@K{g;4|JOeJJ07fLM20#=N0foY zK_y@$|IYb8e~aScro+XCvx9Sq6cqlK?|*&u4u%GJ=*j0~-2d@qV7@tk9fb$^-}>dXoFJ*2I}U}fjC6W!-`Q}E-pEWp6c{fThwoZdzMLRgYU;18 zOd)zVUsw0n`0#W!+-{xc_`#zS=ADrN zl9QOf~r=W0}vW-+BD<{|ZF4K+S z?)6qYMySXyUKTEk|NAz-%8R1X2PXuKcdPl~UFL+a%T#IYtsrA$rVM`F8z<6?)&JS< z5KzkAc|cPk_db{bOeg}5rxXw1+PIo(_7MT*n$ajV8Br?TA1e}uW^I91OT7K?-=*YA z@%fPdfy8bhTTPxE{-SAHmb+1?)$KS@AePGD7A+sPiX)1s z+X8={DvCxyA*3eppk$r}!~M1GX>2ZeZY`m;cFVn_1~fbf0u}@~!&mXNRm;HmN+h@j zvz1ZJDn25fXKzD5a>A=_z{2qTC`N%b493?;)jDOqS|59;`+d<}_Q}4CZk!-$>nAb# zn^7A)h<5MXYmvXJL!0*gMt*e7{g~NR8@uP}7mF{C8}zhk-=XaSM)@94THJg~u5PDm zZOzI;06myc^Uk+5ShXGwVchgSKDE&K-f6&2K|_P+-bnu85oQkDe$nC6n>$NEiwK#K}9_M9v`(B7hB1Y{L0D>F-Nrjd@2^XJS}Y%CD91 zvihr6790lvba8Rn?_yhJoSe9O`}*R1WH`Vf?8>qz7#RM;W~$SP{jbNy#uzTMyQxlP zqG*|zPz?7BG7Y|2p1nX0Y98@)rZ zh|^PdD+L7Bq<76QXorRG3)_~E!JE+W4K}eik6#pb6d|)c%+$lKA(ZpPoy1InhS;#`7&FI4O1t)Q| zW9~W=Zhs#J-7KSOgaGEg(Zhv?j*jOdd1Y;l>N(Ih36d2L-K3<(gu#`c&V3)$Fc6|M zp1_EgurFgSA9<_jXztdTCS-wzc!dv9#r)XuR5)C&Yn~7WebH`@S}Lyj5(lyfCNcs) z(jhELJ=A{*e#sbgMF0T>P>i7Sb|raP&7YZvfcoF|xuN_XV~q*otQv#zb7MAAp|SmF z?T;V5(KV|cjtplvP4>}l-Ox6({{o)GdRg9Q@ry6t45q4yeW-KXc>mzh<8**;4gsK{ z@t7j@#-jbrm0MO;76ls{CcQ$cs-TfcO_X~{Ru;`IA+oQ02DI_>p0lv+emL7}03x>nuSBg^2q z_2yit*MV(9>{d`>`GV2qN;BDD&Na%T*`K)5CN?-9Ez1>mJs$@Q!&)Yztv?I$x3OGvlb$F=k?ZGQ(4%!qiaaONyQMBmk zv#ANq{kl8u%_o^0Fh1~YR!a7viGv?8JE5As<-S1P5NND znMXT9mAl10@|e{j&2+x%qAe+K7#(GNT#znrEn7R*dyMA`9S&)?4<8m{S5n2xR0s7% z>8Ct^%K4G_PrsF0Vs*8-AnjfBcB^A>miBtw5mTc*HNm0J*t1MmJWp?xqYnNumAlrONmKTA6pbsnN@M<7w|%k@M9CN()bC!dFc2X0H6nfx+0#stQkk? zfq=e1Y7IIeP^jHXH})F@$;l)d@JDhX_jJq2l90*1;Y>+fZYaNR2h+})Z zX2a++MIoe2aerg<*kRQRI$T4BBh%Zp`> zoclC&HT?2z!&{ncAGv?HNu?*En1Kno^`X@uDGs_)c0zNu@Brd*s*3KAlZ(f2Ec^)E z>_`6B;~BQI1`U@}uUA#QgFzuEPK?mJ=_+@zAVQBkR8ZKoOyv=5tCl3S{yuKR$#4=J zCKNL_5KJUpFS_%^90_NaCl3&b*+}U0_p)_KyL|N*_oN?Vr{9@yDj`UgB2`*k>{HqnouaTUqjR|T;v5;e8&wzxl)wuH5evfqZ(oekxc+V~Ugq}XGd z)}6sOU`^-FA?ziva9-@LFwLyg(cH2s;kGvNn0GWk21ZvMy+H?qX`Sa^5MnhF6|GB@ z8+4YYoy3&Ip3*pN6}Nb7Ec?5<49Xyv`DJ!0`;W;}zb!huS76Y(%E734*iMi=*MS4s z3?7-^rt~a}e>{`Cno~S;IN6`rd01P6#-?nY*g4TXdTyleX}$~u<2E?5%9=^or~-uc z&*}ewIAl5i_yLzmcO(lwtIUhONJ_@mZcmW1pOTEIC4KZJCtC+GW1W=Y>xCvSX>)Te z0qp=HB$_%iL7l7_XRpEdi$zHrAr-QeqZ7)haXH=RRRV;bVJ*v7qWTL-630yDSMG22 zYa6YwXV-?T$J(+o`Wh}e)x8d<_okiDa4u`c9L^Z(^7I%7!2Y~Z9Zo*flybu1+zFus zUDM9Uc`#^xtKaHVQ0sir4j;r5XSK35oWyA;xL~lg0#!-dGuTWnlNJ3z9Xfa#{%9}8 z@@MO}Nt-qo{+V`pp=j8n7A&Kdp3M)i%^}2wvmf<@N{;!qGY#LxJNgt+z!o*!pW~Gs zwNkV8)m1yN2t76h;|MSFP%JHors17PQz=Q%iN{Q^NK%c2POI#|J*Dx7&%WjD2)2=- z{5hE4xd1Z7no52W|3f`S zmqsn=-Zm@q+rGW}*ftPQ$wfMxt*80MD+xip@q7)_ z=z5C!OpaeUDiMP8O4fm_4j{cXse7`m+}Nj_Y5u1G&XtA8cHvU=q05bX0aqY=BweB3 zmc|u~W5$Fqy$1`c7im}7y+xoz_W!mE%NefZx2lk@X_R^*!PX3IV4c8v_OJ``p}GJ3 zp3KcYsnygzxecj1TS&p6(RtChG^c}kZjzXzlHbqH?TqT{5*QS)N@#2cub-~!BTA+c zl%|53rU>oiIQ;Pyy^mET4|?yJJ+EKmXQ2g-*8q zvtsm!I~rTT%)->MCnNq2$E!@b`^B6A?&DIMK2xV;RBwG3!Fsss?gv>)NL*T`Sp(Ev z>t$7l&{pBdcTW*3U@~fQ_%=Q#7AuKgGRjeH2{*>6228n#;&xxlR9=5udh|gUu@fsZ zj|dX{{Lx_R(;T*r@Nc(4CUq&prIKGp>lJxUbsX)Gk*R#~W5sN2`sO^!0wGsr@i(+1 z$1}ops%-X^`@nSUS|>W2*N}Lm!b3*(qAAO$5abVy+c%tBf6SBX8l%9u87S?1wl=1T=V%UbJh`YhzdV_)YLf0su0klfD%4gzRzhIRPaP<(D8`Hl7rrA%<^QzK^5!;RKU9 z$TLdPN$*ESrE}(<2ME1G644Kk(-CRS%Mg*Ux~xINfqZ(~{m&hLlO>{&{~WF`fb9dn z$I~;}Fe3(yWlCbw(9kfvhaR~{y${9HS~=}wYbL|S#t!*G)eNA@qjynIbnamrgK_A4 zt4{kGU{P2HyeouLSud8&wk2GMEGuejA!g2}E`V(~gF%3V^E5h~P=u&j&x!Y-SHbAG zYBCaQ0#`@xTYI2>6V&iJFw>>F2@f*;jb%~vuTLqJ?gS7xcRobJv3(Rp2ccG_R0u0) zHT1|eYMyPR4SXCB)y$hH%fP~-+D^z=m)BLG5(Jak@=loY03iP@GJsmZns%;O-X5-x z$i4Y7I^z7G0A-7=w1nUr!Hg0q`WfpjKBS_xFKS!%>LyG}YVe$ZC#sqDrLChoQm?cG zmZ9YTD=UhJDQ<3SuJXZ@=f81soOd=FNOicm+{KRqqcU0`M{QQZ0#IKWg6qwFN~_|m zS74&}W)CsRzafeBdCE^Q10Fsd#Si&AQdD`&`@eCbXye*F%SPqXLm(Cc+>!Y~Je-UlRuN_WfQ{H%Z0%x|Z`Oy0j$ZQln+!$=p^v2z zZ3!#Z3~%e%?mzQR4Wq~5HBkOZBD+ELxPLCZqp<3p@f(BryqB2Iro9`F6E}aBC2-i{ z#ZI_ca;T-+UQ(YKmh(jzlRh^lj~&gw^lH+(U)6Al`OTh%)cs6wPNbtk)F;Ghk@Tfq&oCar8cm`&Zz z6dW{S(f*9L#rX~e6VzVGE8Drup9tbokXXdm0;T#+! zjOKN6CY79!7#{erDm97+tN<|Z6m@yDnWi=$9o7djRC48|q@{6eC;Q(1Xt_`OJ+q24 z>cW<>muVeo%4wZ~ z)t5JqNcCAebk!V#3DDjx2#0GFmUiY{zA?%;Xs@ve$2`d8Eq^LoG+?X(ugw#@n=wWIM;-?Sq>Z6AXgz&gSNSt3>Nz;)p zIG8Z66*cL+lC~++8sg`|CV;R45J`*>K^NNxL(c;)zUq1lG~OvnYQ6{k`1FMcWsq#G z4`@WdhstVZrp1yMW@{655IU&qiqxA`v)Dt<^j?Pgaw~YK#9EHeprHNp^V=U<_fE~8 z9)5PV0N9JsbQztnS#H3crlQC-Xhr-1Wy{KTLrjZp2pZdMoFUxh=^j_FtJYyOf4@%M zZ1Zx;He9RA@~>e)l&0|5@+=wyrL@0+*0)0oRMq@@=0nc4UWFfL;aTt?;BsF+Xne~o z5`KqD`u3N*@Rh)H!$Lkcf)5{)1;OEFcf1olz2vL#Et{B~=g!+f!d@2)_z|4Xp5fn@ zC^j3bcd@-CKwhHCNkL<`|443Yl@zfUGE#U=6!Ku~0|n}% z6tJdC7Bji`K2p8dhE3l!nF>7!+|F#f%qmH(a=|HE=fb;Yqx*prUD+`);QjikVViNj z^Dy|t+L1Ap&Fwz#C$dy_VZBn%uIH|Y+fJ@WCwdqj)blvaj&GRA`%-A;e>}EFX5w!} zTYZ9;p2t}2NTNr&e~jl4RWF&Oq`ahn{RNNq zIpL!~c>cnfo**6&zgT|W<$13}}sAXG0>eCaQ7!blagC+o&eoLE}gHl-lFwvh6sME9CWkIY$wuy)m8>uNHpp$w4?J&J1JDF>bSvTzQhp(SlA4(i`l-@Wa_ zmV+K_5p*zwicWmQ&gmD}Gs`vJ*gqf7mi#_=4$bU{N+|Wa&6}9|6S|{>6QoWHKg!D< zwMo}wGIPyhzZd5Wbu`T(p+|x2dp{N;KOHb*Qf%+`kgp+Wy7<_)qUnM z3lZhno92l9SEtB8TdR?kQOyr6%6384(eIe*#u6+)U;dbs_J@tGe^FBPeymoB&#qIT zR2Ty4WN-`(kxc7*NKt#Km|WQ179By}_B~nPPcmI;h&E&eXeysJ2kIHQB{n-*J6W@bX}u_dDUMB+9i_5jP-N!;G>! zqaJ-jwI9JvG8kQFo@yVz`M$IVo7#mJ3(`Jg#5-wu){@*J$?QzMG0*rmw^kHm%kDBO z`$y%2OAgC-SD|czb^*e^@849R@yzW7<7jgc?3!8!9JFfp6jB`K}7?XYo(*b0utj~;9@7G2>68?x%#dvhFdm2oaCb)sBG?Yvl;2n z+9m97OO$3OamsX_Py=Wb(}NKlzxoPzU+?Yky*K5E*-pxofOt^s6Z)f$ zCcNjZ45XFS~Zh(whm`>vZ&pQ>S+igWQF=X9i$P0r$)DSbDu-OIS*~z&WmT3 z6^A4U^s{vG2S>~~sxV5I&@+kFur#zEM+|m;$2G|Yt+J9-^d`&K`>$$pMg541HzM9B z=Tf?ibWNQ_B!P|SiGyhy-b)Cf6_QM6)-`(^%i3YT)CChBzexjlP^Ho@Ecs~-lYkfQ zW!!;XC3HvElxcr9*|9D2UYMccw+W(Bgre6Pso)bjZFA;B&#KQpj+Kdw1OSZ1;zQ4x zb&TX*pAcv-f`X$r6{g?eCYXH+Md- ztVoxMjZ{8P3Rwvp>-`%4i;wYF;|LCo^w2Rne*>tqq-|Zby=@`-YYn(ei5kroNaK(a z`zo|5x18_4e-totXV%SaE?WHZ<42%CsAZU(c#Wx%f%LB$k+v6Dwhv;P&4*#m`wshE zZgEGU4KtJ*xv@*^U}D1|bUu9(4qXw)=GS@9b--0n_{{8Z8Yz)7op?v7P&(iodEhth6% z=EGRPwzo%fl8N@}7kubRlI7)tG)guf)#{L(Q zo&n;8->Ge=6U}i~m$=i>5`oai3sG6wP|n$Kg-Rxg$lN(f$JXBmaYM<&#Re_$aHVv? zP(MEynyT`pO&F@r0JJ2eRdN|IL+jym;M6kS%h?vwZq7e0Rz3@gxRyOKb)ytB$@S zRkDqy4`|K5c88VZNNm1`87c>Il&YdJ#{rXiEXg-XTSOO8=rm-1MuGB{p(fz&^^a%B z&(J7*2AaRV6UBI1^#Rlu&AIL;)xkAh-TLz3?;~P!~GZ{*~(N-}n4^X6&hzuY$ zt~C_xH+0+8Iu2b4?`hGjgU%c}^!62}06=B8gpH=b8oTQX^2q)}ozQOM8Y`i#J)WT3w zp#8EwNjWSgZ;Q*&Jm4}#B&C?dBxLA)z4mJBJy%9}Yp?H?lf43}PP+W`aWPWaqynMq zT>yTS&8`@-Q^Ixitp3xp>Zw4f+CrXR#MY@X(qAzRQO4+IQNLQ!$NPCU>GOHdQ3>bL z83YR37>DoiPiLCwgx$3ZEGn97qw0E~(nKH<#ZNE_^jpQGy5@a0Gzp!v4E*(ZcpSA{ zrJ^K4OGCops(bjfd`CTK`(uPxYkO4Pt^(Y+0t{XT5a4CTML*DekM;?d*3Sq#H-%F( zR26&)to0-c;w*|ac+R0?L$&~@UHt{J1+!*hS>0-Ki+&$u!#k*rpe1IB4hLf`W^C-1 zwb?wK=L2Usy-O8juZXBBSPskQAWvSGr+&y=lk70ZA|=i^_d!lP!Dv`-h@bz-voX%c z$ylDKLG0)-p+#lp^?Sv^aFGl*ssGuOLjPI?CZ?tg;m^5j!!OKZG(%0GpGVHsbahJt zNCp+_V?>4pK^(BMh@k4yT7_>+ZTi!W18~x6YOznUWV-96Mj5{$qi?SOXqb{~{yHo= zqd#ms0kP#nJrZkFC8a+I79&eF1mQTO+@4aQ2Eu%%$jAHnoTYrvTWI<5r}Xu#7TM~a zSk7dfBSdIjR1%M@d5re|1YN9R{e}4!7li9k%T!5*F><8R13+gQzq6X4wuu@fnO7@} z@$Akt5t8rLwYjy$&=oPVMcEytaVoW3hIHn1y6aMd@jGd$C58d;<^vs79g2hsg8&qP zWh|N;%gmb4R8W@-fAoemZz!B$lz#fx)L~0 zFAl0uGt|pe;N1x5T*}y}rDhe#vkChVb0Wa9J}-k(G8DR8Dj1@^@p?q$KDt2g&Oq)B#Q!=296X)N6f<2UViY(#{N)#OUxF=9C$r>9iuBJTc*Uvj9&By}c+yJ$ z5Tc?mEPj81p;XdQ^kmSyRZ1rOLDnYi&qy$J7BLr}RB_>>0t2o92?zl0dCRVW>yKwE z$nfA<)~nvp0mBNMTT7tXIQoe4NGH4HKI`Yl+~f~)`Wipx98LH%EQ%(`CFjNsg`|v^ zg?!#%9(lVu;mHk!pM10KcymxwTXx~}AxdEIzf&YI1a6d~zZr5SSpn640H0{#Uk4Z!} zA!hZ#JDJa_2H;(GP6%slEKDQtI&$Nc2)pBe^Bvu`8jkq`0a=Y0XBw}{e*ziC=C6@PUaCNQjJH|s2(t%omK&o7=33~4oXIlzhejgEqJ|K-Y` zKUMtopMjGw|BZzZ#51rQM8D};Ci*2QX#mbo1bsdM&@yRanJYM{zM{o~?m1KXmj^3a z`VTY8RXIPIMLbQG0m7flk#{@)g55HihrrQly#P9uC!a{$c30i3YGGmVMc<$9H$CZ_ zASxOLsx4w!Q>sM!dreK;!vaSx0BLVsr=dY7BJz-}@F@Z*P4=Qq(ujz3=p3nwi;LIj z1>^meGy=io6ZfUs)K1;s|8aE+lb(^Wxt3&gCM8W&PfxGLpoT{8b9Ojcw!D0!;lYdl zY43lrcAxx@wrxMD=-^*P&cA;JmL&(UcIcaHs~Lum{)^E6zCiTnY2V%|8Qx2|tlvAJFnm_&>CY$#?0nqaTZvOl)=# zNTpcnl$>M@f^U#;DI7=MdS07XpZ`LnQ>XpGDiZM+>E3lcMH`X{C>Pb82sljO-*{;~ zm$0H%*y4iDCPAN z%s}lGr6sQrx+`I+Y>x4QY>_Ogu2L9H@?M0t6|)-#kaiqQVu&;=jKhhe3wi!-sK9eg zC-=j6@B{(|cn`#%hC)FhMUgS5Vt2+C^`7|Kq%j|xW)hAf4L?6-6^XH7AUcHKx#yFZ z|3sMW>O^g9R>f7gocw)VY z+}?WCbv${$nIVpia1Q(hFa=KszL4<+{xaRmtzJzT5zWBSetCPN6@-9P2Fb!sKZ|gj zL5bVWIfmz&TyK^*1aVCdyH1Y7A;}cN2&{19e}&H{ zN}?DL7elE*q{hh-Xe=lo0qt{E2tfuMN`K}%x)Q3SBF3)Ie5YsgH1mJUfzVkNg6HZtVK>c z{3C^pC~Ga=sUx3s_~~_}odPLwR2f}3yQ@Y)LWAf8tr+HlS&r-%kW^Rh*~Xj)K2)TX zC;RI|%y92jZ%HLs({k;$rUmt8Du4b}7gDTf33+B1h)L@a90H<@mJbmNF!_4&P(NDv zbu6cNDdK=LkG|q{j#m;!TeFj&j$2jSS0W_ENHijW*W?BzblkIxrb&5IMI(0r*{(WOf&r7EkCPYDn zLP1xT;s|GMe}{?_nQyfSjz;M{-~J$71@{Hsz9$S*86xV%GOVw{Bh^Zm#jZBXnzHtn1o7eQQsuh`auC*Sa-LZM1 z@%BF4zwVlJ8LYSdW?qJZvg&tQs5QrZzQCSEh*obQdc{DvV@R8YAbGf_{<+Ym(X%hR7OSHz`F zcj!NNvAbTzWzseiZl^|>+bZ>Z+Kd{Yw+K#lz4*4tw779NuC!5sM$J7ALotDHbhvg} zzY@HkehsDZ#CdWY!JohP28nXlj~OuFqNC#Rg@J^Z*tscuzabQ659``?P-CtkD&xf< z|LS;p8;mc(g}J_Ae`^9VTIkO#uEh4byAU^##1E5GC@d@&vzH|}8^g=eBX+znA#MJ( z=W8&MOx1&H=wYgace-LN(o}F`y$7!JzYMu`6!uxTbz3B?85GFie0QPV)opq!7_mp2 z8vb6X=ZYHm6xpVnf6v0kO<09pTf^H})(O_b4Yv`(&cDV<~% z)en)#l=a)%YnwK6Y}--)5a+Tt*@*q9JKbiJ-EV1I^^~N=T$MByE8k}FETDrJ6N5TG zg%O?x)$^hmCg|aBjCU&kX7~xCOK$!J zmv39?Y;!&-l{p<|=F(Hjhgg40#+!N}B8@_rnvS2ag>SjZV86NiW3!bHtccaJkqECl zhgk`lxj))Htx35-)TLY>O%q=%vwP|a+}zo%h+&%-ZXZqKhqxA!a4o)a%MM;zfuBEL z+du)DSXc2vqauUHHSsNYMJ+dO`8{%?khym1Hc}|u!@#7rV>Aho}%VLV6OI?NYn!@E{P#sifZ0v7#M^v8no%n5Y zo_75MJtlvF=!}ZOzx48B->kac+cWLAHYNItC3tYEW_{E;5Z$1Nn_TwKdfW(vEZ}KjiGJyGcf>0pB z4l4O@l?bOd-12=1)$qkST9pB_Md?_7Lw*lr?(&;C(%zw@JC# z5WS&vgRs(+M{a#&aC)E7!<(wl0IoIm z?r!y-ZAe7ew_hzCeK8ON3O(wXNDNuWQM2%Yj2Y6zU(iqxMABSU6Q#IE>%)iSfpa7A z$K;v;29TIxnamqff+!CkE+T|P=isJ%sR)VaP#)#8mHdyD$p%5oVYQ(Wlb3}=0>umM zRLWw%_F$MDs1s8hp7e4rF~uV*xZj{iPc2NnbeXl;NaJo5TSQ5UYk8@jeaL-2vsc2t z_n55hW}OaU{mQxkRvFQqyTNU7kM2RuPY^wg25=a5SaPUBb*6 zU%rxFScukgpDwEVbX+^~m!qGNO+>S+FK33OI8}#TTm5;)^@F8tk7w*|EouyzJRBvb z7F~hw`ME-qr8jU`YfqHIpOq7eY8?aKj|g;e(*DgJqn3U9EQUr!Bz!qN}`6~pTmnd6z#YrX__fW3q38Sbfdh*Ukz%KAVFDMu; zjt>co`j()~y*lUGf=)Ow(_eZ2bi>G2^jzzAJ4f)OmtLR1`h;!rLb;EJ2x zpH=#W9z(~uI;c&uf75D2c!6t z?37#*mWt!u^--IhYr`+{-hMx)>VGKpe>G*Lh|GXlY<6G0{*6QeUzwwS@y!lDTef&L z+;Dq?2%(las$YyH<-~cn@A2`M^N>j>#ouA$yl$U&cvewmd#%( z;Qf@6vHm1{i>AN)Hi}&&9n|Y@3vc*b-RDtn)?#lYWoMjg8P-Alnk6U;%X2W~yzMsV@$=v(SRzHn45+0(d z%#89+;O$dqDdMcsp7>*V5>^9WIu8y7S}y)YO^0wSr1Q+Q2}*Ao#2^rVuY4O-6VB*O zy|HU8Q28zZ@Kssqzs~gtVB3(1@HnxRQM|$7P@n2q7j@3~-rVeg3F%wE@gh1&I-?LF zI*wNE5;DqS*Cmjadf03!u2erJv@p>0EgYRgLk)lhg#d?}(vLeRl2THu-!Cm=svL=$ z`y`D-jap^KjU+ui@u1@37+4s-l@n|fh1#kbw73s+)q%6}T&3HDn<;Yab_3)~F30|C zA;u>2=4t3gv=JH54n<9?bb*xl5Rw^0765rgC-tnaA_e35l(PsDkts-R@9(o+eZg#X z`?7&EGq&?CiNGJA(lZ|!J^?q0&%xckw5@JkG~p^3j^^v_LbGP6Be_$~k0F?oBc{+`Y5u?)KC!>#6N#g-IS9-ib`Xu2i zxde937w)F^nKe*5^M0|`)3ukxILq`tsg9i0zc$wuw%#eUc_1&}?IgO{M?W_{Y9pyB zw+)WU6L;DrIC_E+W3gn$ygP~vsh^e8vM2~%M^l;vpa0NQVoF?May~NYqB3^H@6%`6 z!joQ(eF@mznlZ(DO^-fO=*Hc3evx&~9!{#r|IKAz3ds=%=PuFc9TBzW3HnCAIgpxa zQ(t}KXuqAN3Wt1o8@&o3)b+Q91`qS2Frw|wX{?YZo{(G0Jz9x4+|^z8FEIy#(i=13 z(}7Y8dwQkGv6==>F-SzoI#Y)UezSrJCYA|1X?PUAxL|-3TE@th52#FOX|V3}W$i#8 zbfjWC3-is!j3J;qm$z%q#Fk(^4twt9v8HEORY>egco&u7tGem9%Q7UBsHK(TalG7U zzwi)77r{)&QbG|)=34W_Jp~q=a zhAu(>9E-mR{00Aa+)9I7b~LHZp$tjq7LrX+6>3yy*rH8n@A${$2?<;A4`7z+8oA0} z+MuyF8GVJqFR8(Vh6wTjs_#23k3FO6=vvml?uzv1A_&>7Ya=|qF86;z3RtRZ+|75U z%s9kes_6U4u#EdO>DK%j)I6<-RrfI(IhZdpnZq+*OeqnPl;y=_af=+?FX-z%^@Ubx zW4GEC)hPYo)8XQ_aU*NhCl1$dbZd?8`(zsOvK3o!jV=n`8)`}fV;jnb(M2Lq+blOX zH@57A+%p|psrI6e^Fb2wd_ts6jf^N9%G!!v<%cHqOUE?~fYL$5Jdx;S`QfRoQLhD* zdazy_zFQ_!t|#}cR|I1HS%)pT__(NH3lq*` z*faAzZ<*!7$ha+SanU>S{RYbp>9>cD@}3JWCi{$92q2`=gsjjq`7oib^UbP#t{&I7 zsEl4bLV(jLg-P=#t_F$=E-t z+|ktzb}-BLEsWmkAZ#3SvR|f^oE`=Be=Z)~HG0H$Rk$Y+-{Fs)8&YSYP`UXUCgF^x z+L~#B?_lUcN?KTKdUV5ROcPA4XR{VA8TM!8l1`omWtA zD8h?~*+>qfq@38%0oNvzPQ=&-t4tis_lqsUUNr<$JYpF?Y%11a4Z&CxIIH&i3`m*j zQ!MoMQfg=j78h}g;SmOIsv1wSfHi`#^jZ1a2FyU>5q$#(06diq=%8jdTyh_;y!>$=OwCW1l$COW%*^v_}USbWE5bm;E0-e%>X&wL1%oEnRL zTH=x9UWXaECE(yMFUI&)euH}+Z<1y(6C6eUX5gc7W{ZZM0*$Xam4DI>K$}cQ)*VXTcYR!a9Bg-6)L$d)NvqUSZ$oSJo6% z87#^u`$aYInGcOC8=BEj30t!Cw*AnBX6j}G<#A%_POY2(vuVJjnw zTKK0yN?a11>yI}Ljq={m*-f3~^&^%dccyKT8WOm~*&ptv^gH;U1aQM5X5Lctp5oSR z?;7M}oTjR^(dUS2&^2%9s1is}yW1D($FmGMI@VT^} z(~jx?qF>sYi2uG6*Nz%3%&jTAK+luR?CLiFt@iX^#;D!^C4L${hAp`n7qnC^-(QMl z|8Vs^O4xmDm&1$yBZqJOG)nK6I>B?LV$#~MJ2ix~|;EYjYFd>qx)ljX*#Cw5h#c9cls z3$9(OWGf*_0ien-hexM%Ezp1c|4Eh0!=S4<=LHN(e_b4QA5>a*WK1B zpWC5=NbX!DFF$yD!=H|k{X5=TYs>_#`mJt~uyvEfJuYed6zwrKPB_0DnIPUB#8&QO z!(erjmNK5Li@=aU3bVG5orw3n((@@{&0Z>D`TscEiR!;Z@dyu&s7|42ner2zxLU{( zcNX|zU~r_w&Sb$VzS`KK#6hxc@A?{k=?_Mz1f?O4t&uApn8N3JT-9-gUSme;o2MXd zJxjmpd4_E-(V}7D7~wh)dPgd5Y1&QPD`M#Nn=wCUG22s`c>^T>bi%#bQWICl7bD3w zLPLPvU#RDJ)F*Y-((*j<&B>pG)d`!9(VV?(U6*Jpy?gYnai}hsGTyp2j2@_t^~AY- z9V?+Fpp=YfM#*hd#M>lfBJI4GK_28)woz7=vckpvCWhK||2|%PNOe5x#+|luYH(nf zi*O0+6zP3nZh|%XoB*b|5+Fr7>o|TS`3TrBJBfQ@7$(8Z7xFs8ljMkFVBj(y81oK| z<75?Q6T)qAU9Y);vIQiWvgON8K8KRA;kN}LOKWQi9e*!vm)3~7Tn#mt2FMdc`3 z$GE1a0e%4g@Mo(Oe|8y~^;?(#r&6(anQg!|i?pxhWfni*OLzqTa;fc4rJt&@i9b39 zUW+lq^aT6(v%qdipBV~jMP02QTJ@gVX^@b>LcpnZ{;a_44s>&*XH!mGO)e*90E$L* zDOVYr>6bwq2sRMjNgTX^u}Wy zi)u^8RptSLqLLfS?PXDbJnEo{Sq>} zHsSot!e=1(@-E$zX^}94@(L&;BqxU%+XElBTaND<*|`dTn`;MAGZ&ZrfP=`yq-s+VB(v^!f(l`?T4D)-j}8FOy-gkl zYlP#bpz=fmu1XUMw5W0aq?14mA^l$oWuIYSm&X=tY2NNcD0MVNxAeCqmgilA;5ZNt z(yO&K%9Yx;ffH($=uZ=i=(ySbG!GurM~?zl?~%|6p2$lv{8fp}aFN2$laRbc75nJJ zKr9zxh7G_r4if&&oJhDe&w=sMKEIXJ$5X8`|CMelX;Yem&z|{eNWnA&7e-#O3}*+p zo{=6T5sI$gwOH4k>}S+-A=?SHtiU2v;El+Ji7nMLsnS0ELiB>3!0R-4kn?}ZaoFGf zI6x)jq!x)(FsUXz2&gO)4nw=D?Q}#)E?0)x+I%EpbC%1;R=kcLFea(_Vq6k^ne@ z02OO2?i(w8;Wr&EFK4NHjiwqg#LXFe?Tp3Zbu?HRLDEG(XBkf-u+B4Ga$Ut&Mc!Pn9s;(mI3d z=Kb~vIT?!?Rdv*vzPE*Jzl^b+{d9JQc<@Al)Hh+*(+ha)&JLqzphu&U@V^sX5e8g| z&R(7^{TJ{=Vf2BB2hhj6Q+eT9g?LlHohbl0G@b(@sr+v-PMO~)Y>2tKZf}_p-9Ji- zY%F>Zs2#eqiJ;5vt9|OnjL#DW@(uw3^!6x+G$tnI*Dd~5_}}}qo*ZDElNc*pq4>A3 zCow@(Rdq7&@L9$30qpwv`qziAENgy$+>73Jp%|0>#z6jWUvFOl9S!J5`V~xnYasrw zFUX7sN)Z9Org%jim;Wia{r6@6Upx-9j@j}DKP{IB;G%(!|F^1Q&TC!ucOUtSIxbHC z5DWaHq5xDDqQ5mMfNI0<`1x9hEWnPwb|nx2=-{sqVkQJwvfu7aozh8Ezw=GsA7X&C z7SN#VH|G66N=!bB%KxQ7kxvT#e-x?I^8KYjX_6g%{_m0HUqQkDuOAnE_OA$Iz(gTk zh+uH?dFsd|`rrBnynRo+EcvoS>_78kEL~`k`4^9{aJx=Md%p1R zgf7eYgpjo?Wyvfk;QzmVQ$z11ea3qWTD z4DRmku8fR~`BYJCMn*K?=tJA~Qu&V8mx`W6+G-~Bmm ze%_Bz(C$8)PbZ~GlukGrnWD?1aHhSQ69Rn76*=(kVIYYh8jGWSX{N~SZr<26( z0dsXD;{__(`WF`zQUF(yAxCml55fCs=N*{Nyu!zdQe3$-s{fV7!=#;9s_MWCMId=6v!$B!}M^tEiXKN^){-`!rxhDDqg~oFaA42YQH%M>E71ia_VHyH?BQuZ$Up5@yOe1AvFD| zpo$aZ*RRObDq)fMrwp(4>Glh+j>EH^VR?J=27)&fUy%vtuv8EEyRE9$mTo8m_9DXu zjNoI!pH+RV+(pO0K=3Lga5vSNvo{fmFci<^GZuBvQo?vQ^_{a()VvoBs|6UGRWcx2 z&EH@8oEFR)i1n@cvsp^wfju!&u*N_aM$-WA~Z>T{l+bO`Gy z)5*5MA&fE`V1WgwEro9`cm{ZD(F~q;kgHK=!+46dsIt^w7msvx^yW(kup>*IuC3^) zM-n>LX-g*cCMvphLJc{etvB$d{(7Obl_936Q+OSS5fg)Pebv&YM-IE8KEVD(^z-i; zkHHSlX9iw1Na$DEIB)kTR0RzJmMGgdx3P`&d=dnQt=A`qHQiIJ^=N!$7^Vy^Bz8Xmm$h1f+@~n8 zC|f)PWQLt0S9vZD{eckj1=$ZGRqvGV zdR7Llh`K6x`L_87(6LDLA_kdtg ziLUE!Gq~2Mu<~lVX8o|VH-cT_<(f2uKRPBZLK?d6MN~uG8A=(po<+c~aD~zq<744_ zo((qfbu0Sf@_;%)OdMc2wAUmr57lRd8h|h*|CWLPqO5AHaRR9g2Ifxg;V<}Wm6{we z(}U@eG#(B?IA=TsP`yvD^xKV@#GkmYOO?51goD^s`uKJPQY(0}50G87cubEb{KV+_hK8PMCo4@w3T1 zpAKs3$XW`1ZWu^$5c!iEDKbCN5k3#0(7HhAJM;~F1iYsSB-SMKX}MXqHALGQ zozFm#?Bk=4L8hER_-81awq>{7ksd<*akGrAY1?QJ_v=$-&kM}MkRxB*;{ zGt(&??Yn%tx_uC))L_IiYeiCYE*!34Q8Akhvfjf+>+>CNU^{Y!-3tZLh&#pX+LH`A zntFJA#1$IDOY6T7IPOdF`6!m_Rh7MRJ(=Xxt(f%dgg7oCe!cmF2-yAuLPYk*R3YZU zAk?ZVyz%c~rsi5d-Q5g`6ONAFp%D{4TZ_!!si>ITx8FrCtT!+ZQ|WzzG3Z(|>Ly!R zz2Ug;lzW)m?pUhE2LHiW%R7heh!3%qmpv75)7b`xd}$B#*f5b$3sx0653eRDZ!8ZN zCJ%VW4Y-X)QRL3>O#Z3!DbJEAW>O$}>+zC*^pBE&`qyD#IRh?!q$-ren+B*Mo@}#( zIZAdzSqKaciTA^hO2No>i5ZX}_l}#$m~8t;3jjK%03_9O#iN>Rx|UV98&80k-Tq=P zg?f4Y&D#Bq+QD4SqK}pvnrTxk-FV+7X+foTQ;Hg7uV>{E-g~aKm(O)C{!DF5*R|9t zH}(6YWSF9}nAX+1YBk(ad@X^YDEF1)CKG}R=u;6G_rm}PHL3&h6#Yk{#5C~64%)QI z2`^@&+i!){*}n9ur+t-!QQbw&J&1__99nD}-<7geu4~&*B%dzrtcX(H`XE(nJBzv@ zr4N)cGW@W)7oi!EVQn>vQ%urJ{=RjcAS%HPIarL2B6rT-+oe4GZg`<3lKI+<$%`=s zI-0<(mN0o(cG3?*l;<)guD_c2c;AEo_-3V^e=KI1dSpT8wsm245qPpOU!=#CRnMPF z6LPU_*n9ffDk{o7&&=RZ3OKq~%7t z@)7wqj~DRHG_vi1XV%uh-7qMxdB|x*I#N zGUG`(Fmt3E*Djt}Lf79B z*0{bKT^R!4Yi*4gy;3i2Fg7_N0+KZ4`(DCREB3C?k(HCNZ=oO7+{ovrrMof?H*l;A zh}#K%w8QzRHOq*KkDE~2YT@-+gcgfW#a4+I@$P+zFLJYu0<9OK=W7`h2^OT`Wxc=3 z392-`zzCeves||G)0g8Wa;$SPug`$WmysxN*bvoW#v7iXm?`HLQ}?>IdboX^!tH!w zpWVt1n_tGcLG0ny`0Toc2J!|WXql*l21Mrg9bS)-{@Y4@TScH9;Y?&)xWao3Nc+#V z&|jHYcg{{kq)Jhf-Qfq`_I8F$kOaljvN9+7Vd%l>>=1~tg%e3zJq@C^VoL}?1_AK4tWGYp15${aDblX_6PU77CTKv9_<2}`>!dvR~O`;EZC=6@nGiF=t z>k3XceEjs6uJeqA@y9R^`yX`w?DsjuK>y>K{}BYcEPFO=b}$hs)JI^yyjo?(sF z*gqXG@Qf4ibyyn`{DX!GS6C8OJbiWbMR>EslUSB#+p4FolY7SPN&sx+B zo9VGa>L{Bfi(*a6$7VIEt)O?B{aU6?cp++cs8g?$q}NsGZuDvcl+dVHw&6VM+}jgQ z)Jni2R=%yw8s`qaHFM^dF77rB0IQj!+ZKR68adv7Jc8f`Tn=^S%8ylMwJ;u2?w&6r z&QLhA?z(}KV_7UzTUdxj1nuf!1cH@R=3m;ax^krcD3K@U5SBNi1l20 z5*+vn2hz^08TNAZr`C_`am}^s1ChI`hwst$56;~u52sjp3Qh#KvUNFk$LRqEBJJ=y zAQNM^d&qz)AH>sBQ!bGoDBF_lB|Jz>D+ou@O@?;;Xs*s{pkGu|*Xd&nJ+ZLGv)^NF ztT{%rs0{C;;_iw<){XxpGQ9FCR0z0(+N6Ydu{820$Gp|0_54typ*A_;m0nq@Dd(u3 zUIFA=%HQZ&CINb7kohsYf6dnE3XioM%GpdKTa&NRVx*IW&AbT!*`Zm+Kx1UE#gmV7Q_27*S&2tLGb& zEvno|0yw3WNSoA(A`=}Rnr7aSqM^MZ%~$MN6mawC@1RonJyN8%Cf*8u}%KjQKe|Iot- z9G3Bq;!0#b*6^v`(VH#x(u6i{*NO8k> zxm6Ku^R!07liFeBrlAS5DV=Eg#t&9b^*$vUO>q7_Z!!mKNU zvx=f>C}7`JteWeeGkFPYEjszBRb=tl_l`2Zq6~MS+DFo;a8kVQy$c(h|Xpg zFZ8qb8vN%83VXl)UL?LsnVav!aDn)O*B>u29$inEYLU$8y23-aDAK5RQbW-3DfCu!Ai1_SxfgisoB~pCMIL?3d+tCn*N> zlUuKCl0Bm}STQHT;#@OXtq^_>e0>vp!;S+c~$6XlmycEePv^eRY;*I1|lM`*R>L|h8SaMgK=R*z3_)qkYc+_^JBxfMbxj=-g{#wG0pi29$t2KZOQzv9iv+Y_&A*U@jM zwn{k?hP<&hEo6D%L`jpX%*IUoz;#le8@W&onlnsx8nWlHHF=haD%WnBnP1$R+=_@n z?WWh)`xSP=Pndpw_cY347|TCb#oX0hhaF~UTMJF_ye}rG=n2ciakAfJ=3es(>t2#6 z%!nH($v(yytW`*NPbjuzQZ;+tpxt{qmZr;SVebF%Tm}zvBxcJ$zbf^4v160+;ys_! zrBLB*lK;(jjV@{D5Us(WmdOtbenU%)QJ@otnWB!R&~}l^gh}pL(Kqwc&e#wQkyyif zt#Rhy1lw6&N*cg8LB3K$epxpXy8fee=|e}L4kK!VCT1ZvL`r55N_-t63L)Rh3YMSA zMqzCWO8?nx+_331pL|A;9W1%lUbT_Oua~^N%W;^_E7-6qYmzSHubU6e4$sgCQMUmN zeW%gr3XgI}*U!cDXS%x_d3@Fr@g}y=--~lmO{<D(BpGo=rWh2L+hq^9`VWX1O_KV8>Wfr2TXmK)Sjtf+5KJ_Dxb)i0J4YRT%6wQ%nhMjLK8F7 zn@_gFiI@^G-IFV_s6U5LEJ^)~@6|)%JF%*Ut{eHPz7Kc|vW&$I`)G-h+_a&0&JnAGEr zyN+(zODnl!5_(APG;7Wz0a;vN^wO-#x5@p>p~@_syID@%Ip23WzS*E>L!N(mj zJ9<=NSstrYGunc81>d-y#^<%OSz~YiJwm@obBAeym}S|yMFdx;@K=)O5>C6UGa;bO ztzzWH1$<2%a}k8uR`xx9PKUT*PabQmmrs5Z z=uGN@0;DMogzsNU?ygBwHs_kYr!YF>Y({DHeFBx#w%hgQHJX${dD0}rPs=t(`R!JpW#{DVn;s=I3|Adx z#D3pAm%Y~Vf^Qh@eDig{^Wjzn*?qQ1O=2%De3O+?gnY3yTR`Pwr=0O_xZ*d=l2=#V=)$Et^2uS z-gD0Dy5`Jz7HIMQ7XX`_ai?(h-eBV5lCbw~ke8=vmPEY%euZjNM$&R~dQKTXz)7x6 zYqT+6MJ=oNz8UPdzcmN|(G{Xr^CCNmfTD1)R_9Ud6sZ<^qD?t<#%nJITs;I# zIz@hLK+t)vIWeB)_p`4|T3EhR#*-&k7YdX%Pf$stfpr>=hn{q)7JChnwm@zYzBwp& z&8I;As=1w4;S8VCEy4~T)NY-wcpN$;bRaVQxL50x<@W4^@PG<_P#BaJ+D|CYboue} z#G%L!g>$l|n!ysIe3FEx~G3~2oj@SFD{ndRS2_32SpI$ zG4jsi%90sn5+>3$C2%c8sg##u4rP$i+Jynkkz^N?!XUaxOcm1MF=C%j8}g2|>aRh_ zTCO^d=(~8#7&rO5;CG(IxJkQ`-VI3&WTTkx!IwanV$fK{#xOUfo#O8(9(d9B1!(w# zC>(=7#|One&w@hSKI{EG*@>g%Oh~hvCjiy>$VOQZ4Aj^%Tj;%16w{7z^4yPJ35!{L zvT%yaXt5$)DH|UYqOc&2Devt|ti}K3?c-^v%jL6N-me?O@o(WefX)T71(5JVM#JB* z&bNC8EVb#Vdc`OiF8MCs<^FV$?2lfGq?Ug%4I(5`)amRS>lV%(7>n8*w6Ag2TRCB0 zN;3Z`7N=ey6B7C-WIY=FFzk1Gvq85{o(9&qy);bfY0suFPuuThgrTkWg}d-uYLh2O z5q6=da~FXGH4cy?X?qI`-m>v`3b5%WhBd1O66p)Cmf~s9h(km7;y(-T&tzuXAxj;!D zd`VOM^AR`WmfkEW9^=WEk&L$YYmI-B5MqI@b9Yl+Y?plAZKNu!OBsbvmoU({YX7B@ zC`DLAMS>(s5{nL`Bk;wYScA?QrhfkMepF;;-PQ9}r3vB2g$a%3kJl?kDVp6<#zFgs ztgn;08gGIS51>-I${}6?903yx2>*>#Kxh1RPk1`QOc-?3_^rz>??uSm2Owyr(tp$* zTCa5!2=w!sl!?0eb3Q)<+>UIZC1aXs_){%`?yHP?Dod6P{wa>T>v=T73k6_yY(Ym< z{Dp+_!;yZV)@$aT#_&d>bQr`y45ljslo}++Rt7jgTbt0K=T~=bus0bgf82EX`4s10 zw>%4_cRY@G>Oh(_G5}u#ZR1(VB!@CEQYGUw3FBFQxdOkdVgN6^MDGhr9GEQbll|@P z{pDldeMKxV@|2Bc9>Kpd5r1xOlEJ$QSU_0{FQYcHKbPV+R(JRABHiB~_uG93CiBrf zTY{yrSpVbyeCV(KTzB<6Y(T%!@jqX%Ji6zhywFuE692DJ-@jW4_j?$BzIfqv--7FT z;kQYW|C*8ecW0sgb4bsD0&GCPv8Sra7QZF;|3iZT-UaPK{MV4YpFWUBp3qRU{n7vB zkFNn*cfq}V{I4PLQxoWlFZe3O4NEfz3181T3qQreSNl+JijII74?gckq%NpPHyFuj z!OWUV(=nfj-;wBWdOYD#0nvyj<$X6G#OUYNf3pUEErAIyq=Wa$&L|36OmxejD$TR- zrCu)z?#oW15O|d|9&qSLa}g&UDmIFnBJS-}=x2<2EZZ;GA0~wwPN%4e2H}gc*`|41 zYr>cObi#ejlws(4Vs?a;g~^YZ)cZO+h6=5|*2f{{wd26t!Goby^OK-|KN=5er_=>0 zMy(wr&vJ~esh~r~Mr3SAn`AVhNAIgzc5->%g1U_*spO*ceBs$bOEIo0^q@tIZ4EA1 za9Bfd#XL^veETdA&xYew<7VzjmYr%1e6%9$lLL0_uwXP*z`rM2Hj1B&?e&IF*>Xek z+C|iRux)~fZwz|CQ-c(;_R;VSi0!r`-ZZZ{Bj+WIx;_u)qx~gkxA4yjH5djvU$V#R zXVyy6?kG-{`R@I{y|`anK>f+%9yV@_+DA`@ml#mE8?ZzSTP9F3=-2jtcwy<~6&(OLPAhf3FsET; zugP@WhE_RgMqAO2B8tqP1zTUDC#sn}Cy$g(Z8NWs%#V>ipZuBFy=Cx5KO#};YaiZy zRh+4|fuP?ci@y#MKbSl@i0+Dkc~68x_-qs)`_e?vA%RJRY#2{c{g~?F-rSHpp}cy6 z#C#>!8>(_)IK3ut*IjN#^CJFV&GrE9OLX36&^6>!d~UBPpLl5sRLY(+VqxkhT5d8i zX4JS=L1$rGKcSCE*XDI)paMfQ^IhYJdlWncv zZa>3FuxLud`EgpguDQS3zYI#91+zD3XNMdN%a?D$03ci z7m|$C6=tF!t$5Oou^a?PPo2XSi&vU!Pf1Q~2nRp=XGjPYxc{K&hYu7q>eqtnmI#*P za^j8NOsMGcNd#zi(<{yE>HjpV$z{m0O95!eOt^BNs~MVBj8ehO<(d_1)R_`dspj=U zhrvRa-vC44W>VmL{FfudEnNHO*m`>ectT{jW&?lk7Pc-UM0W24>uIcWG`&WqbR z!v6Waz>_AkqTbW{SPQKC|ELlA+qm9ez(8sF^7Bc?f1P!JANA&e9=CSV_eWjd-_UHi{F!+RX)M+(^9@!EP$_J6$#Tqh3&pjf7s3_AYn(H`!x;n)fG_212& z{y1vVKram7)5$d4xBnoP{(dxd<_F^A(dF8m%Hp5D$z6a{5IDky;Bef3o-^P9?_+OZ zf0}DA#AE-*%&=hHe|oINL6O0KJzC$xvh;1m*%SZo%$WE?+S%L3EoO0~`;#D{pbUTL zW1lIfyt|Xj!5^Re^S=`yfi5TN>#ZEQW-z|~{^jCa_vWF?Z$SLNhAs54-YFB9Gk2xH z{_*S0_RxKkt!kgs^k44+D`N6+!5_acxcaXZA-nf1hRHy@H8J&*EX<7 z`qzYeK~9t0&)I*Tk-NQ`^6=?{<{>-(^=Lq|!8?l)r+NOLeh~}H{inZh4K4Ec-$xS) zA-DR)1-PFOlaIjaj7m6A3a<@)tW_OB#R1Xs! zHOG{(I}h6onu`_4Dc%QHHtY3ZGrj$Sn~C`4+C%esJKQt*dC* z)h0r!lXom}}q1^LKeq>cbst9uI8eCt!HrV9T$<&H( zI#{8gBm4@X994VPG#4*m_l-h8(Q<)lWnh0`ERK)&>%C!};eI^6kmZXECzUK0gzcHM zuGajV7RUJTmq+%f==8+i$^yxpGl~WcT+ik>&6xD#u_@V;q=crPyq(U#bvzH*MOA)i;8(-xxds2nEVWl95`#4+i%|E^Hj5eMw8*R9 zc|AV1mV4ahbB;BoX^9c5T7PfQ?=TMoe+&(GB&4j2m0#~cWTj}!0ICNx@G_0$H1MQq zY7|aLS~zo+xxUSs9Nq<%MdF)sFB&$eBUX@xN1_G^l5%v8TXNvEm^`OWMb@|Ukx_^6 zps<#ZBgxq>pQi0K_IKvx=TY5UC8t5NyDCO5=399%Qpq1EZMqwON>p6r4@=rQ zd0FpaBB0Aok8@Q@CIc$TV!`wwewM28Y^#{QvvKiQh$G!MrZLy{sui2CNW!&J#Zgc9 z>wr0)x#Llc3kD}IJ2Su!=8dm+mP<)l#Gw zI3PY=yJ`b4^yZ6hLx zlrJW0d^Vo1*^oR_@k|34h=dgqKkGL}-(p&wCwAw_Q?8ld@rqD=BZs~Ls#>?@ZDus7 zoLv`r@Z#0=t0a`5gb?L39`;Ov#bbL(-bYcW5iKdAYAZTF!uQ;NPIuu;M0JV)&jJZD zFvh@XC!ZPlpfHYnv-cuk|Cn|%TX)jW`-^X!cLfn!4s|>a{#B7O^Us;o!P~-Rd;9jj z&*4|}ws}L7Hm^wlhZ2bEt}VN>Z4d_O}~vfRj5GJl5zL<&@o(;$mFfu zyV&9wAoPnKW z9Y+K3UaIO@CtL}qcVTc^0S3c)9yW(14a-MIS`6-=@NdtoKW-4c?@p9CTPmeo>A-+R z#q`Ivu18k^x%)S~OZ1aZdL0?QlGD9X6Z=+z!VV#Gc`)VU2MR(hVHky^v-fFh$rybX z21&~eKSv72{NPt1tethx2wK!M>bydhU9x&V=({iHfI&htDr;=}5uo?b=oRV0DTJhA zV|Ims3*d_*a|j#7zKdWNUe`F%gs02nlVT2(+`+grKLfyP41{qN(yXaH;?$XDBIL_Z z{UE&-^2PB})5+T@y%jgdcE=({qz?QzQTYhMS!cB*8EJ#EIu_2}k^(-u%C^u{NdqjF z(~)85&%!Zpj1|l~e++ZNepC_!z1?;Lshlcow`e`Fk(-k0g1~T`J7bWo+Q+gS3FBJ1 zOm&_ccH-=~7f_H4%0kkJEtJAqXGSMimTK0cOd$3&rExG5z=rb{Lld{G`jlWZ(z-J* zF|iXA1%QiG@@s|$i3O#RlUM4xzW-vthbfJ&+p_`8v8eve-M*edeMHqJ7h+FO%Y!M`7@{N)(I>jF zqYCYCTrS3O$fxz$+;m1qqY2C7JBoa|mq{MgS=Bsaf6MIIbs}J*NV8j5^;z+#iqW{{ z0@G66FaAjRaa-?dt*^-rw_IH&xHQ++4yXecxPcO&afSAMpL`}Fdf5oBqI$m#!<}lL z-kZm|{c{A7W)-t?+{OyWyB7J%rB^@)`YFZNWy+AffYB?-W?gYWZgLN_6S3{6N8~X= zf1Xp4glntBM<0L1hL5h-f=o_S?^J0JXCj&_Ua6fc(h2^{K};4w`M<|-C<0~3TIwW0 zYkVevr3cfUB`?6B*Drx@D*_0&MyzFBPcWrwFEy@vXsU7My&Jv;(FY#%WjRXY%pa&^ zg+Fnf^LI-Prap?891lT}AVTI;T@}p^-O#t>U*(X~#(ec&4O5%?^|bt=G&y|=yg!3J zyr3UaXvZKzdrtsiGv<2k#q8&jkrV3^K}x&!wl?<9P|pf2x7Z8MW4Tp&Jtk|7Lu{!% zsG(k-B?tsXi&ZiYmkGCcSGtC*ECJ~AZb+F7>ybko&|}NbZJw!p*UtH9r(paL;!mXNa7D#W2fMT)-r-V8_%wh^<&Sy`?PT2cMaDyz}cj zqJ{z)sA3>%E91Nf@skM2CaT`RV=50!|NKQYy{ffS4}t#u$HH`~b$dnzUbwi@c6|o> zAu->U6pxv8X@tD4r~E@12&p}NBHc$z5Y-ae(QxGbY2d?r=via>YRq{oZ*k=sihVhUgTn2Fs0X2RTI)J74`bMP50Fg;NgY6Dm&DD(93dIXgTn z|G7s*6@o+cz?aN7@lVUQJ!Pdz>YW-`})sLcc5+{gAd z7cIYe-Kgzgs?9d`e5j4~Dsd4Yn5O@byBR!KA;jr9>rkqg4MX0fhka{-x>xah$x;ViZ>Jj!swO4Yo0RlzA*r}Z2=9V=KX%cxap9QJC|k^O zS{U*QGNRh?)Sf4uw&`^ek zQ5gZ|Jo*$uDwqrnr}gauUYj^^O`iK#(!`y&p^2dH*Niw)Kc`a+OA)zFvT4BX+IA5p zQO=`_*#3(jt^8OI7fSgRod@5ZpPCpEY3-z=5IseFmCkyRZ=f->u;pL!Q*xw-TB8Fa zObV+YChc75eJH>eSV5oc6eQ$JF5+~8MK9vGzv8%AZ*0TY< zi`ExEqJ@->CN-}S*l(N#hH6&RT-eH84k?Q!Ck(P38a!mZB z2BSb=C7Qc-!>;h;d5%k|=un1oDwtK=GMoN=o4E*S+Zd1hCw*P%ZzjGlrcnV@)bQD$ z<7Jnq6K{8)jP#OdrHRwEa33eqH0rCteA(uZo!XDqyq3?g3|MFx0*W}yB}ZR);Mrvr zokaGfwCAeuG1=8|gmeM5Xb1PlY>BkvyM}R#1+6KWk30<9wFhS~J6S*W z@TZ6T=R^OB+>)V?3oY7ezmqeZe}CMIw_-8-MNF+8pD;(NR834SwI`>(bM^zY24UJ} zt;Q^h)^;vY!W_r*#R2W6*>gfA!JyQybi#tzv_Zmmb0P^h9SBs2{WBeW_nM!Y#0C~$ zDlt&$l^;<6min+x`=xAb) z{iiz>f|q3pD0iumGA(8x;QCj54+Enrzt9@8UT(nOJfdnSA#V<(WLJBlzaKTK9E``M z4b5zK$sax@levbvepds9T?$DZsd~0b8F}AJCH8}{kdyRXlq!@@U;gh9S#}SS z1jgzR_L~%EaG{l4xeeamiKmp+ZpSR`PqDR_lBW`FsdTO-IIn`7pQAlZ-pm5M+i)q_J`&cIZ(C@1;9e30J=+GpB3mEEQwb8o0 z)WcyC-5osNtn%-Z`HW8kfWRQpUvzle^**^YMJs_2`0oXXfEoRY=17c~NBUOuZb~Gz z8~!d}{C5rs7sl`_O-J>+uY?x>h8okoC*N`E>_&PY%vb)0rgfU(vBu{}&e^QzM_B{e zcWGGpq^%&!KcSo78%^~A3F-SIYxH+G`2Qmz|5&qBNm}6;pxqy9ckqw-I=8grme+Tu zDwz^y@GBds$LX*AEG>2k3!o!C%^;&(nKMyMd3Tio^izcZ32E zMAX!YDS=B4(0c;c={&jY(H7i7BVT);EY`dchVk;;<7Qe9~eugM3~ps+02|-HLoocq-_kZ zl@pLlL0HCk5mp0r%;#7ezx82d*TO)epG?-feLJweF`q$wdA0*yTGDrq zaD9{!32K+**8HTJ7DU(7bbk7=4iJ`ay!SQak2d6{{Hb73JMzjrTD2%`ohMJnU3g% z40|!2V7f1qs`Ut;t4v6mX@5+XZZbUW4;3|(W!7qk>eye^)BXN@BGspd@C}g&S;Z5^ z%j@swB|T4_0Zfjc`OfnPFxrEZ!LQ@QQfz+!HI8>GbA=&N8DUTq-UJX<@I2+=0khMs zX|{$?o-K#!G*Fo8bTfYMmkY#Ze+l%7S^H6Z z=5iha;S|H;t?`!)1(6X{e+j08%IwZ-K>T z!2@`-er#p)jU!*ju_f4q{|1sAABbNW3%C{E^{w)sE>PTjyUnA*a)h=BCpviZ#dUz> zda(*5>%IzG&u+@i<+u${IbRVkM23fI+-Cb>xqwwdoB~zT?5c5QiV8fN!9c{A5F^&Y zzCX91)84v`H| zSs-FyVfQO6_m+d*trXei>6j7#d7o22CZ|>i5_TCH5%RlbWMLT=ZY`W1C{ zZ0C7Zph}VGD~jP>Z;smh!`RPXzzj^Yl}#!1JJXu8>3)}4E$@$|a|^pR2;PukD9vvh z=DjiKh;2x5AGQd2ZeRXsX9oO*6QkzxGmlohFUWLJ>18joa4l_Zx5LdW(so4=l9dyo z>YC?RRosV~Zk+LScI!LXw!910!^cR=iFA+Dn@tc;m8+;;!K*qajZRvjo@obDcHVIt$Ty1Jt64v zNwx^5$LS5B;8x>%pJ<|4hSls%znE=Y)uReKsaPHiC03BRo1`)Ur!>Cx_BXZ0Sk|Q} zd1>belrX$^@CxG=>^qATBsA{N>95uMnxI94+rIgwh^a-u*O^wmnS1)pg8@aLo!jCj z=L(Pt`Bmu1X`2a|KR+-i}Qkj zel=WybX43~8;3^O@+^<`>WeWv@?krSe@=z(BzcBx6=3`Cg(p!MrS=TUa2xD4xS@F7 zoD;>@dTqzN)CMkX0g^rT#AL^6-~%1Yc6VCS9!hrx7oy!M?z)@}6o&`p zOL_*TWoS#$w$^*(w8I0zc`&9m;L<+n^t@wh;nObpbds$dxzJs9Un7l><@0~fwO*9Y zdjcn~(yljIP7*&GYjWaSw7?7HHohEcU!m8ZZl1GC-NQ?R%Zf6PE<*IWR+dGYQm9sS zoSHs*6EHCkB9ho%BssG>lKBKMty!3W{|1pZrR~yU+6&g{5cN=>XKxHXeDsVuFEuN% zTPQlEUh3~rNM(FiV`>rYvm{cA^`oeya4U2|YF;3(%g~07MD`sdjtF3IpIu4ENyMqY zn+c`;?E(MBpLlq+>UpS{~ zb01Zug1MAXE-(mKFL2WlR} zA(SB%zUv~DTM=d7xNoKdNsH*85sLW|MPaWRvEjlGMeFr)bk~{K2@$du z31SG>rwU19#1?SBRlNUxpDhp@1>&{)O!!7Ff8L_0HK|%5?W**mf8ygXfZX@81z%+fur(Pe=Wl3P&{+ttA3nT zK__SqSK#5hOW0?urxmA1%MB1X6#lxSP0H?YFcAmjp_S`4IOolX3stT&+ZFN7!H|yi zrR4;CgXtCFZ)&&i$3|9_Nu+8g)_$Y{9#f{|oPD)wdB4y;s?SLwrok68ZOkgyM0ESt zF-$Osu^(u~oGN_Glsrl8nbWD-kgOx(SrCU%to6^{V4LH%6IFV@TQx6^7^F*mO|>f3LySBTaXWVaRJ{QI!H*olKE-? z^Vv{af@gwe8VWKtp(q=Dtg<;52O~<>OMre4XGx`7zHnz>92eeLc>i*7lY@Xz;6Tg) zi;y(U{`>Nd4+JG5k7f>rrSlKg4uu{M2KWtswaoX%AY zWG%b0$N}_KbfQ?r@8m&D1x6DnEOcLX+g8c_ZJ-QE9YER71 z#sT&YW$AQ{VmLn64P>;101x_MQlu=rnQI~qUE&y>N+Bh`w*A(BLf;1kq&L+?h zIn|p~wF&C)mxk@~_5)AH?e_0zB+Y5zG~vmsMMkn0&100B7%tZ`&7ANj@w z&6W*ClhH+SLTB&>r1_#cB|&6(n%( zKRi6NVX4BT4uTz@&Y{eG&U+^z$N@8QjdnfFDbB{Zd~t#6&tvsEF&7ey?mVHsgjFOy z28{%DzGg2cPZW^W@DZmv>e2QLSXu&NJg2IC^Qgq4#o$g%AOO#}hWQscztc;Ab+}flJ^5P8jJ1;>uhYB`Hgc9x&E8)f*0QKon%`G8dPQ07Oi~@v z>Ng7}igHe=O`Y95kPoAdWSNk$L&@ShOj-MZLVzB&TV)TSEQX?mE?9b*P{HtXN+;!` zA~KaqYN%#rYg|8J3J_QE;04pM((qZP>@~p~b1IqDn3d&-s*z1_nx79AxpcajzBgZ% zpSji4EU4>G!nx&{!yWA#2mvn6wh2KFO!vZGr z_&tS&B3wjDuzm*yNL4#;qxcrg>t5ez>(=Yk?itg)p!DV{$1~@6hk>2xXRy$lgRWFY zzc?V}$n$zf1r=*6M-x6|pqb2)h{?Z-aIyi2;&S$h#On*iZ{E6pj%OEqzQo9`?Moiu zLdMMjI=H0gw%i50>xd1aM7qck5qm$-A2fBru-dx1(*H-AI*b79-!yep8Nl-|nCbnr zs(L2VWqNo)a@`~TI!e93N$wSXT!p%Q!bmFE3?4tnajUF;acd$#zq6$}M!XlUKU60V zd+aMI9-sZ1K`e5bAqxstKvk|zGZ-HC5SrSW=&>k-(}O2FOZ1l?I~Wf$+Knv&L)KGd zk(sW(k)El=VG@A`uaMZBxOyvobrx35kmlAG*PvfzGjq| zN;o_qaZ}n#UIlLcj58&b#a%{&p}o!e^L6r>gCF&1=T{fzf}wZQoaH>gbmg+C zWnLEfgeMmW))dY{yg^E>J%(O^pDAlU9= zTRW)Hw7UGA;#BE8T1IV|`v`aNEA%MYdxE3C0gSR3H1RJ4M4g3};v7}1$ctfm>|uN= zRXQH@wJ5eDX9kPW&oQ5MoZ|LVH?>~!8gN#^;9o7Ifw1HP7H!jRXNnOeMQU>yg3K2V5h{$}T z-Ri6&$K;k_W)aD`m+|4{v74|cZWG+5rzm5yfJ4!ppN%@gC~2oU9r>L|2r_~-a5gd^ zLsfJ60wn#U^yjeVnPJeEn=CwtNO}n z@1`+yGgBXM;JqeiJR#}(&++_MmqRVF?BGN7qL;_Bm9hIvqk5GsSJ88>5x-G7ePTW?l&;r=+jO2zM#lad+V`MdF5}3`oTH?oq%f>b$dcsHUQT z=Cv1YJeFo6r)iSbNXQ{57}Lu(&3b}cALuIS>DGq@V7VKB&H}iNss9$gnl$d0w)$i3N&F9v-_iqz+_Shd6S8^1PH zw1)Y+cvYG>gQcvhJSG-Ra60zCs!b=#_4ByH=n7y)>LN-cDdz?n5?)?5p~{Y zf`ZmVrDY>*YZFMIgshrh#;p^p*UCqSd=70{v&{(>*BghG03HI7z<8VvNE+mPGc2{H zU0E7_*~xk|ZUe=mWky&HbO>hcW=4dAGymi{33IpXEToU8N57^I)c*z*%w+gc+QwMq7`1dw>crgjh@f=KqFM7|^ zv{CuTyAOZD0=R(I4! zxS=-bueJXsVc%17?--qM75`RH+@XU{fCL*r+kYI59`~OOR`1^RtNAyx_YSgn{6Ow~ z)DtZI?^y=s=w2YB_5T$X0w#jUW^5!-?NVXbc;T;QA1u8m z`Z_(@t{Z{@x|p)KCiSHV-OGaH6%>#$FvgPyXsM~;hK7coPd~%Hqw9LF@p}Q088=ke zufR3dpa1pi*CP(S+HoQLCMG5yPv$=1D%=T^m>f1_-4EL6oLyYH>~p;?-<>SX^VU;P zQ@+}rk}^!H@#<;Iu!GnbOyPl8L9DGqo~~jR6spO>mX(vs-yNOK${LK}KXznaZuEWv z5IpQe3$20ge?@!`p1f-53;Po*h`kfw06ML)0y>|VKnjVs2ZuRc1qDf+aFtco(k&aLvu;y0FCo#vTSevd$wNYkb3`ON>l}8&F4B zLYrT04^gUfN@*!PX-38d&I{k*L)cG&ZzaR`8D_bhzCqL9$Z9L+!?3T~y$+%q!E^Qn z^acekr*}qJ>fwfFb|Jud`s+5k+jMmRe;UZ@7O$NRv}lY1U#jJP;~`?h>Afd^mc}0` zfIHABSaJRM+_b5!<7V1*v-w)~qx%roBcDk$qeMsc6^8E6rqmOd~vQgj^w8EXmLxv9xmt{A_T5intR~(z=&gC&Oc_I>N(BZwola5VpXP(S z439WnFwih`1gz#sbvKA0@`s0Ud`|ON6 zCC$`fW3s{mAka3Q8$^ZkVA2h(+d-|2N4d)S<01ee9lv)~%KSToxa^b^qjRqf`mwcL?T%mP8FR81YECLV!0XhS{PHPN|n8#a`n44PLZA}C&KVPCBKWX`OJ6=MZ*-XV%=8Ec@e|v$rj7q^ol7M-j-K3Vk;~Li-MFe7zg=B}n9wKLQZ!v0;5I z_RyY79cT|@eJ6C0K81<>rv8=ndej8SAhfcowO>7WXc-7zdGQ$?a;KSTE19ZZLZU$rafK{H9m;^1(42eb^ArIMrcE>l6Fo&rFd$gO8K{{C27~C9 zwwB31kgGYmY2${Sa~^)P z2+i^iPrh=KriO-p{6J9B0sC$FVr*crxiTSN^n0QG?^K1JiHH&zRuxF9d zXC&8HU$FDrT}w7nTZyq+&@y@_!+zmVm7F~IV70xvz=c-PZp|GXBv*}=FHFm8`X`d~ z`VM<+W=0&AC|UkqeLyO1jF;r&UCLA0=l5wEd%*6Bt#0rK>pci~Crgn{-QK1d+ql8Q z?$P~FyB@4_Lv+5lB<5g1dVKqsDC-mPdL&f#LIO%bjQ*z>O@U}qe4hY>CXW&0Ced9v zqqI8Vz@R$&Q~>J!g(BsFaol2bTeFOya}U*cwL9IAm;3O@-Yg2O>JE8ME%;!$(CfXI zc93&XofjD(IY2tF7j>{@OMG$3d(Lt_K`(R|k?1^$M9#$5S{g)+biS$Kte`;cyV%VE zKNIcyQ3ExBtd4fF1kXCY=D9tY)^ef1>ii12YSkOgaca>Q=-MoLR2XDvlWqWo`OUmY z?9MK{cx{b#Bu9T6MjP$2Bap;k7$#b7m3$M}uKqGrQ6soc+@Y%mbd@P=;Q0gILiK_P zC3TBf(l)o~Wjyp>hkT3>Q5hYGrX1NVsq%i`nt<^6o~&S07f9z#l(W51_v9JhJYARl z6UL>>Ci$Q&Nb=%C8?Kl5Ete;)$${oJw}NyC2^^sXVF}(zEA~~&-C`g#P}*79g#Pst zMAJluocPile~0zS8bGFy*!H6U*jW|pj3cZy#Q%^! z8~%i`VrLU7h0OyT)BjB@y+Hg`@0E*lm#ph4FJe-Lk<}_dKPuQ0tD%K}K}tW^DepW&4v~Cn;~Li_i(nyZw{UV zsg))>O2ny`yb%sGF}6F6^%RtqA-yT!10sUpPn$$z;N4n-_W`Mr&l?J{(S38=?Kg$JinQI#CiK6J5m~g3 z7`%I=|BCveEw-jr?Qmvu+9}ui;;9O^%w@dhUFLGBj+07CR6*=}Nlt<9BhqGN$n5sk znuW!^f<4iNA3<5K>}_eQC+(&%^}$7a_-$9+N6(gEN>u#}EX!B>k=a2oeCj}inSD6p zzk%YH{WT+ABiQ;!%T7m3=Az_P!)<%?`b^1bpTOe|Lx3s zbNzJ=Z+F-iX}j!i+Gg6eY78j4xZxWH5jF?}Ln@N^4v%14QQM#0W}tJN_EDxM)p>=b z5bnnWi>d_E?jP=Xbw)65prePP9Jn4Fo+9^&1ko+W`fbQpCB6>I>`*^Amepg+jBv1{ zMw#pWAs+{VoTFabJ>qK?3P;mx_b+pnB|TC~?b+5(zf-tAFNiKsavmV$wnp$^dYXG! z^-!cMRU+GD8AT$pXs^wp36?hcSRRZ*WCzEF3>`f?EsTdku~EGdFU>zE0qCb9`aL{%4=L4?z1rcQ7n4 zjq?nT57C5w8jyv(bKt|VAAYl^>eCP<(`<27EaK$W7qv0`cA3RjvV1NJQk()OLpX+| z>mZVbQ~MjI*5S9YD5<`DjtqD7Gya1TXaxc*!^E`npbSY5KeX zk&Yk$ZRgO7O^?1QWaNarkL10%kPFkTo2fJ|l*T>@u_~(M#Zk9#xxFiN)3MJw-5hkP zQ^JitY7i-d(}gd){5QOuj9UDtKS%2M!U5$*7*khKvIP$ zk-awGQFyLG*}1Edv+f`lkRiow_f+rjE{zd%)?;u~c-i|%m{LzrI3|CmWPkTP5y_ai zLqzl)FZG#n)4N50JW+^PFR2|u>XxA|2dZxB&E1IN114Z8s9!V z!pk9{N)Hb<6kdi_Vs%_#_I&OWc*9?ncVVX$)uA8eGg^Wl#6SO0P@DsRJo^}Ad= z7LuPReuO^WW{shWXecH6${TcK2G~ihQ%I{KWmAvS;4y`TlpR$i=!|@HMOK-gLYTF( zb$gXBxCdU|5v!gI8Qmn!4*?7UaNEKJq6i9;1Mdx-Cbq1%llRU_Jm_#>ed#dDF1|$b zReM*-{`2Ekx*hzVuFefQC*6=vPT;+Nvr@?gnY~Hy8idHBi?M16L zK}s31Mk3j z;%raV74Y0cO@#LD>nK*~0bow-HObgWrkV80xt;UeTY?xn z$w~DKh}B~toKvRH$%&7%Y{j{+` z!Od6Gkv1QjS%8jyq|RtG3DyHD6n{&=Sq@Iy9fu2uz-P#GbG3!zrprMP#t(o2ka|w= z;(WHItMXAUwat!ZhB6zK>xU^Cf;ve?^QTOQ#kSWDa_@UeocDV8A+rVXp+(MzES)(x z+v#evUJbP=olGSI$XV((#k)l(v8CEG_f{Llrm-;7@o+$GMO&&e7)$H3% z4y2#c>A)@swJ1T?0`NS7>e`b`z8{=grGo_7n6&eBtNZP%#7V?iB#53w)#s9Sv$b#- zE2}!~eyK!gifBTSmC0J`c$IqFbI=wOct+?(>U5xN4B7zDZuQ4Rx_l|L0f6{digzE# zPP-;j8vm-%Vj1a0X0Z*ReM-u>-iDrmrl=|e`(qXRU!!eAb}jR(}&d00}EGE@fp2GG1Cm96UhF{`x}SL{w$O*Iq9|8j8OI=s4keiLiX~zx}09o45j5I&3OnkFh`XBS3vu!aqM`T^fIm~o=@d*CrTF8AJW%UMG~A!I&GB?w zO;}X4!XmC^=#B{Og$?-$7|P~T3hiG^I6%r3331{+=Avpc3Q%SQebfpyh^^5W-q0*o&D zYSnGhHVny!LO(AW{V72^0re=6oa}a}vPP))1ll%_XORj6l_6WyGZY)4pz>iW@*=$a zE(-z$!5D#AV-l$Ez2IIn=R+9``|M+nwUI+!{FeF2~zt_EIueX-@sJG^v z!D*}LOClXmD79FJg0q=-^oFF>rC1IB8l+34?~^cOrR;|3lbWhgG$; zYhMrnK}2%VNH+*br}SfKIgpWeE-c$FV>oC zjxpyPQ;AkMErb~E^-m2}J@%p;3ESo_L`N0=LGS)( z7aHO)ea9Ip<>D=eM#P#m3j2&OUszN(SbJArvp^3okMp5Vm0Uv%^TY9gUQN@oJu_UJ+M`P*d+C$fm?pD> zjkZH#!nWWB!M?(O*I)lR=0C1)I{D7^&0)^!z4ym=(($l2<2EaQmGl4H6TpE?1|WwF zkA4$De#81d-D~)vkz#*YQX!p9Z8rS7O|GP%z_gE1|hDc~? zY6|jvV1F#k!}328I7$X$Nox7O#TGiW9J3^~{y$=i=3|A>d&_#I<2ggAHS^=*F2@5# zS6A2AZnz@1GAJnpxb9<2o-!1F^?*x8oOVkK0_F(y+ z!u-Dv(#he6M}1T2S*$clrGBj@|LZR?JOnNi;A?V70R{DEtp7RSm-?;nkcZJ!{ZHE` z;3}s6zKZvxub=#fPtSS&O9C6~u<8VCP5!R!{5eQ(eJtez7vywnM2$mRtXsJgGWU} zGpRuSJ>+(e;b!1VOm^76&aH+W=0h^Ol@;fwVo)f*q~w6`&W*0U@JcneE$jTK6fv(J@HshDl`I9;Aa7NQoLvRnUe14oz`;COq$oYTf=9jUp z&Dn(J0z|r;kI->jOxj~iW=NH6>Bk5P9;&JI=V^VJK~i+o^zR&1-f&igz6;(GA+CT) z7xFP*r#qSVOnZfw$^FW+(BcE2i1sg1)&JY($MUg&#xSz}l&&r&4wmE%`-?^Qlcz5U zxWYZm7K4)_}3`l@2MQ#H{FY&X%~%{R&=<_#~<+Z>xl)E0na}h zATTQ36UEZGF2q^!y}ofg28O$;n2Ky^0F7*@0OMK~!501^CY^4dP&^%1Q|AvhJ`p|D zVxc56BV^z{)$T^m{@ri<>tSaX3XEg35NLfHmDWP(Dasr>4vnTWl84I$Nenv1%J5f` z<2V+T=3GS!ExRVntFMb4m>`lODHXoDcF11Lo6(x^17!Fx(*pG} zI4}j$J6C-$SA#xxn8q4}ZYHmEyhCMvw&G%wA&hx(C76eQav^1SYLT^u5V!$iVQ5Fb zJ@hD_R( zUr@jw?!XNy0_i`V`>+~?)sAlJt?!tijMDar<^gpfLk3X0>_X4HZor$Lt;-$Z*@t|3 za)%ws*p%#c(5Lso?;8dU-)_s!6?7?~ z>DlQMyS19zrp0*))tqfogfS;>U&`AnhY*aML}7xhnKzbiUXG50OOv`2P|fWLJO`q@ z&aKVGZ6hb_G-*wq^OyQy2n+k^jF-1}s=pC`aJ!a-YP!F#3FEpx<>RuW-5Z$d9!v2zc|54Fmu32;OQr%t^)*5aml0gJi;)i-FGYmS8BEGa?s zs)>&2F0t)(he&z7=8EjE_-2ZyU?)Jc??%?!kR_}Byya!Uz`N^`q%J3F1XWW(1IK5$ zYw)nmOIRi8{^1n?fuCOYi43(ly%Y{x+m)AqkdOaQIPcN0a`@;x5vhy}%gaN?5d0*s zKxytUphG|?iBTwCMEUAoY2wb0lkMq=k~vgVmu{WC&KvWn%IpSB)BTCK*{i9dsdDR- z%fJNn5SB*5JhfuB;&ivYbtbr6#4;2Hiy-;^R3Dx3}fusKshDgAHl8 zM8I2u^k*O%nO=jD&OvjsIh`3|>@c5N4_`wANYL?s5uxV3l;a#$sErqdrz__GJ^#IyWMdy=W> zO0;~X!gn|4@yn@v19gzf!T${CA1t8ZNRLykV*jiA_?TPN~*;nm}@vt7I2YVzpsBpqF~ zK(ZrTT|wtNXUEzj#@L!J!YfPpYQ@ju5oV<6yZjP!6Uy}&0AFSwlnY5gaS5_IQI8?+ zfEtMRu#slp*#&IL=_lLoisLC!jOORD?BI1gp`Pg*bZAZcorB{8(o;huA@w&PIQzgS zmAv*ZcwGUR$8d8wle6ks|AU;@J2Z2Cj=^UWv!gJi6i<^_bK@vh=A(lnFVmbHw>xcV zWyJkzDc|X}3GK8FoOueHMMXq;)tuUzTGzF>ICH7rGq2BR8EO55k`43L=_k98nKpdm zzISrm$ktv@GOMdlXQtSf)B}zT2&b8Q9~S$il+U!%6D>#Fw$!?TeQ2p1$OFyy4xsn0 zQ2vUl+r?drse1D=!^$xrCUU~4B4ll??2^7tv<5P0euf3vHGIwF&V{l4p0oXJ#*FzL z&nfa$gnjfHqE)pwT*Q$P)~Dw4AnZEjz?6zvoop~VSLMO0I!TRyMGjw^`jptSFq7o4m4M9-D|9D;shmL2)NNpRf?h$7{X$@hR4jW`$kC{7 zMCt4Kipl4qs)>FW4#9gzhC}*y70M-t4%Au_PP1RQ-MLF#YX_^KQ+Km=uy8MXd$#{P z8^^GKg*1>>`;AO4>a8fX{+3T26mi1aZolf$qYjI#)tP(cYnmc2K5;^6)S)dgIlJa}k4phLmRk^!1-!+m7R99)z|F2B)#X z_|74}v0j1}YB+_}WW#`czd`(h;EpQGOtf9ZkV@JJQahO>~PPO;;C?X1;^&4X#0dsNxOnbI-n$*|kr%nDSb4!8QJvt4`rT!9MP8 z4G6{fcVqTZs%yN3CAYr@1ipD&$T5K=(GfG(y2ALQ9i4Km)ntJhPr_-) z@r{kE*Yw?uj*=2LY%u&c2cFlOV)-%M;js=ah$F%T{F*s=#l>-74Z{5+Ff0he<(&NV z)cV#h>D|cXHUln6!#KtCI`X$MuWp-}hMU{mLiD^5pDVBdE6{C+Y!pp>{bnX%w8B); zoU9@xbibYAeIKtjVq4=$JUzeD38Lh8E95l-)-`K*1EXY_v6shZ7kor-J6n&E}0---4YZ(8mHR}(vMixTpNqA%}!%kM2nKOMZSlDH|kI}5trb&A7 zj*vQ%Yb{7W-?~{|2aK3z{FB&OVFCoNwv33ogP~HLJFO8w>8d%~ zAWi0R(Tw6wjm{2u@-{Fi#uaAM^H5aiZQ#3;tk8k#(x|6dLO!6B(N3)q;fD8J-6Sqf zoKXurft}S@;XPp&go2|$<`$pJlNWrTO1ua-ul0aMOVptYg;WX~s}vpw&pS`SU@VN{ zX0vRzz4~DKrnAj?ygW>BjQZ7Tcw@+|3uxIlCP>JK`B>(NLf-*D6orRp-KLZPZ-r6s zrdxDRPaGw#Co+N8KCZ_k|Fzn^#hwU^ZMCxuLDc5o!WG8xej1Eq*R>xjzr!0S6zQPEeB zj5fOupvwD>+!IQ4MsgYM=b+*lKL@@!@0_l$D`$X8dMlQx{=wF&1qFK>$9=O0mFS71 zIN6&a`OR~4ZVCd6tZh4}^%Nv^&v!R$?LWROPX+W!rSV^YxfqEKIAB6ef(i!UmLwT7 zh9(>R*i#ido#|3tnnYqAMDoi#2~7PzMn_?;^q(BjM?$_vYmrD$+@c@M25371po1I9Tvg*2}EWxHDi^|Fd%%zNk28IQg)R z?=Ux_ZIpumTA-hJDiA0r6#oPToNf&dgD5N(g^TWWk}chOw2JbaBZ?`@^WDrD54*}l zzZ~tl#5mVnKmsQ5@LLfv9Z%Ur!H&2m=)F&U8Y<7~og*E?1G)un2sf6OikVB#Wl8YX z4u3`(a#go%xXH4P`YbEegsZP-SVJT_cZzR%y3cvYYzrWKX&W+;*}-d1FZaekrEL2| zwC?UtxP>vW^_$wY;@yJ6GTygjY^=EQzp*$kG?wLB`z~R zgoQGfzh&`o2pm;7Z!H#o_jvv>FI_y$fz_0cymr@O3fc%=ntw*?2TCn!*D9@y0b$0^ z=CZRHdgsRx&C2_0L^mwnm(tN(gl&4IOKSEd)r#VlE&@<4Fqm05I$!(@*FV9fT-nl= zcH&glhNGq^yr;jbuUsC-+EKgWI~XD{|Fi6nseVM#1Z}C50&Rs&0Z2q*-5}Soj6XJl z*8%fc_K6IwiF6vL$z@-@a78RRBO`naO!!xnP!v>5dcwTIG4jr`=Htf(4J$%E8^9)v zq#C~&bir-?QtyY-lDXL7))YIoRGOh*$R4v*Xm-4#d%)}SvY~3XZM_@!)6G#l?m&8K zsMWd3`2HddvuJgilg$g^8gYzYAr$Et_MaI#a>4uL4MjuFu*#`sz?NH!8*6L9&O>YZ@w*o#>zII7+On z<>$^J&L2t@8S-q?>dboB>#oIGa7VtSr^B16v9zATMR(+vz({rWf16#WtJG0M5v_0L zfbE`!-s8C3Jr0ksVV9<$Q%-#|PF%NE)J0dFDWN-sQqxUMSja=c3wQ#2m}>aIJ*9eJ zIz@q%-=I`*w}%n)At>h!(c*a6&b`zD4jHFHm8MIbBQTI$#(5RLZ%xxGsTc7muvE+3 ze#+_V+j5axx(s`})Cr`nOt^P9g93pVKa70oRSCQZu8W7wl{iJ5>&B#M+GPKFr}NK0 zns5+~te;}iRc$2$5e<|o>-Lds`J2+KyV86RnHg^P+srtHQwf#YtApV}TrUA!qF25% z^}>oY2*auL#7!y?34K03VNgFV8QcL9egK7FHj!E9d;s4Of!|A4)UTrhK0ZGk#}r?O zX$P!f1WvN8-n-O=P!>SkrZm>-#TMNI=zETIUPhYVB|gW}`rZr**31#Gj9kW_EyMGm z!uEN--jA7RVEqgdJQ}MR^{&pxy4PF@19g)Xup@l-T->&|4D~<_8L$4xSQnZA^8y{L zD5~4mXSOP(wNC9ODl&!k)jU?X{-vwU)*$CVb%ULz7_M` zQL&#}xJPV{xcsiNyXZJ~qNNiMjO9sL;OYSGp zR!mA&#JrXbJ-fX>4ryjl9{HAWJQXvr$hlpp!ya0d!U0BqxKD@%2b!H}d-R8wHl^_3 zG5p%<^V^|W7F$!W9d|L0k`?#kDn7ZetyKP0F;YoA!wQc%?xujfCu@5oVSDBOeUn&K zrNe~`dfMfD^(L8cq(~8+v(l(2nrEZG-4m8JFBny`iPsj@DH}0jD&y%)S7*?^TmV0? zdN)K7kC~J}@ggp6U}`pKE=6REv{GeUoyHQDV87<>3#KQ5C|@AZ0- zDF=7}=F4iIfNP({s<0M^I^#*A>Zd486K?9>^%vRI(%;qDAgkaFZN;{}=FZhY>hoM| zv<@X)CeJ)>FfD7Ji7?P26*Y2KwEG#u#$UWAOGW#Lpuyy)`c&;^gaQM?xCidCh@ZAR z9V9qe`eNY({yX?%z&A_uj5i*9RdiQ)?TTCJj$uZ)m4eg=EXvd6cs-ot7^{BYqx#;@ z>XNv6EY)4YALMHzFwZHME0*E)m|Zya};P)uGI&TxH{fxW1#L5%_+IGABZ^g zuU(`~ST>_XhHe1MPnizb6%p)0 zcCNC%e{1Sd*Upz&GtY==w8@Rw@I}HU@MkfR^i~|dZz?E0#?irdU6|rG8#Al=HbBoI zgr{24pG21Uhdi>X*eGaR_vzB4s;C;1uOihsa`!4084c-lZrPwD{M z<9r0hmC(O@$Qma9*p_kgqc4afdM=(t!JJo6x70jkThZd1dd`ML5iiU8$9G-l5i*Km z+Z(H6Vm$U!G^U4g(2WPX&v|?Z9R-1L@z9sO0SFb`{vzi&8Se@7rUoHM!oyZV>$ z%h&fjj8|-WvbN;X0x=5aAPmhI!1|9jg$Kl~1Vkl;L?DfsKri@#a>djj5`c|D9QBBB z853aSHFz$^G*)$)8h ze@hoxF$^8*(}LRW0E0ka`I8oU_U~t1CE3EF2u#?SAp%01%yQa7SbNb5AT-d5L%e;6 z(l;^!3!uLh#9L6oMfjBi ziCD@`a6dbP7?{*^W=1<-ffYW0#{I5q_XeL=(R=abrz)PEN6H?qBtQ z>f;w6}1-m5kFWL`J5U|@iv zW@Cl3TrFoGTz#<3T<%qX$>=&~(A>OgnXk6fvFg2r3ef%Dgxw37P%E9p!8{FlkSk98 z#SzfoEWjM~fb&tMhH(xd+IZ~GmJtS+S9;Z0mK&D$S_ zEgzPSmZkK0e>B_2q0tYZfA*0B++h#*3^opt;fGi7nwQah+4Bi{Y_X)iRlvaQx2Tz} z3$2I%4G0$(R1ihpXj&AmI9nm}8F+S++n5t*D>T-*JovchjP@g)-EKez8vg3xd)vss zc(NM4&mq$75pVf>8N{%-<`LqpK@K4?2veFN6xVMDyd!^?Mz1VLvn2u?^9ls_TUS3g zoLi!($2^fIO{Fsq3=8vXUmk`8Upwv3ain0%Db8OCADCmkT@yi1(b2;mUce`QZ1$W8pGRb<$1e=tYaqE8*f@X zj(vVn%XCcjQ(_U8qK~BJ%}uyw#@^gz>_&gds)up>FBfn*UrA8s$gK6aL$#wecj{xf zX9~qXzv`LdMVnO7WYnS)93rScN>(ct^mRp-sQ_rS8_JPyoL$S=TXG^3;<2w+`Ww8l zF4{#x-q_S>G@DS6+cH;=IoY^}=U-TKrPTe@ZU-_2E`h#b^S!V3PAmj${>X$P5Fc`@ z#}p<{iIiV)Ukqm!i6?(4cb;`pEs<@fG&+uz zDmSyyDBV~b;13~-#-s>JA@}SrNtBV=7SS{6+$hJUwt%yIU6*s1KBMv|OK0Go|H>N& z#Xd3nDcm{q{f`j-7E0{=%YP(40>+I!XMl!n2hmQ*hR7MDKu@mMaEo?833n`R>qi}M zI^=Z&-ET8VYsjlc){BxF)i*-rYcQCBXth$BppayG90^8*lX{)4U35}oi?muwEN+}a z=X|p{ES6!CuwSD2QyvkZ|Kh*(-qvJ3k6EWK%}V^dJSrq=IYRWp^OICut<*8QpykMl zAo&l_u86}8uc8|)-}%UDuAdcqvs87J>7sR;C5kTn!*@GP4&sJ_DgDK~kZ3Y)GY|NB z)`Zz9Z19iwGM&-C5}rH>u9I2+QS$yG4frcj4%hbN%|a&^{eD@ZHos?h|39e>8Ma4* z$V;Bb)=)XN4>DnYTE_oD3hq%4(LX497|5HEWIy(%&b%c5w{72_mp7@*uWTAnD)K-7 z^ha6Zhh_mX$^POykX)br&L#T^>$$bHrG^i0W?Z=P$pHAfO3CypGh;gG@cG}hLC42_ zJ!D9KAR0wON8jM%Lm~YhB_J>`cl;gTAo#m+SEe7vcs6U|pT^zzM;YsNonvoI(my4} zUku*gAjac0SvLCD>HTxgGEaX29J!wD|5qRF{{n}={_4S%d+Psx_3s+|=iXnW-((2v z%l|cbtrKo!eQPA6(z>I)oWk9-8#@oJI5FU;K3?EUn-H zuw!Kf=)z^d@k~fa2%fm;+)aQ4heITWQhAQbg37b9eWJ>T-vI7cvd* zs=1o^K2>W&0a!;_SpyMBp4YKQUq89IIPgD?c#eoDC?Ejsp0a-JzuUk0rGTs@fa!>0;y{86PqojZ`}Pe|N4eaIE=zq~w&v7oR>}*{ zuaQq#pvoPE49{YhSq=uikn=sTzNj*th9=9&5uTPmtFOxMEBMmv@8h$y)areCy;Cf! zq7qQtbd8Y0Y1dX*y^!}%bzUuf4E#s7RH4lxC)~emDUpH!Ab{@|ju9p|J#?=vGp&;`Pm*sH) zGmDdfCK)_72XE!aT=I4*6=~{6X$)*JVwU*(^Ja2oTP^XF3I=JocW)2TWsFl9ieaNxg4Qw z$v;(@CVf68480IQuLSG_2g@uLc}XcKGQ^_ERmwjhF)=Y6o}@kCDQh}?J9jR{q{%hk z3#9*zGt!hbbESGGuZ-Kc(|8&ze0uxkl+wKDIqq(!=St{c3YQCcoCUQBEzw6DIRi;H zUyznrYVmBod!ZY*bdMdkrevKO+mQk9IOh}AKjCOH!H;u;tgb#M&23DDQC?|Qi0G>_|&qmt=8XShDq^DPU9T^y;5<^qIhAY7d?M*-qu z3$koS_J=#ehx+EG&*5tG{-tj7cN%y-n$<82^htqXxt)%X?|Ik_P#4=+%U$s=prj$e zJls9JvazG<(*|jshzt#%d0fu5kJoy81_y=Hc-`KZOwgvp%%K{Nxr;mIvW$Gov&iHG zo+zgJitQ(MZk?>kl`+BN)fL@2Qb$;{1d%*zWS;?9O|NK3q>UMSiuVLZh!{@Yps0nM zRBvt<%20Xz$!%%m1n?htWa+{l{XJj(&{exc%>!7WC(2@P?^SN{Nm&dg&ow7^3Q8W<%~;NWma*%`q(#) z_HNo zTf1Mk<9b0*A>iBfSW5V4uP_^M&Q~)vky)Ar2d+INb}T zB~A*p5iJBDP6QBrzzQ>>3IxpX&^1?i4eG&mAgaDgj!jkbm|wZ?4hjJ=8E{v;B{@lMKMaVc6T(w~CCFU~Jd_7`vP&HoQ?U|UH{))C@l zO;>h~FS2_0ii)IAzBQp%`}WY*DnR09Kw&_&3qJ5Hubp%iy6S#Q%UD-MbcQZ7fE<a7 zDIl1}%=lrpsSFSmQn;SFPCbs>!cOoq#v!$o$|o_8-~z3SVT35G=}cx-Qhe`Of( zMG*gD7!V214oUO~fQ_;8PIjZ0Z?pWBnnvgAN{8diqn6|K5IaZAF&ci*=AMnzh)?y@g~(iM+F-gcZn;ue0cYTTKrlG6ZThF}FHoamRa8 z&$??Du+A$21m0y0e!%t(_-e* zFDTc3?VAtJ?s<#SfQF_IBVm*01Ys~R= z3jXi+Gk*#YQrL++@@+9i#4)n(C&U-?E?7?bNrsv%R#9^u8UjM_a4y&;1p9}2b172P zk6{{8e~Is{++YE;pPx zsw)B8D%!xl#~*&-&0Irg_v{q!#nTYHnkOg>vGXCEOdy@ZEonwGK^*fRY=;?^rpxgv ze8P>Twy#gl7>Ug_{KriQg>S_!?mpf@TDQ)coaD8N+^WweTxAHhd7jgalsT*=( zzq|g!g3LZA-^&^j`k74js@R@1G&1R4eT{CX<#huuEsDHp(E)_IcXsEj=L11_p_(go z|Fc&NY-fU}-qF_H$gN477eS6)DrrgPKSfo7z+4pRNvLg@1&p0ocbAmN+WDkn`=q9p z#|QqZs;u!2`A8DBD9anZ)ZHo+d(Yv7p?OhCTK*$5!)MnWuqbiY7yj8O2%Xyji^4jBe@*G*r zjhdm^JZcH#ZM_Qd8rW=Kn``mS0DegMY6qc6RqNwFSWomqIBKz~*@Z#vFFUE~33O+6 z83|WHClx8flLmQ@FwJ*sP*>fj0#MZ0lqUnWw~ng^4>M~OOl|s`z9bih>l_RE?I{MI zzilW$9m1H;E(;dJB3ajgzJrcky!#|59PP8^S26ehMu|Evc*I z^a1p7w7b}C!7)*LdJe#BDyQ2|T^UU;N@FfUK$wct=RF8TxT69`eyQqYtc%&@ez<=g zfn#is=;|x*b-3-&wl3+gqJ{DaV$jG}skd>w%%UEcsHi?$IhK3G#S>}lcADa8m`0$> z&itz7dE|@Nc~&`&jewo82kLelfX!M8i4gzThu!Om!nItYTGvgfe!=6i+huc(Ydb5u zAo1PJ+D|znx=t}$`x8!eOOmOYU)qSSf~1d zMe_~YEAhbxB7HKtj`*EyEHVG}PtGGtnhDevpD1!U7EI@ty7juw!y{+9oujDwQI>AG z-}98rkwJo7P&N9;=d`PzX9d@9985I3;A)1Jl9!WBvN3lZO(;X}FAIw+$gTvJg&WJ- zpRhGwg}x+`BMuSI+%b|Bvj;I~7DWG?5e&KQ+lH9^)X*>(idI}U$h!1o8dz zTLW>kDbRfTqZiC0q_V$1AzgVK$#I}PyLlsQD?1(>v$gWRcgtD~V-UCPDc?$PfM`m` z@ZlPK=cu^tw3ZV_XnX#9$le_E>}*q6`}@V)Dg{WtyQFn)nckdfpNR%Hl#z$ndwhVw zDA4)MU|cT?FE9lgi2sA9xHMtiEZ^ea*X_#N;_*Neuz=J9BIRvMb+0xb`Hb@YM?OQ~ zR(@eXcqZU(LtXJg|nB?3#?0(E_DFP9CCif%BArVSw(XKt9rwS!4}KBH!48CgX( zsZ1!$?y|5FFDT!Mtbr10y>>IT-Q(fHV->JXV$*clV=DI)NeXewlf`7tS<*bJNR>ppMRoC1m zF_xwfdUpTR)@o-cgU5gvd>}3Q2SYha16IDqm|z5ipy4bIcL zuoyXf&x)HQJIN)>3lv0-}~(r8W)Cj$XE zlw}#U7;3~#MsAgY>O71}c#TgCkz;!!a>5?KI6Z7`q4^SP0=3kc8 zr+Y0pZTi`xXN-qZ@Z{m+4>Kx`YV6POLev*0Uhtr*Cy;Qc#i)l=ZuvACNJ@i%{S?M` z^ziuD_hkgbK@PzkLW0+)Ni(C++BDFOyKyU`rY$u)6I7h z{8-V8E?kQ-NJwAWH_V6j;5nhtJRhv2EhfltPvj4$9TP`k3J~a^9qyq0^ZF-ZFuqzD zYV$;`c#N!#mXG1Amt42Q@xbf@HJ+-JV{{?8D$67f;UB%1xwUDr`h>yb@<4q zTyi(WcGA!<@yk8->j!-?I9I6@DBK@$#~|Jh#jpA|RPAMt3lhE-`hjU%mzr~L^=bjt zC&u#Iamd*h>MJEB=LS}+4EmEWs(8`K`Hgl2M!KCv4jXxH>x9SAJ`dssn`*LP%-q6S zH`#poJ>qt0pIylKdiA%Jd@J{dzS4(9KqM*y=|5@}JFCcO(&y>hHq&rvcg}r{60H^@ zfPuD}9IGy|86wKnM9+I*Z3}(Tnx!TLa$0pb;0a%vQ~Xp3`yQz6U+B$74KZpoZ@&fB znGrz(gRzKpPgT1!qeg~RKiR#ux#P?gjnVF^+L8IjE1HtxB{YimO}mR^3)NbK;>THy zhvFl;v$x#!sE>rGtx!W7jTsys*6vuJE`m~f04qvu)UG@ybpCBzhH z`ZEfC1X@u@Gh$yd)RBrBjlItfiGhg_iGRd6bW{P1!&0yMGU>VdIIEam*OPpOvUw(C z91MDyE36#|$8v&b3mY_`eIYbfxYXw?Dms2LG^BLDJ$euLz};PE^K|rFyN%_@CNO?Nglif{Dp{Grcg?s4)edS(-ZY8gjeho{by(4NH^1be0@* z=)9;U)LX{#S69MhpWK;azv&Xbv=eLTct1yjqU7)pZ}0M}5l%BQqYYIe4Gg31Dpa%+0v-g)+oOxwK7M zl}Uh#b4_gFStt;hr};GsPYokFdcL2rzHrhk2Up9^!2F!;u}?Q)e@=1lp#R$Xgs~fX zoxaF?qHz61)4im)UWb-%np59b6SIvK`y%RBxj*rZagH&^pSOrl7*?9sZq05K&X)5s zm~@XC*xyqlf9E$HcB2B>t==!hT0HV9K^Vk?Q?rG}A@Nl@E4w(b04aX8l>sDkRdH+3 z9sxE$p}1^aVfb8coQ~J5wSgWo^=fm+b&QWmp)d{Z{vfB4+z<5z<>mBgf!RL!_*JI9 zM&6Z;3c@QdZsb3)4V>LI2^M$nJ@26@ZMDa>m{z(t#Hk;w^4Z-()|vDRGOc=>S8XE^ zwJ$I$k(7U7Mc7=2K5bS*p{_Qa%wuXXSUY#tX>@D%kym{Gn85app^Vpw-XK8tJ|qNNhQ>rJ_@WNKCINpF!&ExUJqk ze*6*(l=QMNz0&xpt*{d=}`H#baBl$-t9B2EE*qdMBk`iPEIXL{&--r*!cwAytx&v>NfnX*pnY_)Ta znu3&`4)dSakX-~nz0%?j0vhvs)Sc`pEo)rCafW;chw8>BYz?{-y*Cz(HOe0pzK)(K z1%aB?NV$znm3LKZ;lPS{L9k!qq8ZGmc{*n%hP=*-{dAky#gRLYK4>Ya$ zT6#PYUmg9xbp&rpMI0^(dynkgS&2LoP!y}aL#VhKR271LV=krn?#J@H*KG z`%;2eMU4`foU)Q3{xBqI!LctUjq{C1$P^A%$Bd!>qBk6GK3Z}Cy9{UPmi_G&G27A( z^w`mlz}7v1!-l-At<4g^3PSKWP&3|#cO5Rb+p$N^cnqh%a|DDK+cV-bhm=zw$8r&e z;*UmYDTXo(>8HSQId+=Uh~0uvuZNXyenmsA*Amuk)1-~LyRq1L1SbIDT7`b!9}aw<)>bXr#;vw^L9JQ~G^bk*`toKE|j zX&yz5T4S7N(-_Jc%P(ek$8yokjFDU|{+U!ua>Nnd7k)20q7bOjIeziu7L2OCgj6FR z1$ddNhB{c{ln0dihs(Qx?u(t`c~*d6-wFe&K`pt9z#uVY2RrLc$$+$k<0lGDSYPb{ zlR;Ec(lkd4?lH1r_%l4^qr(xD+j8=sG+ChHw$$T_ueV_#5Fdk`z)QNIDm4N~TPGWt zE9C+4hg~~Qhw1-~VgPY5pD?-{x^y3aE~qn!VdH5N$4>ErnZ+5+1k$UjPT@{s zM`sWCeNW0q-Fz&Uz06e^n*)+v?IfwOky1WlKC{&Fc+#qc*O@lq&y)>_oPL(XR$+hU z#6Jg1iTvLIM!U4Pi5{vw``hagveqJ^;euYKY8qwV5j(fz76O$S4<1g;21LUAUp^ZEv%$0>WEOQuu9cZ3{0{K|pxx;}|3+1_IL^=WZbkkHf2@qXTEp zJM`DY2fqd;KB(y*S91E7p1^ZKBROn(N0{Ul8k)_>byEUhOMWD4yFFb_!Fq3o5B>D% zD|B=pxvS!w5}2!JzLXIjoth{;QHy%3D@(5wt8+?3 zc@g<-N3*s@8fj$I5PBB59QHG}tQm*kAH!#5OaM%h0&3e&Uot05-7H?BnuX6V{Gh}{l*5Iwg%Kw#m#0G_B+l+?C~ra9hhjwUcbacG`ge!M^yAz z0S8SF1c+%`US4i*|2Pn-RhzVNzLcI$k;A5syQ%6^=i zM}_~@14ipNsl;ayF~DzCn;aOC^$it4xdhO3_5v;1%JzyXyg@Qcl_r;mvix(t`HIu>S2BtIJe~AGv8QKC9&XX**l3!&UQ&; zJ)|Wk_Zj-gkwY2%Gk@Rn^wLuLw$~ zbeAA;0FjhbNx{*etySux;8@%58e%|-~2j4Ny59f?M&f0sg zxniz4pZPq&j&4g6Xg<%M^|yT(61ejfW^GmEO==0-v0ya6dFHrN`Z`iJzqz}d@>+H2 zlN4iHaQ!W)=C?w_?*)yo|2Ol?&m3v;r1H|75*+@mr~E!KLZ8yn2uAUwr9YvmS;9+a zu76>;1UKGqLJy?SHe>SELAC9P^H-QUY&4?;7*8R3@{@LBTf_s;Kbqdleb3zE0Ki2; z?ZnPfx4)AH`0t*JR6px%OuFXO2rv8(#tyxCHQhedKzfnZiOt)gv2lC1xyGvNW2etE zfSf@pI+Vn)VB{B*G=V!sGFA?`_e|C1^Fi`r8ts_$s${(TaX$DTQ6ngRA<@wbCA!*| zy@mCdx`A^aYrwy|=#pRJ&f!AP!zXW*y+=eo8yV?%z>;X1MHkjfO*^Gsk5`j-CtNBx zAssSqUXaGUr69s~zVvb}uXIVuv(O;v`kU57YWBB<-!Q>R+*a{6DvlQini}?~eT~D{d2djhZ{6yNdvI)ncDJe|9Uq$q^hHONq6P6Jk zU2A&%fQ%BaZ#qQiD^W*(PndenZvD`$$)ZaRApa6)F*=TlLM|%OQt=Bn&b_5otRKwg z+T+~P+65-zkjnb52mGA25LIpJg;ZQo`KTECnRts5*u(zhGrs-LtsjL$7iyxoC zh8X+U$9AO^$}t<`jpFd`+)HqQRko^2){h1=K6D|=sBl6%%(MJFe*t~%DL>g?gw57E zN0c#tdkW+FYl|mjcYA9c%F%{-o9_%l>1Z`6ZYxgTiJ=mIcoNT+@#CRny9DkB4x7u9 zDW`ITY5=C2!~DP$las^ek_G)ds5q!+ooq2)?2Zw8`o0!(ew~1y{D&vz^mjC50^Xn} zaJWIR@Pe_(5jC4@>bZfll&sDlQjq3`gq=Jv^rAbqHf)UNkP!c6=M-5|2tp?RfhapA{ z6p_YnNSRE#7-_m7zz-(@(~-(Y^jr?BYvK!;trt|lG(bKadlz-ESIA@#rVT*SPxHc&B$Og}X zRja@H7kvoRoQ0SwD@z9qF_|jgVMif;`;4zW8}3%O@dl6bSS}}G5B7uHh3t0-Q<6VN zF2a{&7>e+e(5Gy(L8_(Cn;b61Ya`e?JWlT3gq1dnvY<3fbgfQ)nt1?^oe=bKcS4+h z{n}=Z@uu<=3-}DSwUQ89)s0wLF)HQ`cbHcXPb8-r=7hX1ilMR4*tu0$?+pq=6ke~Q z|8fw#HsP@Fwo}|0tzQ5L)Pp$1f2g^h*$%6NY`#E9@DG=`L#0dlyA_Eb@a7J_vQnMN?8GT{7|K8q+-x{ znoDgL5y37Y9O5@Ii~cEXCjT<#oq9uq-$Xqn;kz$W)x2xERGOPbNpVB{cpks0QC@Oy zb7qv(sy|EQI#s%9Ft73GiUyDONl|atf$H!^Wj1yxbt%{}|JpWcpnval(m(LLSIms3 zUo9GriqxwM=yJ#dr4B6->{NR@o|gv0WF*A&>10D{tLAXQ@9P@fP$wxw>s6sFR}M(u zTA*bUBg;8Tt8FU@ybWr;J)Z^2iL{&2{ONtDWz1KIJrEhzHA3CbL)vx*aE}%ki5=JY z+c62FY8+qK@4oW^J=Cjg>8n&9|KqRy^m=LSbIxu30G zn6FtMzLyq*l2ORg>X_|6*z2ysi8g;{BNLyD5W8ArUF?h^F#Fa!UvRykeIRB z@;FcUyb1R4Q8G(U!*wS1NGV?~=NJ*$o_L%gPrDiv6@4}zAo2awVHhY3jLJ&{X`x*V zt`jd;u46A;EM`EorN1epb{QFWbHqwNRH~!;^11Kg0^2pCZjWijW=w$gVH_MI zEzWD9#$XV75eGA-P0WrUHd>JI3^USe`sfYq>ZBv7Cb9Mqh2DcHS{jGw*RMQmp_3AD z8gawG$cgxFOzl)xz@zE`(&lb zT@G4JMB#4rqPB6tl^OyhW&YNPlH{?`PM^$Kks;PKeGbUe{kRYMe7F z!gS@E1gHk&J%BIfQOe7f4y_el5p9@H-u)(2dF{fBwx6sP(taP+^qk^*_c{9^n$69f z8k?F14$gXt8lbKLAaJ&Q%vOs`tdUd!rj%7Yu0E$->n3+FjR6y&9s1Y7K??JMOC$h9 zx-^N7hZ;cpO_-EZoCXy$HkE=Ak#q@)m=2EQSltFus;^06RKT9?DhsR`xt36m z8&A$l-dkIOe#-OUBM-%NF*#kGq>`|!{BfQj$6ZSD?fZJ-g#7|`srA0D{DY}sjiq7!SQqxHf&^u! zb#^5IK-hlY7C{3*bL_v@x)T3BpzL*er2WPy#4&Zo`o$g}Ub5Y#DSK9CVoR@zZE2zvcv0fIH^P1}i^5)fWPq6@9IQV~{hCJLy?>11Xch;&H~#Vk z+lwzZ2X8ARFF4>427*J8ti$FFh6Q&wnd-aE-*pu1iU`i%WtSYR9M@c~yujhGd`hP7 z{H)kShjyF!H)`h7WG;y;;<;`tVcp@J*IR)wjAGuA9Z1FQ50Fb;_{dmYxWhjf67=Ye z$j6w+?zS*~ZH@KA$O-x#JiE|ZhOMBlZuGiz?xBCx;N*ZL-Fo{()loWT1tcb{aD!-i z&yMLv#;s=ZE7;4Zzf=PJjI~3jBtTz9wycQ%$8zaur6NUm9Pv0(_J%ChnJpjmoxEyf zDYXq{WEoZsczgx#Oapggewh@v{MPw<1)iOo?6@ZA@8c(u@9(`wKeR0~($5jn{uXPP zQk)2C#gp&7Z|jFP)Jb-9%8p2`^KPp|Or|VZe^!zDz2__bED_eif=AEUV7n+7_{Bpm z0!8pIW!5Tk9h;$HU={+Y@;=x`uq7^Mh7BLtQZ%@r2U{>%?4EeH!y`^L;Yxh!_$#E< z1AeDcm=e5wqS_vWe9zo1e*YJ$WA9S!7tdI~DLR%4+X*Cm`XHUTc2BE-bsm0T-W(8e zKZ*CRT3P&!+zNdAtzwZPxrw8f#cCgj9LdhEZr0x zKK;yhc|ewN^`*zbj%J^V&Q%-z%Hc_^#aT2)eb+Gew#~8x8~>%pZQm5s z?$e;6yVW!cIH+HS2yhEiZTcepd}@ZY!Y-wL4xzG&*_k)l1MAb zfu4n^dG@;860El+004f3VAxhbmS;%L8Uhd*RIE5j?|w>9AWRRgkHAEUJmc+aYtb;! z-p$Yt{Ny&$K>SrL4<47T=*SsE()J_^GVE}%T_!nfbpq@7OO5N*PdkUzGkIGpJLdUA zHPox%Yq7tWHRNrjQ4owXyE=Mcq&^uSCjfq2jV6>{x>%$1p0bMEeMOg;^lOEiMTd*7 zy8SdOM;xeuWMNxd_M?vF%uiooD}qb{^<(Yc{{*9?cId^5@x*EyOd8Dw(2Y_-Y64+d z(Uu|MLJv@s1P3rK)-7LA+gF;BUIq7v->{Vg10m{UfQonz$}j$Fd#u|`SDkx_k7d|r z=BqAuHz|ADkHRS1p;nG;^FadG7R99Ifwq`Gb>Y5N&Uhw{e|uSPbe>aM^z^toW1{&H1MzogIkh&4J(G<;s+3B`J z9wHM?OmLKgSO|7{a8QQ_8-YXU?zRHWl#|JJ8lX|RvDDo8rfwT1GV8LzF z^_dD+-oBJg=~c`b4y6S)l`#Vmn%mqU9PJZGQ;FrtA^x&B=T2ikP%S&Cqwr> z$leMqL50RkEEkqK4_$2y`@Z#FR6X`<7jhbV(-Sk5AU^t!eaDn^%>=JkAsX6dt*S8xupaB;V%O&0jJz{YyPDc3n{tDoCi)y-J9~<$h<%3!UY&pm*OjWmHOMTI;fttoIUo_zu zu6BL7NhUBht5}y#QV^5;Dli=qI8-T4M5rp{=NKY!4#Jlitw%>MzFN207rU-3YI0QR zaoowgfyL;FrGHa>Ciez%V=$&FoZ%cHy-M19qWSuICyF^cSi&nVbuSqy_VyDx`F%B# z#qyZ_Ug>2Feyu9c6BbUF%vax_fGiCse=`V@Ljf_C*5c13E1+KeUhx*y!|51_&PA(K zB6YgVh+H6$P@XbNl`T*pQPX{h zdS7txyB0EAxk~<0W_*u<u=#`_%0@aj`R!u*W4e*BU_U;7kQsskbBN%xkAJ{wM`!PnBv_JLtSr%o$PSSQzqD zp^%0am;03&n)*;6Z0~vY(oRZz=G?2P=f&u_10o%!uNVsaUj=<=jDllt3x*%86_@46 z%b8IkT?{=qRgACkI58yPv{iC>DFg!}rdPvAQDqWpPskwbzilp9O?#d0y)qb?Ztd3< zObLO$CWXY+W+>QWNne;BYHw8ZQ{$SU=vbA;Mj9$m!fH^BE}-|R$#9-zqsSNpp9dwR z?rO&t-=l^9<^_R+?x60Q4>uFz>9RB^0^B8=swH)eb1Phnuz>Nwgpa))$+Q85zc;4fv4~iB= z=4*-~KUG|6jZjj4d}tGo_LO2+t6JqjXh~49jYtGtUu$_^pJARU#w-kRJW~iZ6j4aA zDHMk8$-_>v3sZpu8A~VAczW`)JB)eeF7LNB@mz`r(?pO-RYy{+S;_pME@p&X&zK_H z%;K-vT-zRgRrK1cV|S<<84&XT2$fA)1tz;`k9(#&t1ss0w_O9prjVRFeUGnMYoS`yY+;&l=bST{Ki-Ou$f(3j+7MKUG8-)EPgcM zvnjl$&~h_o;Vj3r0xNf1{W8^K1xf!=PfQpHv0A%r&4_!mpC~_@R}?uy`7)fFbyRYARVO4u$t7QEI8zIY%c)-tk9nC62(TkUNl3qVN zHYV`;(*<#3Wz`?B7U$8doFT5i*ZUZkT52cyG&0e6z%E zUDj`adp>+pJ7MK0AUVjPLtB)u@k^})+T?)*=R@`4{5{@FQFqTJ@_AAbYvdKNJ5RFL z$|v`e?=UWMdR+GJNnoEtk&-0r(5Q;|m|{A1x*l=oeoo4|wj^6Pa!F-^9m@$C)0# z`-Z}7GvE}nf1GHrb~E5nn?nZ%TI->;y6D!5 zP_Z19S2P)3Er9lyOAr1oQfPKY<`3Ufz2p(qbS3Pt@QFE8Z=xvEnISG+tbyFXmqKa~ zS}na-IUDVX;;n}?flt(GYP$_bzQE=<;qgPW+9v(LbF~m!2!)&SRqdi-hcJG2fb2@o+Z`KCfpZY(4g~KG7SBo-w zOp(*IWlvA&mxh9e#rSd1J*bsqDXS;+Pm(az9Qq~@v=!T_g6VUgq$*u&son0rF9S&A z+QwU7Llf{gzce7cw#sy-p%wS5cF~Vlo&^65gLvT<&2lWHK1IFC0bk>Lq}D+jN)(C3IR< zn>q{)_Bi>E7uh^4&knZEX{yE!7RluZau5-TCJ?-rUW^%kYT#-xzR7f~n|I98F~8YG zsr0qSCetrRh$b8SizMNx1=O7&Hl~@np3u%lJO@)N$>V!pw$wzhyDw3s(}a_%h=B^_ zTFIi>KHS;`gz}#kfrm=n-eGc86Hc85`5z0w^z=3fTq6^rWzGbssB?z%xLxHT63AZw zioOk3IW-JhuXkrufl^pHd;?%?;)D&hCFI#go~*H6!g*+a^Hq7(4g ziYQm8wR2$B+{lPwz7r#y{3*^r&rZ=%f%8M8J~l5H8x>=OD88InXuXDgCf=P^Fjk+{ zVB$eK>+$2+DMSK0tOwz?SJN@^xS0MhObI=lsWCrCqohMyk;fU%iaq$+1e>xhhpOO6 zSv9(|qA+OHT2NeAZ88^S%6`WWYpW)dxS(s(#=vqpG-F5^=5u{|^!E=9-|4}S^Bupc zVMVg-G+{??)H{wrJYfFf!2yXx4u>oJiuxtdmkp<^F%32F_gA9IXjQc`$}q{&3iLhE zvM|(5-@)vZ`NK|y6>@>zSNEef zH~^B>v`_ETgLO_RP9}fe=yYA;gM&b%0idSaU8v|l5vX;VZLCw>%E~t`;WFXM8BrT# zF?95DXCXPXI;e#{v9v1H{IquDB^L9s?3cT6h&ASn+M^f~HuJciP#*}CZwP4HbBx9bHXpyI&b(LxvTFhlWhpQ3?lvRKRb zwQT-rDpdj6SOOQUaKN~x?-AOUK5l8UVhnl|Gk?@w`R1NRG*hTrEhV|?^x!cJ>B3rm zGJEr(!|y+mwn%^+5E>jGc?mujs{YQ%fA;-2L}X-8$T$*3#|1S6#q@|@z0+~`X0draK|ro4*xz`{__Pj z{_%2PU;Lo@-=#wT;2!wm9>qw|*Isun{afR2eqWAfPHA}cf8{+MW`!psptA9Pn6ghc zq~qTj*9BBbfXinkXvT=g{u>1U(Y!8ih1J!f@EJAm{_3Yc9 z_4GgR5v}5%(*gVpqa+j7AEmJWyhQ{+m;qewPQ2V<`4_~8&jSh|2&9#)P4@`5`=>)6 zZ$b9;@p1&m@#G(f?cZn+;0rACBjBTzt3!$FUm6#9^>~@gX03euKc5NsjwH0u9*BXY zz(#A114a1G-ZU-u!*!X6xg5)s_$)sL^EvY)1C4t;yL~|TAjQHF`SY-yQm^95h=ZgMB-@w@q=DJ^b zBOd0$E8f7#$9MYA&Li=hLT40+ZGHLT=;v-;07l1UIitZHt}f=P*88024E~BbDueI8 zvmY%;yP73T0%8{r)Hi{WTCD$TsMIrPV|4KM@74wJZ*awaj%k}gav=e$J&{lo4G~MS z(b3}dWxm7L5}Hz5XfF*tGSfEp)j|!hqDXmYk&Jkm!t>q86K-%H7Q45XAN!F1S*8Bq zwSL8X<{cK?q&6`iKYMhh(yf`SHIIvl-rq$$-5Bc4=~7nt?4Wv&9dz_6HM`3A65*g# z0MU{_(FMa2fWh3E{8-0{iw`=vF8dOLQ69 zpocEMs`;k;pZpIZ6TPJPsP}pfv=Z{R zpWvBCqtbIW_9~msMTJI8^$6JS(G8{|&rZOz;vLj-|9`-Tvq;IBJ|FS&2HG5oO-tOY|js5o$0Sp&DazG&H|L4DFDx~)^ z?M%yiGP5A+%U$!}43(Ra6B_U9E4u{>#kRN&bF?d@*zdI5S>&4<2&cKFJT-iSqehR? zo{<~omg?@ye!y>&Z*s}iO5?38^S9Drc0M z{bWZ3y`@-FJ6h?Q{P#X4MGP$Bzkur2P^9AMg#KTLuvCQh&u+OvfExJZe9jW#%>U&_asE0 z>~`GFw~rX>2#%?L9WFWbd-KUQ6d_*4T70Txui!7lF&HxRnpyljkaiY{TvWD9QH2k%odmaE=JbEM`%8lIfZP_?Mx_8sNXK7g%Q^gKK z^yA~Rp_&~)+j%9QJCogG_a%jqFXd3U<~_##L}U2jk8BsKBd^=dZ6gA?Q)w7p>o51kJ7b_oS=~zVgg+ z27~ulDwzNYFPp-JE4-=G{!^B>=3K#lt*v<2z+Oxm2pUZhN}jrHQc|=gkS~O2wG*;s zgmVnc?XeAm>*@JIh^x#|lD5`X?|Mt(+0Ko8Eh=y!rV1P~cM?(2fqZ1z-BM~Jh1^$& zmf8tbQxVzOq^Dli_ z&#J6sB`ayw+zR&IFU-aoo12c}O!k%}G&!_5@T_}T=qI24dK;Exsnt|7<5cyI#G}dV z?3;O5e_WIHGt`uzU*<5>QVgCHx_$WG6J=0zuc=3&i zJtLUl@_=C_A^P~S*$+uZh)af9mek)dWgA>&fDl?1wsAyjR$K_d8&99FQL(8lrriX~ zs>zy=L!j&I9jy;)JFVOb&%iCG(c31=D&&)RkM4};8bCPLtA`Gj*q{7tm*VD)AT4V9 zkx2lXsdw(WHv2j>fauwkYN-Yn44TgSK$ii_nFH=NQ3^}kv2Z)RA4B`_1k*0)e&yjb z>r?nl_Kqemn=YRsCsuwMXKgsRoqm_z4v<_z-|TZn5msrA_`q)vKH0S9s=IUvYvGnE3%|6brfkxTnKEe+stJ=TBJj^SLF%gFaRj|FcUwslN z&UktuLgy`MzfevN6!a~PU};?JjEhttdb-$Fn>VAC!sh<)XzcD>niI_H^8`4Zz> z5r6OLq!K?FWRTvuBuzoWfvZ$4(GwR~O@mE-SiZIXYCa_xmw7imv>|j=iCOQ>UAZ0B zQOy05>%B_#djSOYnH#j4nQ?gxuq=37k#SG3rGRjhLr!(MrqS9hTI}mKZLA^S^gpMt zTxt(|UXUcu2JH#du(1kMBB@ge#(ojN1_TBy5+*G3W>6K=T|(L~m>Py8Zc}HE<`f9H z#`%?_)yyFHxRTU^4me&3Uzdk3Pl!yF&T$({Yd5-)OgiEX)ws7_;1D`+S>hHEZ}+%= z_eQsAU;p9koLgvqheYoXtFyk^g>Xn$Axpb@Z4ga+RfiLPN{*MSa@@LUL(8kkXLquWlR&7qV_c%`#EPHw9O-4o)wPogDrX@IzJ`x^nNGI|6SWuT*)s5k%fWzb zt$_JF_+asE_{TMDqotLO zsCq8wgrUitWySKVmgPl87Z!<@AQ2W)w{Y2|^Q9yrT7c>&=$Uj=f#O_XrK@6Tnwrvb ztG-YM%#1f*tfqk^od8%GILLTDCwVyDJjX1oQLc8fUC%rNO!yodM^!hCiQ~YWc zvqQAZW|`2I&?67`we77>h^d`DQu>WEpr*wU{3YO6+HE;1RdMU0794{mYIvL|Bs^-K zYb4sM?mC_*ofb+}=I1G-i@j9a{o3laz}$z4(}k`|=RP)~Nqh^RHItDgg*N+)yemJ! z5jWAeufA(SGPMh}bB^15c!SBBs}mWPw%)%N7QqNQ)4gqZfJ``L91NUy#ZKgmp20%+2-I?BWelGw0Ner(sT zUcmK(Z(LizbK7}8iXKc?srC*4ztuEC8ecrjP_vSh<$}1!jVzS|IBGwb$=%ryW=I~* zHd-kHdNp3hw2p0o1#`Ond<=e8XvUM@9}%0#Rlmc?$VU67Clml-a46MG9sq&H?$Cs#b?`%2nMG`ARSO@V9!&X@s{u|vJj5Ea>NK9Z``K)TJn~BBK8s-N+XCwq z(uO*xIJ=@j1h%IPQG3lHEsge^CC)O$Glg`zF~#4)?NLxzG>Y3LE4SME**v#AZMUt# zER!sl*N0k*!t64uT@BrrwkE6#14N_MQ{I{Zuwij z>+O^CyPcQz^$l1W?5lSTYdeApd=pqnoTOI?7M7ckk8y@M?CJ@65sSDUov@mhaQ3eD zh>A5!KYx)xpj)!9t=iBxB3D`UYR77piY_)3QCHP%rU()?@|m_?WJEKP&Qvcn6uvOQ z9LWUf>=Ut#M2q94LDQ1+l?FMJ?=0ULg)|i=p|^Fs33O0KcB+NL0U7(1D1v7W+xjfH zUwC1Fy%rf>f!(JGzHev;GR~z3>%o1khwUgHc(ar@p%#YNi`DzHL(JAnc{r{}T>aC> zS z6w{?;b{Ce}L8Gf>bhcf#!{#~sMTB!EY8K4MxZ{fF=TF8J6LR`bPp$9g^dAG9d{AgW ztWAti5Ig=|Hu4Qd!u?^UXtXJU=GGh8Dw)$MedQ=!6dB$;`dA_k$?Ri!z0C>6*deW< zev!TVq)pMKY{Zn@lzarHv5|N4lfiwa+#u`>1w*?<_>&XN!H%8IVFupjGY>pvlY%O- zv-G1`{h05dd%uK61~-7k3C?TqHFI1s@&?UQTZ!m=90qji3CltB^9*QA3x=WT0MvD`MS)uoa!M1a2 zD#{R?24uUPS;_p+yxGZM2!&es{^q4t$i3qIRL0egJ<-pnfyKMwY3N)V8?n^%)AIC% zRW8W#Da51eUM;{-X9>#)KYDhEGNE6LYfyUw?IN2h!7v{eDi|!!x%r+vslt>~b8m;E zdo+uNB>=Qm8_vr_%&Aa(t*gru<300MBZhW$BCdhJKPzuXB(Te@IJf3P{oPK=7{!{e zGni$OMZPGw_)ZVH=j@5%$hW+o72`Gba_b8Xou^AzJ*V<(xZ~r^y)VQ6oSHa+QKY*7TmBqq){i$qbun=z`RWk&{@P_9AaeDx|!wQ&brg@m0L zLLQ#4#3yGJ?H}GPd`JJpMK2%aQ?hJUAnz_BZN<`VbNJ12bV{M{);$iUrAxihayRqM zj~)4vijFWer-^(Gzm6{+`aj_$_x5b_c<6LPB7TvL;1VzEI7Gv_@0e+KTr}1!FtG{| zt1%1A5`0VnGqX2fibu$bj-Gcm-fAko#D?|=w>swD2NQzk19nzvByC&e zFlQ73iMBqP+<7TVX*c+jIv0H1`Ow4Jadc;el^-=+jI;S&Pi!bXfYL{4okBCO%{)ID>y8 z#rMBY$VPi3A3Jm>kBF*>xOCcI9^wvW)-vZ5-@(AosA}wLas%Wom0nJ%yRM`1% zJ(c7KPrgcP3UU2S)1BG~;PBHn($~MuwomPm$!cIQ9c>-%#$Y%ROz5B+CPTMYXIbyU za_MwaGm;bi!TC@~X#funuwNC|b~^uWph<)z{jpVaX^dozg-_ytcmb0BrP|f=itI5? z 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⪤_xXX7|YZNN<@%k`VFy(RKdGz3)jh;bM5Q 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 literal 0 HcmV?d00001 diff --git a/RECOGNITION/top5-monthly-2013-07-25.png b/RECOGNITION/top5-monthly-2013-07-25.png new file mode 100644 index 0000000000000000000000000000000000000000..5a95ee0a459b9778363ea83c72c9112ec565076e GIT binary patch literal 80168 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 Zgl@~@>+%e-oL@V0Z7dwjYfZgg{4dUgzYqWb literal 0 HcmV?d00001 From 7dc0e08f7e839c9b6cb35384a4d9356ea35dea03 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Thu, 25 Jul 2013 16:28:53 +0530 Subject: [PATCH 024/110] Add README to showcase a few screenshots only --- RECOGNITION/README.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 RECOGNITION/README.md diff --git a/RECOGNITION/README.md b/RECOGNITION/README.md new file mode 100644 index 000000000..c6b3c1aec --- /dev/null +++ b/RECOGNITION/README.md @@ -0,0 +1,24 @@ +Recognition for Projects +========================= + +### Throughout July + +Ever since this repo was created, it has been in the top list on GH. Be it the daily or weekly list! + +Projects is the #5 most forked repo on GH done in Python language! + +![](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top-languages-python-2013-07-25.png) + +### July 25 2013 + +In the monthly top list on GH. + +![Showed up on top monthly list](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-monthly-2013-07-25.png) + +### July 14 2013 + +Just 10 days after the repo was created, it showed up in the top 5 on GH. + +![](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-14.png) + +Check other screenshots in this repo for more GH explore page rankings following that day. \ No newline at end of file From 29ef0f59da253d8d6d04fdd46b466950e4aee1cf Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Thu, 25 Jul 2013 19:33:14 +0530 Subject: [PATCH 025/110] Factorial done, README updated --- Numbers/factorial.py | 33 +++++++++++++++++++++++++++++++++ README.md | 8 ++++---- 2 files changed, 37 insertions(+), 4 deletions(-) create mode 100644 Numbers/factorial.py diff --git a/Numbers/factorial.py b/Numbers/factorial.py new file mode 100644 index 000000000..b09d5e2f4 --- /dev/null +++ b/Numbers/factorial.py @@ -0,0 +1,33 @@ +""" +Factorial Finder - The Factorial of a positive integer, n, +is defined as the product of the sequence n, n-1, n-2, ...1 +and the factorial of zero, 0, is defined as being 1. Solve +this using both loops and recursion. +""" + +def fact_loop(n): + """ + Returns the factorial of a given positive, non-zero integer + using loops. + """ + fact = 1 + while n > 0: + fact *= n + n -= 1 + return fact + +def fact_recursion(n): + """ + Returns the factorial of a given positive, non-zero integer + using recursion. + """ + return 1 if n == 0 else n * fact_recursion(n - 1) # if user as ternary operator + +if __name__ == '__main__': + n = input('Enter a positive number: ') + + if n >= 0: + print 'Factorial of %d by loops is %d' % (n, fact_loop(n)) + print 'Factorial of %d by recursion is %d' % (n, fact_recursion(n)) + else: + print 'Not a valid number' diff --git a/README.md b/README.md index e6ff54517..cedfd03b5 100644 --- a/README.md +++ b/README.md @@ -3,13 +3,13 @@ Mega Project List #### [RECOGNITION](https://github.com/thekarangoel/Projects/tree/master/RECOGNITION) -This repo is in the top 5 on GitHub on [July 14 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-14.png). (And again on [July 22, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-22%2013_10_30.png), and again on [July 23, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-23.png).) And on [weekly](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-weekly-2013-07-22.png) [list](https://github.com/thekarangoel/Projects/blob/master/RECOGNITION/top5-weekly-2013-07-23.png) during the week of July 2013. +Ever since this repo was created, it has been in the top list on GH. Be it the daily or weekly list! This repo is in the top 5 on GitHub on [July 14 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-14.png). (And again on [July 22, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-22%2013_10_30.png), and again on [July 23, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-23.png).) And on [weekly](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-weekly-2013-07-22.png) [list](https://github.com/thekarangoel/Projects/blob/master/RECOGNITION/top5-weekly-2013-07-23.png) during the week of July 2013. In the last week of July, *Projects* was in the monthly top list on GH. -![July 22, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-22%2013_10_30.png) +![July 25, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-monthly-2013-07-25.png) =============================== -### [CONTRIBUTING] (https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) +### [CONTRIBUTING](https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) See ways of [contributing](https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) to this repo. You can contribute solutions to existing problems, add new projects or remove existing ones. Make sure you follow all instructions properly. @@ -63,7 +63,7 @@ Numbers **Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. -**Factorial Finder** - The Factorial of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, ...1 and the factorial of zero, 0, is defined as being 1. Solve this using both loops and recursion. +[**Factorial Finder**](https://github.com/thekarangoel/Projects/blob/master/Numbers/factorial.py) - The Factorial of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, ...1 and the factorial of zero, 0, is defined as being 1. Solve this using both loops and recursion. **Complex Number Algebra** - Show addition, multiplication, negation, and inversion of complex numbers in separate functions. (Subtraction and division operations can be made with pairs of these operations.) Print the results for each operation tested. From ad8e10229c67fdb01f334097ed94ed16d33c52c7 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Thu, 25 Jul 2013 19:58:46 +0530 Subject: [PATCH 026/110] Added some complexity to Happy Numbers --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cedfd03b5..822833050 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ Numbers **Complex Number Algebra** - Show addition, multiplication, negation, and inversion of complex numbers in separate functions. (Subtraction and division operations can be made with pairs of these operations.) Print the results for each operation tested. -**Happy Numbers** - A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers. Display an example of your output here. Find first 8 happy numbers. +**Happy Numbers** - A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers. Take an input number from user, and find first 8 happy numbers from that input. **Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* From 3f96b6dbd606b9e9abab2c3a66cf07e982fa9cd7 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Fri, 26 Jul 2013 16:57:49 +0530 Subject: [PATCH 027/110] Better way of contributing solutions --- CONTRIBUTING.md | 59 +++---- README.md | 460 ++++++++++++++++++++++++------------------------ 2 files changed, 256 insertions(+), 263 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8af03cb26..0c35b80d2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,33 +1,26 @@ -How to Contribute -================== - -## Solutions - -Please **do not send pull requests for replacing my code**. If you'd like to contribute solutions, please see the following instructions: - -- Solve the problem, and keep it in your repo. DO NOT send merge request yet. - -- Find the problem in this [README](https://github.com/thekarangoel/Projects/blob/master/README.md) file. - -- Edit the file in this format (notice the double square brackets): - - \**This is a problem** - And here goes it's description. \[[octocat]]\(link-to-octocats-solution) \[[your_username]]\(link-to-your-solution) - - This results in something like this: - - **This is a problem** - And here goes it's description. [[octocat]](link-to-octocats-solution) [[your_username]](link-to-your-solution) - -- Please respect other people and do not delete or move anyone else's link. Place your solution at the end of the list of solutions. - -- Save/Commit the README.md file. -- Send a pull request for this commit ONLY! - -===================================== - -## Projects - -If you have suggestions for adding or removing projects, feel free to [open an issue](https://github.com/thekarangoel/Projects/issues/new) to discuss it, or directly create a pull request after you edit the *README.md* file with necessary changes. If you add a problem, make sure you add it in the correct category. - -It is required that any changes made to the projects (this does not include adding solutions) in *README.md*, must be reflected in *README-scratch.md* and in *README.md* file in the relevant category folder. If you're copying a project from some other webpage, you **MUST** link to it in the *Sources* section at the bottom of repo's *README.md* and *README-scratch.md*. - -If you skip any step(s), I will not merge the changes! +How to Contribute +================== + +## Solutions + +Please **do not send pull requests for replacing my code**. If you'd like to contribute solutions, please see the following instructions: + +- Solve the problem, and keep it in your repo. DO NOT send merge request yet. + +- [Open an issue](https://github.com/thekarangoel/Projects/issues/new) with the following details - problem you solved, language used, and a link to the solution. + +- The link to your solution will be present in this [gist](https://gist.github.com/thekarangoel/6088143) like so: + + **This is a problem** - And here goes it's description. [[octocat (Python)]](link-to-octocats-solution) [[your_username(C++)]](link-to-your-solution) + +- That's it. As soon as I get online I'll add the link to the gist! You do not need to do anything else. + +===================================== + +## Projects + +If you have suggestions for adding or removing projects, feel free to [open an issue](https://github.com/thekarangoel/Projects/issues/new) to discuss it, or directly create a pull request after you edit the *README.md* file with necessary changes. If you add a problem, make sure you add it in the correct category. + +It is required that any changes made to the projects (this does not include adding solutions) in *README.md*, must be reflected in *README-scratch.md* and in *README.md* file in the relevant category folder. If you're copying a project from some other webpage, you **MUST** link to it in the *Sources* section at the bottom of repo's *README.md* and *README-scratch.md*. + +If you skip any step(s), I will not merge the changes! diff --git a/README.md b/README.md index 822833050..13b208196 100644 --- a/README.md +++ b/README.md @@ -1,230 +1,230 @@ -Mega Project List -======== - -#### [RECOGNITION](https://github.com/thekarangoel/Projects/tree/master/RECOGNITION) - -Ever since this repo was created, it has been in the top list on GH. Be it the daily or weekly list! This repo is in the top 5 on GitHub on [July 14 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-14.png). (And again on [July 22, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-22%2013_10_30.png), and again on [July 23, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-23.png).) And on [weekly](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-weekly-2013-07-22.png) [list](https://github.com/thekarangoel/Projects/blob/master/RECOGNITION/top5-weekly-2013-07-23.png) during the week of July 2013. In the last week of July, *Projects* was in the monthly top list on GH. - -![July 25, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-monthly-2013-07-25.png) - -=============================== - -### [CONTRIBUTING](https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) - -See ways of [contributing](https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) to this repo. You can contribute solutions to existing problems, add new projects or remove existing ones. Make sure you follow all instructions properly. - -================================ - -Some details about this repo: - -* I will use Python to solve these. Why? Because I want to learn the language quickly. -* I have no interest in making games, so I'm excluding those from the list below. -* I'm not interested in networking, so I *might* skip all (or some) of them. -* The projects will not be made in the order posted. -* I may not be able to complete all of them. -* My method of solving them may not be the best. If you do not like my algorithm(s), please add a comment for the file/commit or open an issue, and I'll try to improve. - -I will link to each project that I complete. Some will be in this same repo, some bigger ones will have dedicated repos. - -To get started, fork this repo, delete this README and rename [*README-scratch.md*](https://github.com/thekarangoel/Projects/blob/master/README-scratch.md) to *README.md*. - -=============================== - -Numbers ---------- - -[**Find PI to the Nth Digit**](https://github.com/thekarangoel/Projects/blob/master/Numbers/pi.py) - Enter a number and have the program generate PI up to that many decimal places. Keep a limit to how far the program will go. - -[**Fibonacci Sequence**](https://github.com/thekarangoel/Projects/blob/master/Numbers/fibonacci.py) - Enter a number and have the program generate the Fibonacci sequence to that number or to the Nth number. - -[**Prime Factorization**](https://github.com/thekarangoel/Projects/blob/master/Numbers/prime.py) - Have the user enter a number and find all Prime Factors (if there are any) and display them. - -[**Next Prime Number**](https://github.com/thekarangoel/Projects/blob/master/Numbers/next_prime.py) - Have the program find prime numbers until the user chooses to stop asking for the next one. - -[**Find Cost of Tile to Cover W x H Floor**](https://github.com/thekarangoel/Projects/blob/master/Numbers/tile.py) - Calculate the total cost of tile it would take to cover a floor plan of width and height, using a cost entered by the user. - -**Mortgage Calculator** - Calculate the monthly payments of a fixed term mortgage over given Nth terms at a given interest rate. Also figure out how long it will take the user to pay back the loan. - -[**Change Return Program**](https://github.com/thekarangoel/Projects/blob/master/Numbers/change.py) - The user enters a cost and then the amount of money given. The program will figure out the change and the number of quarters, dimes, nickels, pennies needed for the change. - -[**Binary to Decimal and Back Converter**](https://github.com/thekarangoel/Projects/blob/master/Numbers/binary_decimal.py) - Develop a converter to convert a decimal number to binary or a binary number to its decimal equivalent. - -[**Calculator**](https://github.com/thekarangoel/Projects/blob/master/Numbers/calc.py) - A simple calculator to do basic operators. Make it a scientific calculator for added complexity. - -**Unit Converter (temp, currency, volume, mass and more)** - Converts various units between one another. The user enters the type of unit being entered, the type of unit they want to convert to and then the value. The program will then make the conversion. - -[**Alarm Clock**](https://github.com/thekarangoel/Projects/blob/master/Numbers/alarm.py) - A simple clock where it plays a sound after X number of minutes/seconds or at a particular time. - -[**Distance Between Two Cities**](https://github.com/thekarangoel/Projects/blob/master/Numbers/distance.py) - Calculates the distance between two cities and allows the user to specify a unit of distance. This program may require finding coordinates for the cities like latitude and longitude. - -[**Credit Card Validator**](https://github.com/thekarangoel/Projects/blob/master/Numbers/credit_card_validator.py) - Takes in a credit card number from a common credit card vendor (Visa, MasterCard, American Express, Discoverer) and validates it to make sure that it is a valid number (look into how credit cards use a checksum). - -**Tax Calculator** - Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. - -**Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. - -[**Factorial Finder**](https://github.com/thekarangoel/Projects/blob/master/Numbers/factorial.py) - The Factorial of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, ...1 and the factorial of zero, 0, is defined as being 1. Solve this using both loops and recursion. - -**Complex Number Algebra** - Show addition, multiplication, negation, and inversion of complex numbers in separate functions. (Subtraction and division operations can be made with pairs of these operations.) Print the results for each operation tested. - -**Happy Numbers** - A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers. Take an input number from user, and find first 8 happy numbers from that input. - -**Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* - -Text ---------- - -[**Reverse a String**](https://github.com/thekarangoel/Projects/blob/master/Text/reverse.py) - Enter a string and the program will reverse it and print it out. - -[**Pig Latin**](https://github.com/thekarangoel/Projects/blob/master/Text/piglatin.py) - Pig Latin is a game of alterations played on the English language game. To create the Pig Latin form of an English word the initial consonant sound is transposed to the end of the word and an ay is affixed (Ex.: "banana" would yield anana-bay). Read Wikipedia for more information on rules. - -[**Count Vowels**](https://github.com/thekarangoel/Projects/blob/master/Text/count_vowels.py) - Enter a string and the program counts the number of vowels in the text. For added complexity have it report a sum of each vowel found. - -[**Check if Palindrome**](https://github.com/thekarangoel/Projects/blob/master/Text/palindrome.py) - Checks if the string entered by the user is a palindrome. That is that it reads the same forwards as backwards like “racecar” - -[**Count Words in a String**](https://github.com/thekarangoel/Projects/blob/master/Text/count_words.py) - Counts the number of individual words in a string and display the top 5/10 most used words. - -**Text Editor** - Notepad style application that can open, edit, and save text documents. *Optional: Add syntax highlighting and other features.* - -**RSS Feed Creator** - Given a link to RSS/Atom Feed, get all posts and display them. - -**Post it Notes Program** - A program where you can add text reminders and post them. *Optional: You can have the program also add popup reminders.* - -**Quote Tracker (market symbols etc)** - A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked. For CLI, show whether the stock has moved up or down. *Optional: If GUI, the program can show green up and red down arrows to show which direction the stock value has moved.* - -**Guestbook / Journal** - A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. *Optional: Deploy it on Google App Engine or Heroku or any other PaaS (if possible, of course).* - -**Fortune Teller (Horoscope)** - A program that checks your horoscope on various astrology sites and puts them together for you each day. - -**Vigenere / Vernam / Ceasar Ciphers** - Functions for encrypting and decrypting data messages. Then send them to a friend. - -**Random Gift Suggestions** - Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one. *Optional: Suggest places you can get it (link to Amazon page?).* - -**Markdown to HTML Converter** - Converts Markdown formatted text into HTML files. Implement basic tags like `p`, `strong`, `em` etc. *Optional: Implement all tags from [Markdown Syntax Docs](daringfireball.net/projects/markdown/syntax).* - -**Regex Query Tool** - A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular expression against the source text and return any matches or flag errors in the regular expression. - -Networking ---------- - -**FTP Program** - A file transfer program which can transfer files back and forth from a remote web sever. - -**Bandwidth Monitor** - A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it. - -**Port Scanner** - Enter an IP address and a port range where the program will then attempt to find open ports on the given computer by connecting to each of them. On any successful connections mark the port as open. - -**Mail Checker (POP3 / IMAP)** - The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email at a given interval. - -**Country from IP Lookup** - Enter an IP address and find the country that IP is registered in. *Optional: Find the Ip automatically.* - -**Whois Search Tool** - Enter an IP or host address and have it look it up through whois and return the results to you. - -**Site Checker with Time Scheduling** - An application that attempts to connect to a website or server every so many minutes or a given time and check if it is up. If it is down, it will notify you by email or by posting a notice on screen. - -Classes ---------- - -**Product Inventory Project** - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an *inventory* class which keeps track of various products and can sum up the inventory value. - -**Airline / Hotel Reservation System** - Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. - -**Bank Account Manager** - Create a class called Account which will be an abstract class for three other classes called CheckingAccount, SavingsAccount and BusinessAccount. Manage credits and debits from these accounts through an ATM style program. - -**Patient / Doctor Scheduler** - Create a patient class and a doctor class. Have a doctor that can handle multiple patients and setup a scheduling program where a doctor can only handle 16 patients during an 8 hr work day. - -**Recipe Creator and Manager** - Create a recipe class with ingredients and a put them in a recipe manager program that organizes them into categories like deserts, main courses or by ingredients like chicken, beef, soups, pies etc. - -**Image Gallery** - Create an image abstract class and then a class that inherits from it for each image type. Put them in a program which displays them in a gallery style format for viewing. - -**Shape Area and Perimeter Classes** - Create an abstract class called Shape and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type. - -**Flower Shop Ordering To Go** - Create a flower shop application which deals in flower objects and use those flower objects in a bouquet object which can then be sold. Keep track of the number of objects and when you may need to order more. - -**Family Tree Creator** - Create a class called Person which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen. - -Threading ---------- - -**Create A Progress Bar for Downloads** - Create a progress bar for applications that can keep track of a download in progress. The progress bar will be on a separate thread and will communicate with the main thread using delegates. - -**Bulk Thumbnail Creator** - Picture processing can take a bit of time for some transformations. Especially if the image is large. Create an image program which can take hundreds of images and converts them to a specified size in the background thread while you do other things. For added complexity, have one thread handling re-sizing, have another bulk renaming of thumbnails etc. - -Web ---------- - -**Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. *Optional: Organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file.* - -**Web Browser with Tabs** - Create a small web browser that allows you to navigate the web and contains tabs which can be used to navigate to multiple web pages at once. For simplicity don’t worry about executing Javascript or other client side code. - -**Online White Board** - Create an application which allows you to draw pictures, write notes and use various colors to flesh out ideas for projects. *Optional: Add feature to invite friends to collaborate on a white board online.* - -**Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. Use any one of the atomic clocks returned by a simple Google search. - -**Fetch Current Weather** - Get the current weather for a given zip/postal code. *Optional: Try locating the user automatically.* - -**Scheduled Auto Login and Action** - Make an application which logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking web mail, posting regular content, or getting info for other applications and saving it to your computer. - -**E-Card Generator** - Make a site that allows people to generate their own little e-cards and send them to other people. Do not use Flash. Use a picture library and perhaps insightful mottos or quotes. - -**Content Management System** - Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small. *Optional: Allow for the addition of modules/addons.* - -**Web Board (Forum)** - Create a forum for you and your buddies to post, administer and share thoughts and ideas. - -**CAPTCHA Maker** - Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. - -Files ---------- - -**Quiz Maker** - Make an application which takes various questions form a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes. - -**File Explorer** - Create your own simple windows explorer program. Add feature(s) you always thought are missing from MS Windows Explorer or Mac Finder. - -**Sort Excel/CSV File Utility** - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. - -**Create Zip File Maker** - The user enters various files from different directories and the program zips them up into a zip file. *Optional: Apply actual compression to the files. Start with Huffman Algorithm.* - -**PDF Generator** - An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. *Optional: Deploy on GAE or Heroku if possible.* - -**Mp3 Tagger** - Modify and add ID3v1 tags to MP3 files. See if you can also add in the album art into the MP3 file’s header as well as other ID3v2 tags. - -**Code Snippet Manager** - Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. *Optional: For extra practice try adding syntax highlighting based on the language.* - -Databases ---------- - -**SQL Query Analyzer** - A utility application which a user can enter a query and have it run against a local database and look for ways to make it more efficient. - -**Remote SQL Tool** - A utility that can execute queries on remote servers from your local computer across the Internet. It should take in a remote host, user name and password, run the query and return the results. - -**Report Generator** - Create a utility that generates a report based on some tables in a database. Generates a sales reports based on the order/order details tables or sums up the days current database activity. - -**Event Scheduler and Calendar** - Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. *Optional: Allow the application to create re-occurrence events that reoccur every day, week, month, year etc.* - -**Budget Tracker** - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. *Optional: Allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period.* - -**Address Book** - Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database. - -**TV Show Tracker** - Got a favorite show you don’t want to miss? Don’t have a PVR or want to be able to find the show to then PVR it later? Make an application which can search various online TV Guide sites, locate the shows/times/channels and add them to a database application. The database/website then can send you email reminders that a show is about to start and which channel it will be on. - -**Travel Planner System** - Make a system that allows users to put together their own little travel itinerary and keep track of the airline / hotel arrangements, points of interest, budget and schedule. - -Graphics and Multimedia ---------- - -**Slide Show** - Make an application that shows various pictures in a slide show format. *Optional: Try adding various effects like fade in/out, star wipe and window blinds transitions.* - -**Stream Video from Online** - Try to create your own online streaming video player. - -**Mp3 Player** - A simple program for playing your favorite music files. Add features you though are missing from your favorite music player. - -**Watermarking Application** - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. *Optional: Use threading to process multiple images simultaneously.* - -**Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. Do a search online for "Turtle Graphics" for more information. *Optional: Allow the program to read in the list of commands from a file.* - -=============================================== - -Sources -======= - -[Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) -[Rosetta Code](http://rosettacode.org/) +Mega Project List +======== + +#### [RECOGNITION](https://github.com/thekarangoel/Projects/tree/master/RECOGNITION) + +Ever since this repo was created, it has been in the top list on GH. Be it the daily or weekly list! This repo is in the top 5 on GitHub on [July 14 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-14.png). (And again on [July 22, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-22%2013_10_30.png), and again on [July 23, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-23.png).) And on [weekly](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-weekly-2013-07-22.png) [list](https://github.com/thekarangoel/Projects/blob/master/RECOGNITION/top5-weekly-2013-07-23.png) during the week of July 2013. In the last week of July, *Projects* was in the monthly top list on GH. + +![July 25, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-monthly-2013-07-25.png) + +=============================== + +### [CONTRIBUTING](https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) + +See ways of [contributing](https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) to this repo. You can contribute solutions (will be published in this [gist](https://gist.github.com/thekarangoel/6088143)) to existing problems, add new projects or remove existing ones. Make sure you follow all instructions properly. + +================================ + +Some details about this repo: + +* I will use Python to solve these. Why? Because I want to learn the language quickly. +* I have no interest in making games, so I'm excluding those from the list below. +* I'm not interested in networking, so I *might* skip all (or some) of them. +* The projects will not be made in the order posted. +* I may not be able to complete all of them. +* My method of solving them may not be the best. If you do not like my algorithm(s), please add a comment for the file/commit or open an issue, and I'll try to improve. + +I will link to each project that I complete. Some will be in this same repo, some bigger ones will have dedicated repos. + +To get started, fork this repo, delete this README and rename [*README-scratch.md*](https://github.com/thekarangoel/Projects/blob/master/README-scratch.md) to *README.md*. + +=============================== + +Numbers +--------- + +[**Find PI to the Nth Digit**](https://github.com/thekarangoel/Projects/blob/master/Numbers/pi.py) - Enter a number and have the program generate PI up to that many decimal places. Keep a limit to how far the program will go. + +[**Fibonacci Sequence**](https://github.com/thekarangoel/Projects/blob/master/Numbers/fibonacci.py) - Enter a number and have the program generate the Fibonacci sequence to that number or to the Nth number. + +[**Prime Factorization**](https://github.com/thekarangoel/Projects/blob/master/Numbers/prime.py) - Have the user enter a number and find all Prime Factors (if there are any) and display them. + +[**Next Prime Number**](https://github.com/thekarangoel/Projects/blob/master/Numbers/next_prime.py) - Have the program find prime numbers until the user chooses to stop asking for the next one. + +[**Find Cost of Tile to Cover W x H Floor**](https://github.com/thekarangoel/Projects/blob/master/Numbers/tile.py) - Calculate the total cost of tile it would take to cover a floor plan of width and height, using a cost entered by the user. + +**Mortgage Calculator** - Calculate the monthly payments of a fixed term mortgage over given Nth terms at a given interest rate. Also figure out how long it will take the user to pay back the loan. + +[**Change Return Program**](https://github.com/thekarangoel/Projects/blob/master/Numbers/change.py) - The user enters a cost and then the amount of money given. The program will figure out the change and the number of quarters, dimes, nickels, pennies needed for the change. + +[**Binary to Decimal and Back Converter**](https://github.com/thekarangoel/Projects/blob/master/Numbers/binary_decimal.py) - Develop a converter to convert a decimal number to binary or a binary number to its decimal equivalent. + +[**Calculator**](https://github.com/thekarangoel/Projects/blob/master/Numbers/calc.py) - A simple calculator to do basic operators. Make it a scientific calculator for added complexity. + +**Unit Converter (temp, currency, volume, mass and more)** - Converts various units between one another. The user enters the type of unit being entered, the type of unit they want to convert to and then the value. The program will then make the conversion. + +[**Alarm Clock**](https://github.com/thekarangoel/Projects/blob/master/Numbers/alarm.py) - A simple clock where it plays a sound after X number of minutes/seconds or at a particular time. + +[**Distance Between Two Cities**](https://github.com/thekarangoel/Projects/blob/master/Numbers/distance.py) - Calculates the distance between two cities and allows the user to specify a unit of distance. This program may require finding coordinates for the cities like latitude and longitude. + +[**Credit Card Validator**](https://github.com/thekarangoel/Projects/blob/master/Numbers/credit_card_validator.py) - Takes in a credit card number from a common credit card vendor (Visa, MasterCard, American Express, Discoverer) and validates it to make sure that it is a valid number (look into how credit cards use a checksum). + +**Tax Calculator** - Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. + +**Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. + +[**Factorial Finder**](https://github.com/thekarangoel/Projects/blob/master/Numbers/factorial.py) - The Factorial of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, ...1 and the factorial of zero, 0, is defined as being 1. Solve this using both loops and recursion. + +**Complex Number Algebra** - Show addition, multiplication, negation, and inversion of complex numbers in separate functions. (Subtraction and division operations can be made with pairs of these operations.) Print the results for each operation tested. + +**Happy Numbers** - A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers. Take an input number from user, and find first 8 happy numbers from that input. + +**Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* + +Text +--------- + +[**Reverse a String**](https://github.com/thekarangoel/Projects/blob/master/Text/reverse.py) - Enter a string and the program will reverse it and print it out. + +[**Pig Latin**](https://github.com/thekarangoel/Projects/blob/master/Text/piglatin.py) - Pig Latin is a game of alterations played on the English language game. To create the Pig Latin form of an English word the initial consonant sound is transposed to the end of the word and an ay is affixed (Ex.: "banana" would yield anana-bay). Read Wikipedia for more information on rules. + +[**Count Vowels**](https://github.com/thekarangoel/Projects/blob/master/Text/count_vowels.py) - Enter a string and the program counts the number of vowels in the text. For added complexity have it report a sum of each vowel found. + +[**Check if Palindrome**](https://github.com/thekarangoel/Projects/blob/master/Text/palindrome.py) - Checks if the string entered by the user is a palindrome. That is that it reads the same forwards as backwards like “racecar” + +[**Count Words in a String**](https://github.com/thekarangoel/Projects/blob/master/Text/count_words.py) - Counts the number of individual words in a string and display the top 5/10 most used words. + +**Text Editor** - Notepad style application that can open, edit, and save text documents. *Optional: Add syntax highlighting and other features.* + +**RSS Feed Creator** - Given a link to RSS/Atom Feed, get all posts and display them. + +**Post it Notes Program** - A program where you can add text reminders and post them. *Optional: You can have the program also add popup reminders.* + +**Quote Tracker (market symbols etc)** - A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked. For CLI, show whether the stock has moved up or down. *Optional: If GUI, the program can show green up and red down arrows to show which direction the stock value has moved.* + +**Guestbook / Journal** - A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. *Optional: Deploy it on Google App Engine or Heroku or any other PaaS (if possible, of course).* + +**Fortune Teller (Horoscope)** - A program that checks your horoscope on various astrology sites and puts them together for you each day. + +**Vigenere / Vernam / Ceasar Ciphers** - Functions for encrypting and decrypting data messages. Then send them to a friend. + +**Random Gift Suggestions** - Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one. *Optional: Suggest places you can get it (link to Amazon page?).* + +**Markdown to HTML Converter** - Converts Markdown formatted text into HTML files. Implement basic tags like `p`, `strong`, `em` etc. *Optional: Implement all tags from [Markdown Syntax Docs](daringfireball.net/projects/markdown/syntax).* + +**Regex Query Tool** - A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular expression against the source text and return any matches or flag errors in the regular expression. + +Networking +--------- + +**FTP Program** - A file transfer program which can transfer files back and forth from a remote web sever. + +**Bandwidth Monitor** - A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it. + +**Port Scanner** - Enter an IP address and a port range where the program will then attempt to find open ports on the given computer by connecting to each of them. On any successful connections mark the port as open. + +**Mail Checker (POP3 / IMAP)** - The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email at a given interval. + +**Country from IP Lookup** - Enter an IP address and find the country that IP is registered in. *Optional: Find the Ip automatically.* + +**Whois Search Tool** - Enter an IP or host address and have it look it up through whois and return the results to you. + +**Site Checker with Time Scheduling** - An application that attempts to connect to a website or server every so many minutes or a given time and check if it is up. If it is down, it will notify you by email or by posting a notice on screen. + +Classes +--------- + +**Product Inventory Project** - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an *inventory* class which keeps track of various products and can sum up the inventory value. + +**Airline / Hotel Reservation System** - Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. + +**Bank Account Manager** - Create a class called Account which will be an abstract class for three other classes called CheckingAccount, SavingsAccount and BusinessAccount. Manage credits and debits from these accounts through an ATM style program. + +**Patient / Doctor Scheduler** - Create a patient class and a doctor class. Have a doctor that can handle multiple patients and setup a scheduling program where a doctor can only handle 16 patients during an 8 hr work day. + +**Recipe Creator and Manager** - Create a recipe class with ingredients and a put them in a recipe manager program that organizes them into categories like deserts, main courses or by ingredients like chicken, beef, soups, pies etc. + +**Image Gallery** - Create an image abstract class and then a class that inherits from it for each image type. Put them in a program which displays them in a gallery style format for viewing. + +**Shape Area and Perimeter Classes** - Create an abstract class called Shape and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type. + +**Flower Shop Ordering To Go** - Create a flower shop application which deals in flower objects and use those flower objects in a bouquet object which can then be sold. Keep track of the number of objects and when you may need to order more. + +**Family Tree Creator** - Create a class called Person which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen. + +Threading +--------- + +**Create A Progress Bar for Downloads** - Create a progress bar for applications that can keep track of a download in progress. The progress bar will be on a separate thread and will communicate with the main thread using delegates. + +**Bulk Thumbnail Creator** - Picture processing can take a bit of time for some transformations. Especially if the image is large. Create an image program which can take hundreds of images and converts them to a specified size in the background thread while you do other things. For added complexity, have one thread handling re-sizing, have another bulk renaming of thumbnails etc. + +Web +--------- + +**Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. *Optional: Organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file.* + +**Web Browser with Tabs** - Create a small web browser that allows you to navigate the web and contains tabs which can be used to navigate to multiple web pages at once. For simplicity don’t worry about executing Javascript or other client side code. + +**Online White Board** - Create an application which allows you to draw pictures, write notes and use various colors to flesh out ideas for projects. *Optional: Add feature to invite friends to collaborate on a white board online.* + +**Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. Use any one of the atomic clocks returned by a simple Google search. + +**Fetch Current Weather** - Get the current weather for a given zip/postal code. *Optional: Try locating the user automatically.* + +**Scheduled Auto Login and Action** - Make an application which logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking web mail, posting regular content, or getting info for other applications and saving it to your computer. + +**E-Card Generator** - Make a site that allows people to generate their own little e-cards and send them to other people. Do not use Flash. Use a picture library and perhaps insightful mottos or quotes. + +**Content Management System** - Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small. *Optional: Allow for the addition of modules/addons.* + +**Web Board (Forum)** - Create a forum for you and your buddies to post, administer and share thoughts and ideas. + +**CAPTCHA Maker** - Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. + +Files +--------- + +**Quiz Maker** - Make an application which takes various questions form a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes. + +**File Explorer** - Create your own simple windows explorer program. Add feature(s) you always thought are missing from MS Windows Explorer or Mac Finder. + +**Sort Excel/CSV File Utility** - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. + +**Create Zip File Maker** - The user enters various files from different directories and the program zips them up into a zip file. *Optional: Apply actual compression to the files. Start with Huffman Algorithm.* + +**PDF Generator** - An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. *Optional: Deploy on GAE or Heroku if possible.* + +**Mp3 Tagger** - Modify and add ID3v1 tags to MP3 files. See if you can also add in the album art into the MP3 file’s header as well as other ID3v2 tags. + +**Code Snippet Manager** - Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. *Optional: For extra practice try adding syntax highlighting based on the language.* + +Databases +--------- + +**SQL Query Analyzer** - A utility application which a user can enter a query and have it run against a local database and look for ways to make it more efficient. + +**Remote SQL Tool** - A utility that can execute queries on remote servers from your local computer across the Internet. It should take in a remote host, user name and password, run the query and return the results. + +**Report Generator** - Create a utility that generates a report based on some tables in a database. Generates a sales reports based on the order/order details tables or sums up the days current database activity. + +**Event Scheduler and Calendar** - Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. *Optional: Allow the application to create re-occurrence events that reoccur every day, week, month, year etc.* + +**Budget Tracker** - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. *Optional: Allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period.* + +**Address Book** - Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database. + +**TV Show Tracker** - Got a favorite show you don’t want to miss? Don’t have a PVR or want to be able to find the show to then PVR it later? Make an application which can search various online TV Guide sites, locate the shows/times/channels and add them to a database application. The database/website then can send you email reminders that a show is about to start and which channel it will be on. + +**Travel Planner System** - Make a system that allows users to put together their own little travel itinerary and keep track of the airline / hotel arrangements, points of interest, budget and schedule. + +Graphics and Multimedia +--------- + +**Slide Show** - Make an application that shows various pictures in a slide show format. *Optional: Try adding various effects like fade in/out, star wipe and window blinds transitions.* + +**Stream Video from Online** - Try to create your own online streaming video player. + +**Mp3 Player** - A simple program for playing your favorite music files. Add features you though are missing from your favorite music player. + +**Watermarking Application** - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. *Optional: Use threading to process multiple images simultaneously.* + +**Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. Do a search online for "Turtle Graphics" for more information. *Optional: Allow the program to read in the list of commands from a file.* + +=============================================== + +Sources +======= + +[Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) +[Rosetta Code](http://rosettacode.org/) From b9b6fd15504597e0d50b335b5bf1fe6cfbd02eb3 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Fri, 26 Jul 2013 17:03:40 +0530 Subject: [PATCH 028/110] Link to solutions gist --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 13b208196..f45c0f457 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,12 @@ See ways of [contributing](https://github.com/thekarangoel/Projects/blob/master/ ================================ +### [Solutions](https://gist.github.com/thekarangoel/6088143) + +You can find implementations of these projects in many other languages by other users in this [gist](https://gist.github.com/thekarangoel/6088143). + +================================ + Some details about this repo: * I will use Python to solve these. Why? Because I want to learn the language quickly. From 1f7ee1ebf158054816b1d542614b1c080750dd1a Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Fri, 26 Jul 2013 21:01:54 +0530 Subject: [PATCH 029/110] Happy Numbers done --- Numbers/happy_numbers.py | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 Numbers/happy_numbers.py diff --git a/Numbers/happy_numbers.py b/Numbers/happy_numbers.py new file mode 100644 index 000000000..a50f05f92 --- /dev/null +++ b/Numbers/happy_numbers.py @@ -0,0 +1,40 @@ +""" +Happy Numbers - A happy number is defined by the +following process. Starting with any positive integer, +replace the number by the sum of the squares of its +digits, and repeat the process until the number equals +1 (where it will stay), or it loops endlessly in a +cycle which does not include 1. Those numbers for which +this process ends in 1 are happy numbers, while those +that do not end in 1 are unhappy numbers. Take an input +number from user, and find first 8 happy numbers from +that input. +""" + +NUMBERS_REQUIRED = 8 # number of happy numbers required + +def is_happy_number(num): + seen = [] + while True: + sum_digits = sum(int(digit) ** 2 for digit in str(num)) + if sum_digits == 1: + return True + elif sum_digits in seen: + return False + else: + num = sum_digits + seen.append(num) + +if __name__ == '__main__': + + happies = [] # list of happy numbers found + + num = input('Start at: ') + + while len(happies) != NUMBERS_REQUIRED: + if is_happy_number(num): + happies.append(num) + num += 1 + + print happies + From e5f0f90bb7e3636560db837e3b3ba7c15321eb66 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Fri, 26 Jul 2013 21:06:23 +0530 Subject: [PATCH 030/110] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f45c0f457..f7e38ba75 100644 --- a/README.md +++ b/README.md @@ -73,7 +73,7 @@ Numbers **Complex Number Algebra** - Show addition, multiplication, negation, and inversion of complex numbers in separate functions. (Subtraction and division operations can be made with pairs of these operations.) Print the results for each operation tested. -**Happy Numbers** - A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers. Take an input number from user, and find first 8 happy numbers from that input. +[**Happy Numbers**](https://github.com/thekarangoel/Projects/blob/master/Numbers/happy_numbers.py) - A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers. Take an input number from user, and find first 8 happy numbers from that input. **Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* From dd7c04351092d07368a5e90ef07338ffb775d124 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 31 Jul 2013 18:30:25 +0530 Subject: [PATCH 031/110] Updated instructions for user --- Numbers/distance.py | 110 ++++++++++++++++++++++---------------------- 1 file changed, 55 insertions(+), 55 deletions(-) diff --git a/Numbers/distance.py b/Numbers/distance.py index f0695eca0..65cfc9a9b 100644 --- a/Numbers/distance.py +++ b/Numbers/distance.py @@ -1,55 +1,55 @@ -#!/usr/bin/env python - -""" -Distance Between Two Cities - Calculates the distance between -two cities and allows the user to specify a unit of distance. -This program may require finding coordinates for the cities -like latitude and longitude. - -Uses the Haversine formula -(http://www.movable-type.co.uk/scripts/latlong.html) - -Dependencies: -geopy - pip install geopy -""" - -from geopy import geocoders # to find lat/lon for the city -import math - -R = 6373 # km - -city1 = raw_input('Enter city 1: ') -city2 = raw_input('Enter city 2: ') -unit = raw_input('Enter unit of distance (K = KM, M = MI): ').lower() - -if unit in 'km': - - g = geocoders.GoogleV3() - - try: - city1, (lat1, lon1) = g.geocode(city1) - city2, (lat2, lon2) = g.geocode(city2) - except: - raise Exception('Unable to locate the citites. Check the city names.') - - # convert decimal locations to radians - lat1 = math.radians(lat1) - lon1 = math.radians(lon1) - lat2 = math.radians(lat2) - lon2 = math.radians(lon2) - - # start haversne formula - dlon = lon2 - lon1 - dlat = lat2 - lat1 - a = (math.sin(dlat/2) ** 2) + math.cos(lat1) * math.cos(lat2) * \ - (math.sin(dlon/2) ** 2) - c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a)) - d = R * c - - if unit == 'k': - print 'Distance between %s and %s is %.04f km' % (city1, city2, d) - else: - print 'Distance between %s and %s is %.04f mi' % (city1, city2, d / 1.60934) -else: - print 'Invalid unit input!' \ No newline at end of file +#!/usr/bin/env python + +""" +Distance Between Two Cities - Calculates the distance between +two cities and allows the user to specify a unit of distance. +This program may require finding coordinates for the cities +like latitude and longitude. + +Uses the Haversine formula +(http://www.movable-type.co.uk/scripts/latlong.html) + +Dependencies: +geopy + pip install geopy +""" + +from geopy import geocoders # to find lat/lon for the city +import math + +R = 6373 # km + +city1 = raw_input('Enter city 1: ') +city2 = raw_input('Enter city 2: ') +unit = raw_input('Enter unit of distance (Enter "K" for KM or "M" for MI): ').lower() + +if unit in 'km': + + g = geocoders.GoogleV3() + + try: + city1, (lat1, lon1) = g.geocode(city1) + city2, (lat2, lon2) = g.geocode(city2) + except: + raise Exception('Unable to locate the citites. Check the city names.') + + # convert decimal locations to radians + lat1 = math.radians(lat1) + lon1 = math.radians(lon1) + lat2 = math.radians(lat2) + lon2 = math.radians(lon2) + + # start haversne formula + dlon = lon2 - lon1 + dlat = lat2 - lat1 + a = (math.sin(dlat/2) ** 2) + math.cos(lat1) * math.cos(lat2) * \ + (math.sin(dlon/2) ** 2) + c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a)) + d = R * c + + if unit == 'k': + print 'Distance between %s and %s is %.04f km' % (city1, city2, d) + else: + print 'Distance between %s and %s is %.04f mi' % (city1, city2, d / 1.60934) +else: + print 'Invalid unit input!' From 5f7c972d8bb5bbf100ff44c418f4ded41f72d90f Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 31 Jul 2013 18:42:17 +0530 Subject: [PATCH 032/110] change instructions for adding solutions --- CONTRIBUTING.md | 18 +++++++++++++----- README.md | 2 +- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0c35b80d2..27e1269c0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -3,17 +3,25 @@ How to Contribute ## Solutions -Please **do not send pull requests for replacing my code**. If you'd like to contribute solutions, please see the following instructions: +Please **do not send pull requests for replacing my code**. If you'd like to contribute [solutions](https://github.com/thekarangoel/Projects-Solutions), please see the following instructions: - Solve the problem, and keep it in your repo. DO NOT send merge request yet. -- [Open an issue](https://github.com/thekarangoel/Projects/issues/new) with the following details - problem you solved, language used, and a link to the solution. +- Find the problem in this [README](https://github.com/thekarangoel/Projects-Solutions/blob/master/README.md) file. -- The link to your solution will be present in this [gist](https://gist.github.com/thekarangoel/6088143) like so: +- Edit the file in this format (notice the double square brackets): + + \**This is a problem** - And here goes it's description. \[[octocat (language)]]\(link-to-octocats-solution) \[[your_username (C++)]]\(link-to-your-solution) + + This results in something like this: - **This is a problem** - And here goes it's description. [[octocat (Python)]](link-to-octocats-solution) [[your_username(C++)]](link-to-your-solution) + **This is a problem** - And here goes it's description. [[octocat (language)]](link-to-octocats-solution) [[your_username (C++)]](link-to-your-solution) + +- Please respect other people and do not delete or move anyone else's link. Place your solution at the end of the list of solutions. + +- Save/Commit the README.md file. -- That's it. As soon as I get online I'll add the link to the gist! You do not need to do anything else. +- Send a pull request for this commit ONLY - ie, the commit to the [solutions repo](https://github.com/thekarangoel/Projects-Solutions)! ===================================== diff --git a/README.md b/README.md index f7e38ba75..8216cd3be 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ Ever since this repo was created, it has been in the top list on GH. Be it the d ### [CONTRIBUTING](https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) -See ways of [contributing](https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) to this repo. You can contribute solutions (will be published in this [gist](https://gist.github.com/thekarangoel/6088143)) to existing problems, add new projects or remove existing ones. Make sure you follow all instructions properly. +See ways of [contributing](https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) to this repo. You can contribute solutions (will be published in this [repo]([solutions](https://github.com/thekarangoel/Projects-Solutions))) to existing problems, add new projects or remove existing ones. Make sure you follow all instructions properly. ================================ From 5630ae985395a3cdb36800fe0a4a4a2ba9266e61 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 31 Jul 2013 18:53:27 +0530 Subject: [PATCH 033/110] Link to solutions repo --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 8216cd3be..81f2546ca 100644 --- a/README.md +++ b/README.md @@ -11,13 +11,13 @@ Ever since this repo was created, it has been in the top list on GH. Be it the d ### [CONTRIBUTING](https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) -See ways of [contributing](https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) to this repo. You can contribute solutions (will be published in this [repo]([solutions](https://github.com/thekarangoel/Projects-Solutions))) to existing problems, add new projects or remove existing ones. Make sure you follow all instructions properly. +See ways of [contributing](https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) to this repo. You can contribute solutions (will be published in this [repo](https://github.com/thekarangoel/Projects-Solutions)) to existing problems, add new projects or remove existing ones. Make sure you follow all instructions properly. ================================ -### [Solutions](https://gist.github.com/thekarangoel/6088143) +### [Solutions](https://github.com/thekarangoel/Projects-Solutions) -You can find implementations of these projects in many other languages by other users in this [gist](https://gist.github.com/thekarangoel/6088143). +You can find implementations of these projects in many other languages by other users in this [repo](https://github.com/thekarangoel/Projects-Solutions). ================================ From 1158f9780951571cfad80d2dd787bb9a3caa52a5 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Fri, 2 Aug 2013 10:32:29 +0530 Subject: [PATCH 034/110] Print all primes, thanks madsulrik https://github.com/thekarangoel/Projects/pull/20 --- Numbers/prime.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Numbers/prime.py b/Numbers/prime.py index f711f0803..45cbe1390 100644 --- a/Numbers/prime.py +++ b/Numbers/prime.py @@ -17,7 +17,7 @@ def is_a_prime(x): factors = [] for i in range(2, n + 1): - if n % i == 0: + while n % i == 0: # Thanks @madsulrik if is_a_prime(i): factors.append(i) n /= i From 6dcc51b7c9c8e9f7154b86c6f7c4b96c2e6f6c18 Mon Sep 17 00:00:00 2001 From: Brian Jones Date: Sun, 4 Aug 2013 14:24:54 +1000 Subject: [PATCH 035/110] Added Graph Section Moved Dykstras algorithm into new section for graphs, and added some projects related to graphs --- Graphs/README copy.md | 10 ++++++++++ README-scratch.md | 14 ++++++++++++-- README.md | 13 +++++++++++-- 3 files changed, 33 insertions(+), 4 deletions(-) create mode 100644 Graphs/README copy.md diff --git a/Graphs/README copy.md b/Graphs/README copy.md new file mode 100644 index 000000000..7d23fcf77 --- /dev/null +++ b/Graphs/README copy.md @@ -0,0 +1,10 @@ +Graphs +------ + +**Graph from links** - Create a program that will create a graph or network from a series of links. + +**Eulerian Path** - Create a program which will take as an input a graph and output either a Eulerian path or a Eulerian cycle, or state that it is not possible. A Eulerian Path starts at one node and traverses every edge of a graph through every node and finishes at another node. A Eulerian cycle is a eulerian Path that starts and finishes at the same node. + +**Connected Graph** - Create a program which takes a graph as an input and outputs whether every node is connected or not. + +**Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. \ No newline at end of file diff --git a/README-scratch.md b/README-scratch.md index 340dbd411..62b4d1454 100644 --- a/README-scratch.md +++ b/README-scratch.md @@ -32,8 +32,6 @@ Numbers **Tax Calculator** - Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. -**Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. - **Factorial Finder** - The Factorial of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, ...1 and the factorial of zero, 0, is defined as being 1. Solve this using both loops and recursion. **Complex Number Algebra** - Show addition, multiplication, negation, and inversion of complex numbers in separate functions. (Subtraction and division operations can be made with pairs of these operations.) Print the results for each operation tested. @@ -42,6 +40,18 @@ Numbers **Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* +Graph +-------- +**Graph from links** - Create a program that will create a graph or network from a series of links. + +**Eulerian Path** - Create a program which will take as an input a graph and output either a Eulerian path or a Eulerian cycle, or state that it is not possible. A Eulerian Path starts at one node and traverses every edge of a graph through every node and finishes at another node. A Eulerian cycle is a eulerian Path that starts and finishes at the same node. + +**Connected Graph** - Create a program which takes a graph as an input and outputs whether every node is connected or not. + +**Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. + + + Text --------- diff --git a/README.md b/README.md index 81f2546ca..b8e86eec5 100644 --- a/README.md +++ b/README.md @@ -67,8 +67,6 @@ Numbers **Tax Calculator** - Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. -**Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. - [**Factorial Finder**](https://github.com/thekarangoel/Projects/blob/master/Numbers/factorial.py) - The Factorial of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, ...1 and the factorial of zero, 0, is defined as being 1. Solve this using both loops and recursion. **Complex Number Algebra** - Show addition, multiplication, negation, and inversion of complex numbers in separate functions. (Subtraction and division operations can be made with pairs of these operations.) Print the results for each operation tested. @@ -77,6 +75,17 @@ Numbers **Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* +Graphs +--------- + +**Graph from links** - Create a program that will create a graph or network from a series of links. + +**Eulerian Path** - Create a program which will take as an input a graph and output either a Eulerian path or a Eulerian cycle, or state that it is not possible. A Eulerian Path starts at one node and traverses every edge of a graph through every node and finishes at another node. A Eulerian cycle is a eulerian Path that starts and finishes at the same node. + +**Connected Graph** - Create a program which takes a graph as an input and outputs whether every node is connected or not. + +**Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. + Text --------- From d05d069f5c7bad693258f3d1c6279a5184ecaa27 Mon Sep 17 00:00:00 2001 From: Brian Jones Date: Sun, 4 Aug 2013 18:00:25 +1000 Subject: [PATCH 036/110] Rename README copy.md to README.md Just a rename. --- Graphs/{README copy.md => README.md} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename Graphs/{README copy.md => README.md} (93%) diff --git a/Graphs/README copy.md b/Graphs/README.md similarity index 93% rename from Graphs/README copy.md rename to Graphs/README.md index 7d23fcf77..759d41453 100644 --- a/Graphs/README copy.md +++ b/Graphs/README.md @@ -7,4 +7,4 @@ Graphs **Connected Graph** - Create a program which takes a graph as an input and outputs whether every node is connected or not. -**Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. \ No newline at end of file +**Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. From c070bec1be94ff083ccdf5f08e3c679414a87e0c Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Sun, 4 Aug 2013 15:10:13 +0530 Subject: [PATCH 037/110] Add repo description --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index b8e86eec5..5e0df3ab6 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ Mega Project List ======== +A list of practical projects that anyone can solve in any programming language (See [solutions](https://github.com/thekarangoel/Projects-Solutions)). These projects are divided in multiple categories, and each category has it's own folder. + #### [RECOGNITION](https://github.com/thekarangoel/Projects/tree/master/RECOGNITION) Ever since this repo was created, it has been in the top list on GH. Be it the daily or weekly list! This repo is in the top 5 on GitHub on [July 14 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-14.png). (And again on [July 22, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-22%2013_10_30.png), and again on [July 23, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-23.png).) And on [weekly](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-weekly-2013-07-22.png) [list](https://github.com/thekarangoel/Projects/blob/master/RECOGNITION/top5-weekly-2013-07-23.png) during the week of July 2013. In the last week of July, *Projects* was in the monthly top list on GH. From 89232dde909af61a909b9bbe313b5b68c601a802 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Sun, 4 Aug 2013 15:11:28 +0530 Subject: [PATCH 038/110] add Rosetta Code as source --- README-scratch.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README-scratch.md b/README-scratch.md index 62b4d1454..1c109d658 100644 --- a/README-scratch.md +++ b/README-scratch.md @@ -207,4 +207,5 @@ Graphics and Multimedia Sources ======= -[Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) \ No newline at end of file +[Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) +[Rosetta Code](http://rosettacode.org/) From ec2ab659ffc5510441275b66adec31516d592e14 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Tue, 6 Aug 2013 10:30:36 +0530 Subject: [PATCH 039/110] Also reflect changes in Solutions readme --- CONTRIBUTING.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 27e1269c0..3ef7abc7e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -29,6 +29,8 @@ Please **do not send pull requests for replacing my code**. If you'd like to con If you have suggestions for adding or removing projects, feel free to [open an issue](https://github.com/thekarangoel/Projects/issues/new) to discuss it, or directly create a pull request after you edit the *README.md* file with necessary changes. If you add a problem, make sure you add it in the correct category. -It is required that any changes made to the projects (this does not include adding solutions) in *README.md*, must be reflected in *README-scratch.md* and in *README.md* file in the relevant category folder. If you're copying a project from some other webpage, you **MUST** link to it in the *Sources* section at the bottom of repo's *README.md* and *README-scratch.md*. +It is required that any changes made to the projects (this does not include adding solutions) in *README.md*, must be reflected in *README-scratch.md*, in *README.md* file in the *relevant category folder* andin the [Solutions README file](https://github.com/thekarangoel/Projects-Solutions/blob/master/README.md) + +If you're copying a project from some other webpage, you **MUST** link to it in the *Sources* section at the bottom of repo's *README.md* and *README-scratch.md*. If you skip any step(s), I will not merge the changes! From 2afd8c1fc68bea745c922f83bbaa8a253fb2b656 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Tue, 6 Aug 2013 10:31:28 +0530 Subject: [PATCH 040/110] Update emphasis --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3ef7abc7e..153e83ed4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -29,7 +29,7 @@ Please **do not send pull requests for replacing my code**. If you'd like to con If you have suggestions for adding or removing projects, feel free to [open an issue](https://github.com/thekarangoel/Projects/issues/new) to discuss it, or directly create a pull request after you edit the *README.md* file with necessary changes. If you add a problem, make sure you add it in the correct category. -It is required that any changes made to the projects (this does not include adding solutions) in *README.md*, must be reflected in *README-scratch.md*, in *README.md* file in the *relevant category folder* andin the [Solutions README file](https://github.com/thekarangoel/Projects-Solutions/blob/master/README.md) +It is required that any changes made to the projects (this does not include adding solutions) in *README.md*, must be reflected in *README-scratch.md*, in *README.md* file in the relevant category folder, and in the [Solutions *README.md* file](https://github.com/thekarangoel/Projects-Solutions/blob/master/README.md) If you're copying a project from some other webpage, you **MUST** link to it in the *Sources* section at the bottom of repo's *README.md* and *README-scratch.md*. From 0b7f69246b42e3b2e44d65c5cefb62be36e707e5 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Thu, 8 Aug 2013 15:18:37 +0530 Subject: [PATCH 041/110] More pythonic way of creating dict --- Text/count_vowels.py | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/Text/count_vowels.py b/Text/count_vowels.py index 847764885..6d03137e9 100644 --- a/Text/count_vowels.py +++ b/Text/count_vowels.py @@ -1,17 +1,18 @@ -""" -Count Vowels - Enter a string and the program counts -the number of vowels in the text. For added complexity -have it report a sum of each vowel found. -""" - -string = raw_input('Enter a string: ').lower() - -vowels = ['a', 'e', 'i', 'o', 'u'] -counts = dict(zip(vowels, [0, 0, 0, 0, 0])) - -for vowel in counts: - for char in string: - if vowel == char: - counts[vowel] += 1 - -print counts +""" +Count Vowels - Enter a string and the program counts +the number of vowels in the text. For added complexity +have it report a sum of each vowel found. +""" + +if __name__ == '__main__': + string = raw_input('Enter a string: ').lower() + + vowels = ['a', 'e', 'i', 'o', 'u'] + counts = dict(zip(vowels, [0]*5)) + + for vowel in counts: + for char in string: + if vowel == char: + counts[vowel] += 1 + + print counts From ec82582359223c1e8b73a182ff4a0a576729b811 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Thu, 8 Aug 2013 16:20:54 +0530 Subject: [PATCH 042/110] Web scraper done --- Web/page_scraper.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 Web/page_scraper.py diff --git a/Web/page_scraper.py b/Web/page_scraper.py new file mode 100644 index 000000000..ccfd191fa --- /dev/null +++ b/Web/page_scraper.py @@ -0,0 +1,33 @@ +# -*- coding: cp1252 -*- +""" +Page Scraper - Create an application which connects to a +site and pulls out all links, or images, and saves them to +a list. Optional: Organize the indexed content and don�t +allow duplicates. Have it put the results into an easily +searchable index file. +""" + +import urllib2 +from bs4 import BeautifulSoup + + +def print_list(stuff): + print '\n'.join(stuff) + print '\n====================\n' + +if __name__ == '__main__': + + url = raw_input('Enter a URL: ') + + choice = input('What to scrape?\n1. Links\n2. Images\n3. Both\n') + + soup = BeautifulSoup(urllib2.urlopen(url).read()) + + if choice == 1 or choice == 3: + urls = [link.get('href') for link in soup.findAll('a')] + print 'URLs:' + print_list(urls) + if choice == 2 or choice ==3: + images = [image['src'] for image in soup.findAll("img")] + print 'Images:' + print_list(images) From b1f704f326d880ff62107d63a0be67adb945f9b7 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Thu, 8 Aug 2013 16:22:07 +0530 Subject: [PATCH 043/110] Solution to web scraper --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5e0df3ab6..15b981e1d 100644 --- a/README.md +++ b/README.md @@ -169,7 +169,7 @@ Threading Web --------- -**Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. *Optional: Organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file.* +[**Page Scraper**](https://github.com/thekarangoel/Projects/blob/master/Web/page_scraper.py) - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. *Optional: Organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file.* **Web Browser with Tabs** - Create a small web browser that allows you to navigate the web and contains tabs which can be used to navigate to multiple web pages at once. For simplicity don’t worry about executing Javascript or other client side code. From 5a42677d85a056c716bdd2bc58630b5de9a649ad Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Fri, 9 Aug 2013 12:40:39 +0530 Subject: [PATCH 044/110] Product class added. --- Classes/product_inventory.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 Classes/product_inventory.py diff --git a/Classes/product_inventory.py b/Classes/product_inventory.py new file mode 100644 index 000000000..c04d13198 --- /dev/null +++ b/Classes/product_inventory.py @@ -0,0 +1,27 @@ +""" +Product Inventory Project - Create an application which manages +an inventory of products. Create a product class which has a +price, id, and quantity on hand. Then create an inventory class +which keeps track of various products and can sum up the inventory +value. +""" + +class Product: + + def __init__(self, price, pid, qty): + """ + Class constructor that needs a price, a product id, + and quantity. + """ + self.price = price + self.pid = pid + self.qty = qty + + def print_product(self): + """ + Prints a single product. + """ + print '%d\t%s\t%.02f each' % (self.pid, self.qty, self.price) + +p = Product(1.4, 123, 5) +p.print_product() From 0c50521dd60eb36f8c0596defef58c77729c1651 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Fri, 9 Aug 2013 12:57:08 +0530 Subject: [PATCH 045/110] Inventory class added. --- Classes/product_inventory.py | 38 ++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/Classes/product_inventory.py b/Classes/product_inventory.py index c04d13198..e3837ab9a 100644 --- a/Classes/product_inventory.py +++ b/Classes/product_inventory.py @@ -23,5 +23,39 @@ def print_product(self): """ print '%d\t%s\t%.02f each' % (self.pid, self.qty, self.price) -p = Product(1.4, 123, 5) -p.print_product() +class Inventory: + + def __init__(self): + """ + Initializes the class instance. + """ + self.products = [] # list to hold all products + + def add(self, product): + """ + Adds a passed Product to the list of products. + """ + self.products.append(product) + + def print_inventory(self): + """ + Prints the current inventory, and the total value + of products. + """ + value = 0 + for product in self.products: + print '%d\t%s\t%.02f each' % (product.pid, product.qty, product.price) + value += (product.price * product.qty) + print '\nTotal value: %.02f' % value + +if __name__ == '__main__': + p1 = Product(1.4, 123, 5) + p2 = Product(1, 3432, 100) + p3 = Product(100.4, 2342, 99) + + + i = Inventory() + i.add(p1) + i.add(p2) + i.add(p3) + i.print_inventory() From 317e3e3b264fb9b50a77068c4b2050c0d0dd043e Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Fri, 9 Aug 2013 14:02:28 +0530 Subject: [PATCH 046/110] Add solution to product inventory --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 15b981e1d..fefc3ff58 100644 --- a/README.md +++ b/README.md @@ -141,7 +141,7 @@ Networking Classes --------- -**Product Inventory Project** - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an *inventory* class which keeps track of various products and can sum up the inventory value. +[**Product Inventory Project**](https://github.com/thekarangoel/Projects/blob/master/Classes/product_inventory.py) - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an *inventory* class which keeps track of various products and can sum up the inventory value. **Airline / Hotel Reservation System** - Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. From 8f5384b8f0aa39bc316d920d7a72516f8aa175ee Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Fri, 9 Aug 2013 14:04:27 +0530 Subject: [PATCH 047/110] Update quantity method added --- Classes/product_inventory.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/Classes/product_inventory.py b/Classes/product_inventory.py index e3837ab9a..e337a7d5e 100644 --- a/Classes/product_inventory.py +++ b/Classes/product_inventory.py @@ -17,6 +17,17 @@ def __init__(self, price, pid, qty): self.pid = pid self.qty = qty + def update_qty(self, qty, method='add'): + """ + Updates the quantity of produts. By default, adds the + passed quantity. Pass method as 'subtract' to subtract + the quantity. + """ + if method == 'add': + self.qty += qty + elif method == 'subtract': + self.qty = max(0, self.qty - qty) + def print_product(self): """ Prints a single product. @@ -59,3 +70,9 @@ def print_inventory(self): i.add(p2) i.add(p3) i.print_inventory() + + p1.update_qty(10) + i.print_inventory() + + p1.update_qty(10, method='subtract') + i.print_inventory() From 423927fe429dbe59b4724b409b1a4e6600fdf16d Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Sun, 11 Aug 2013 13:40:42 +0530 Subject: [PATCH 048/110] More idiomatic code, use defaultdict --- Text/count_vowels.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/Text/count_vowels.py b/Text/count_vowels.py index 6d03137e9..fe55626f1 100644 --- a/Text/count_vowels.py +++ b/Text/count_vowels.py @@ -4,15 +4,16 @@ have it report a sum of each vowel found. """ +from collections import defaultdict + if __name__ == '__main__': string = raw_input('Enter a string: ').lower() vowels = ['a', 'e', 'i', 'o', 'u'] - counts = dict(zip(vowels, [0]*5)) + counts = defaultdict(int) - for vowel in counts: - for char in string: - if vowel == char: - counts[vowel] += 1 + for char in string: + if char in vowels: + counts[char] += 1 - print counts + print counts.items() From 0754e74aebe035652c98b91033018b2782d35c88 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 14 Aug 2013 17:42:53 +0530 Subject: [PATCH 049/110] Safer way of user input --- Numbers/calc.py | 46 ++++++++++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/Numbers/calc.py b/Numbers/calc.py index 9daf8371e..0e477cf7f 100644 --- a/Numbers/calc.py +++ b/Numbers/calc.py @@ -1,22 +1,24 @@ -# -*- coding: cp1252 -*- -""" -Calculator - A simple calculator to do basic operators. -""" - -if __name__ == '__main__': - num1 = input("Number 1: ") - num2 = input("Number 2: ") - op = raw_input("Operation (+, -, /, *): ") - - if op not in '+-/*': - print "Invalid operator" - else: - if op == '+': - res = num1 + num2 - elif op == '-': - res = num1 - num2 - elif op == '/': - res = num1 / num2 - elif op == '*': - res = num1 * num2 - print "%d %s %d = %d" % (num1, op, num2, res) +""" +Calculator - A simple calculator to do basic operators. +""" + +if __name__ == '__main__': + try: + num1 = int(raw_input("Number 1: ")) + num2 = int(raw_input("Number 2: ")) + except: + print 'Invalid input' + else: + op = raw_input("Operation (+, -, /, *): ") + if op not in '+-/*': + print "Invalid operator" + else: + if op == '+': + res = num1 + num2 + elif op == '-': + res = num1 - num2 + elif op == '/': + res = num1 / num2 + elif op == '*': + res = num1 * num2 + print "%d %s %d = %d" % (num1, op, num2, res) From 0f894d0ac9ca9bed4c15de56a627375a9fb951ae Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 14 Aug 2013 17:44:20 +0530 Subject: [PATCH 050/110] Use eval() for calc --- Numbers/calc.py | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/Numbers/calc.py b/Numbers/calc.py index 0e477cf7f..e6ea5f7f2 100644 --- a/Numbers/calc.py +++ b/Numbers/calc.py @@ -13,12 +13,5 @@ if op not in '+-/*': print "Invalid operator" else: - if op == '+': - res = num1 + num2 - elif op == '-': - res = num1 - num2 - elif op == '/': - res = num1 / num2 - elif op == '*': - res = num1 * num2 - print "%d %s %d = %d" % (num1, op, num2, res) + print "%d %s %d = %d" % \ + (num1, op, num2, eval(str(num1) + op + str(num2))) From 3ace15daa0bf59fa3f4d46fec238c35263aa0f53 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Thu, 15 Aug 2013 21:33:32 +0530 Subject: [PATCH 051/110] Add classic algorithms --- Classic Algorithms/README.md | 4 ++++ README-scratch.md | 5 +++++ README.md | 5 +++++ 3 files changed, 14 insertions(+) create mode 100644 Classic Algorithms/README.md diff --git a/Classic Algorithms/README.md b/Classic Algorithms/README.md new file mode 100644 index 000000000..e4ab0afbc --- /dev/null +++ b/Classic Algorithms/README.md @@ -0,0 +1,4 @@ +Classic Algorithms +----------------- + +**Collatz Conjecture** - Start with a number *n > 1*. Find the number of steps it takes to reach one using the following process: If *n* is even, divide it by 2. If *n* is odd, multiply it by 3 and add 1. \ No newline at end of file diff --git a/README-scratch.md b/README-scratch.md index 1c109d658..224bc73ae 100644 --- a/README-scratch.md +++ b/README-scratch.md @@ -40,6 +40,11 @@ Numbers **Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* +Classic Algorithms +----------------- + +**Collatz Conjecture** - Start with a number *n > 1*. Find the number of steps it takes to reach one using the following process: If *n* is even, divide it by 2. If *n* is odd, multiply it by 3 and add 1. + Graph -------- **Graph from links** - Create a program that will create a graph or network from a series of links. diff --git a/README.md b/README.md index fefc3ff58..f0e940b14 100644 --- a/README.md +++ b/README.md @@ -77,6 +77,11 @@ Numbers **Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* +Classic Algorithms +----------------- + +**Collatz Conjecture** - Start with a number *n > 1*. Find the number of steps it takes to reach one using the following process: If *n* is even, divide it by 2. If *n* is odd, multiply it by 3 and add 1. + Graphs --------- From a4c8f97cf84aabafeeccdb6a12a7a09466d63a91 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Fri, 23 Aug 2013 17:25:12 +0530 Subject: [PATCH 052/110] Add donation link --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index f0e940b14..0531ea65b 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,12 @@ You can find implementations of these projects in many other languages by other ================================ +### [Donate](https://www.gittip.com/Karan%20Goel/) + +If you love and use *Projects*, please consider [donating via gittip](https://www.gittip.com/Karan%20Goel/). Any support is appreciated! + +================================ + Some details about this repo: * I will use Python to solve these. Why? Because I want to learn the language quickly. From 8df1b31bb79c96ffdb988ac28f447dc77e7fd597 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Mon, 26 Aug 2013 19:43:30 +0530 Subject: [PATCH 053/110] Collatz Conjecture done --- Classic Algorithms/collatz.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 Classic Algorithms/collatz.py diff --git a/Classic Algorithms/collatz.py b/Classic Algorithms/collatz.py new file mode 100644 index 000000000..3881ea11e --- /dev/null +++ b/Classic Algorithms/collatz.py @@ -0,0 +1,29 @@ +""" +Collatz Conjecture - Start with a number n > 1. +Find the number of steps it takes to reach one using +the following process: If n is even, divide it by 2. +If n is odd, multiply it by 3 and add 1. +""" + +def main(): + try: + n = int(raw_input('Enter a number: ')) + except ValueError: + print 'Enter only an integer value, n > 1.' + + steps = 0 + + print '\n%d' % n, + + while n > 1: + if n % 2 == 0: + n /= 2 + else: + n = (n * 3) + 1 + steps += 1 + print ' -> %d' % n, + + print '\n\n%d steps take to reach ONE.' % steps + +if __name__ == '__main__': + main() From 15cdb74c7d7e96a79442aaee1e5bdeba06a0da12 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Mon, 26 Aug 2013 19:45:13 +0530 Subject: [PATCH 054/110] Link to Collatz Conjecture --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0531ea65b..de0a39ed3 100644 --- a/README.md +++ b/README.md @@ -86,7 +86,7 @@ Numbers Classic Algorithms ----------------- -**Collatz Conjecture** - Start with a number *n > 1*. Find the number of steps it takes to reach one using the following process: If *n* is even, divide it by 2. If *n* is odd, multiply it by 3 and add 1. +[**Collatz Conjecture**](https://github.com/thekarangoel/Projects/blob/master/Classic%20Algorithms/collatz.py) - Start with a number *n > 1*. Find the number of steps it takes to reach one using the following process: If *n* is even, divide it by 2. If *n* is odd, multiply it by 3 and add 1. Graphs --------- From 0878c3d12a7d7d4f63a7028c1fb2500ff9c9ec26 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Mon, 26 Aug 2013 19:55:39 +0530 Subject: [PATCH 055/110] Rss feed creator done --- Text/rss.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 Text/rss.py diff --git a/Text/rss.py b/Text/rss.py new file mode 100644 index 000000000..25f8c8f1d --- /dev/null +++ b/Text/rss.py @@ -0,0 +1,29 @@ +""" +RSS Feed Creator - Given a link to RSS/Atom Feed, +get all posts and display them. +""" + +import re +import urllib2 + + +def main(): + """ + Takes in a Feedburned feed URL. + + Eg: http://feeds.feedburner.com/WebDesignLedger + """ + feed_url = raw_input('Enter Feedburner RSS URL: ') + content = urllib2.urlopen(feed_url).read() # get the source code of feed + + link_pattern = re.compile('(.*)') + title_pattern = re.compile('(.*)') + + links = re.findall(link_pattern, content)[1:] # skip blog url + titles = re.findall(title_pattern, content)[1:] # skip the page title + + for (link, title) in zip(links, titles): + print '{0}\n{1}\n'.format(title, link) + +if __name__ == '__main__': + main() From 33b18b8ab8992e17d6cfac4c0d609f4b12036de1 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Mon, 26 Aug 2013 19:57:26 +0530 Subject: [PATCH 056/110] Link to RSS feed creator --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index de0a39ed3..64869bb5f 100644 --- a/README.md +++ b/README.md @@ -114,7 +114,7 @@ Text **Text Editor** - Notepad style application that can open, edit, and save text documents. *Optional: Add syntax highlighting and other features.* -**RSS Feed Creator** - Given a link to RSS/Atom Feed, get all posts and display them. +[**RSS Feed Creator**](https://github.com/thekarangoel/Projects/blob/master/Text/rss.py) - Given a link to RSS/Atom Feed, get all posts and display them. **Post it Notes Program** - A program where you can add text reminders and post them. *Optional: You can have the program also add popup reminders.* From f1ba3f0486e7d81ddffe750c43f0c5cf4e66446f Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Mon, 26 Aug 2013 22:00:46 +0530 Subject: [PATCH 057/110] Unit converter done --- Numbers/unit.py | 91 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 Numbers/unit.py diff --git a/Numbers/unit.py b/Numbers/unit.py new file mode 100644 index 000000000..383044e99 --- /dev/null +++ b/Numbers/unit.py @@ -0,0 +1,91 @@ +""" +Unit Converter (temp, currency, volume, mass and more) - Converts +various units between one another. The user enters the type of unit +being entered, the type of unit they want to convert to and then +the value. The program will then make the conversion. +""" + +from __future__ import division +from urllib2 import urlopen +import json + +# 1 (std unit) = these many units +MULTIPLIERS_TO_STD = { + 'length': { + 'cm': 0.01, + 'm': 1, # std unit + 'km': 1000, + 'mi': 1609.34, + 'ft': 0.3048 + }, + 'temp': { + 'C': 1, # std unit + 'F': 33.8 + } +} + +# These many units = 1 (std unit) +MULTIPLIERS_FROM_STD = { + 'length': { + 'cm': 100, + 'm': 1, # std unit + 'km': 0.001, + 'mi': 0.000621371, + 'ft': 3.28084 + }, + 'temp': { + 'C': 1, # std unit + 'F': -17.2222 + } +} + + +def get_user_input(choice): + units = ', '.join(MULTIPLIERS_TO_STD[choice].keys()) + source_unit = raw_input('\nEnter source unit (%s): ' % units) + source_val = float(raw_input('How many %s\'s? ' % source_unit)) + convert_to = raw_input('Convert to? (%s): ' % units) + return source_unit, source_val, convert_to + +def get_currency(source_unit, source_val, convert_to): + url = 'http://rate-exchange.appspot.com/currency?from=%s&to=%s&q=%s' % ( + source_unit, convert_to, str(source_val)) + content = urlopen(url).read() + return json.loads(content)['v'] + +def main(): + print """Unit Converter + 1. Length + 2. Temperature + 3. Currency""" + + choice = int(raw_input('What do you want to convert: ')) + + if choice == 1: + source_unit, source_val, convert_to = get_user_input('length') + print '%f%s = %f%s' % (source_val, source_unit, + source_val * \ + MULTIPLIERS_TO_STD['length'][source_unit] * \ + MULTIPLIERS_FROM_STD['length'][convert_to], \ + convert_to) + elif choice == 2: + source_unit, source_val, convert_to = get_user_input('temp') + if (source_unit, convert_to) == ('F', 'C'): # F -> C + value = (source_val - 32) * (5/9) + elif (source_unit, convert_to) == ('C', 'F'): # C -> F + value = (source_val * (9/5)) + 32 + else: + value = source_val + print '%f%s = %f%s' % (source_val, source_unit, + value, convert_to) + + elif choice == 3: + source_unit = raw_input('\nEnter source currency (eg USD, INR etc): ') + source_val = float(raw_input('How many %s\'s? ' % source_unit)) + convert_to = raw_input('Convert to? (eg USD, INR etc): ') + print '%f%s = %f%s' % (source_val, source_unit, + get_currency(source_unit, source_val, convert_to), + convert_to) + +if __name__ == '__main__': + main() From b7888bbdcf288fad3f7af53332de9eb518c3201f Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Mon, 26 Aug 2013 22:03:50 +0530 Subject: [PATCH 058/110] Link to unit converter --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 64869bb5f..f901e150d 100644 --- a/README.md +++ b/README.md @@ -65,7 +65,7 @@ Numbers [**Calculator**](https://github.com/thekarangoel/Projects/blob/master/Numbers/calc.py) - A simple calculator to do basic operators. Make it a scientific calculator for added complexity. -**Unit Converter (temp, currency, volume, mass and more)** - Converts various units between one another. The user enters the type of unit being entered, the type of unit they want to convert to and then the value. The program will then make the conversion. +[**Unit Converter (temp, currency, volume, mass and more)**](https://github.com/thekarangoel/Projects/blob/master/Numbers/unit.py) - Converts various units between one another. The user enters the type of unit being entered, the type of unit they want to convert to and then the value. The program will then make the conversion. [**Alarm Clock**](https://github.com/thekarangoel/Projects/blob/master/Numbers/alarm.py) - A simple clock where it plays a sound after X number of minutes/seconds or at a particular time. From 2804712a0a06c7cbcaf6614b28b61b854968efbb Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Tue, 27 Aug 2013 14:28:52 +0530 Subject: [PATCH 059/110] Add some classic algo problems --- Classic Algorithms/README.md | 8 +++++++- README-scratch.md | 8 +++++++- README.md | 6 ++++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/Classic Algorithms/README.md b/Classic Algorithms/README.md index e4ab0afbc..bd88e10d6 100644 --- a/Classic Algorithms/README.md +++ b/Classic Algorithms/README.md @@ -1,4 +1,10 @@ Classic Algorithms ----------------- -**Collatz Conjecture** - Start with a number *n > 1*. Find the number of steps it takes to reach one using the following process: If *n* is even, divide it by 2. If *n* is odd, multiply it by 3 and add 1. \ No newline at end of file +**Collatz Conjecture** - Start with a number *n > 1*. Find the number of steps it takes to reach one using the following process: If *n* is even, divide it by 2. If *n* is odd, multiply it by 3 and add 1. + +**Sorting** - Implement two types of sorting algorithms: Merge sort and bubble sort. + +**Closest pair problem** - The closest pair of points problem or closest pair problem is a problem of computational geometry: given *n* points in metric space, find a pair of points with the smallest distance between them. + +**Sieve of Eratosthenes** - The sieve of Eratosthenes is one of the most efficient ways to find all of the smaller primes (below 10 million or so). diff --git a/README-scratch.md b/README-scratch.md index 224bc73ae..7d5c026b1 100644 --- a/README-scratch.md +++ b/README-scratch.md @@ -44,7 +44,13 @@ Classic Algorithms ----------------- **Collatz Conjecture** - Start with a number *n > 1*. Find the number of steps it takes to reach one using the following process: If *n* is even, divide it by 2. If *n* is odd, multiply it by 3 and add 1. - + +**Sorting** - Implement two types of sorting algorithms: Merge sort and bubble sort. + +**Closest pair problem** - The closest pair of points problem or closest pair problem is a problem of computational geometry: given *n* points in metric space, find a pair of points with the smallest distance between them. + +**Sieve of Eratosthenes** - The sieve of Eratosthenes is one of the most efficient ways to find all of the smaller primes (below 10 million or so). + Graph -------- **Graph from links** - Create a program that will create a graph or network from a series of links. diff --git a/README.md b/README.md index f901e150d..67514b593 100644 --- a/README.md +++ b/README.md @@ -88,6 +88,12 @@ Classic Algorithms [**Collatz Conjecture**](https://github.com/thekarangoel/Projects/blob/master/Classic%20Algorithms/collatz.py) - Start with a number *n > 1*. Find the number of steps it takes to reach one using the following process: If *n* is even, divide it by 2. If *n* is odd, multiply it by 3 and add 1. +**Sorting** - Implement two types of sorting algorithms: Merge sort and bubble sort. + +**Closest pair problem** - The closest pair of points problem or closest pair problem is a problem of computational geometry: given *n* points in metric space, find a pair of points with the smallest distance between them. + +**Sieve of Eratosthenes** - The sieve of Eratosthenes is one of the most efficient ways to find all of the smaller primes (below 10 million or so). + Graphs --------- From 4a662c09fd39889a16dcb372bbe0761b67a6fbee Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Tue, 27 Aug 2013 15:09:49 +0530 Subject: [PATCH 060/110] Atomic time done --- Web/time.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 Web/time.py diff --git a/Web/time.py b/Web/time.py new file mode 100644 index 000000000..073d75f47 --- /dev/null +++ b/Web/time.py @@ -0,0 +1,25 @@ +""" +Get Atomic Time from Internet Clock - This program will get +the true atomic time from an atomic time clock on the Internet. +Use any one of the atomic clocks returned by a simple Google search. +""" + +import re +from urllib2 import urlopen + + +def main(): + url = 'http://time.is/just' + content = urlopen(url).read() + pattern = re.compile('

') + + find_match = re.search(pattern, content) + + location_pat = re.compile('

(.*)

') + location_match = re.search(location_pat, content) + + print 'The time in %s is %s %s' % \ + (location_match.group(1), find_match.group(1), find_match.group(2)) + +if __name__ == '__main__': + main() From fbe8831c6e663cd748cecb285462dbe46d72e85f Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Tue, 27 Aug 2013 15:12:03 +0530 Subject: [PATCH 061/110] link to atomic time --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 67514b593..d43575493 100644 --- a/README.md +++ b/README.md @@ -192,7 +192,7 @@ Web **Online White Board** - Create an application which allows you to draw pictures, write notes and use various colors to flesh out ideas for projects. *Optional: Add feature to invite friends to collaborate on a white board online.* -**Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. Use any one of the atomic clocks returned by a simple Google search. +[**Get Atomic Time from Internet Clock**](https://github.com/thekarangoel/Projects/blob/master/Web/time.py) - This program will get the true atomic time from an atomic time clock on the Internet. Use any one of the atomic clocks returned by a simple Google search. **Fetch Current Weather** - Get the current weather for a given zip/postal code. *Optional: Try locating the user automatically.* From 9ebddd86404612e990682f5b717af6cf2d9ab61b Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Thu, 29 Aug 2013 19:58:31 +0530 Subject: [PATCH 062/110] Add security, classic algos update --- Classic Algorithms/README.md | 2 ++ README-scratch.md | 11 +++++++++-- README.md | 11 +++++++++-- Security/README.md | 4 ++++ 4 files changed, 24 insertions(+), 4 deletions(-) create mode 100644 Security/README.md diff --git a/Classic Algorithms/README.md b/Classic Algorithms/README.md index bd88e10d6..9d15e2322 100644 --- a/Classic Algorithms/README.md +++ b/Classic Algorithms/README.md @@ -8,3 +8,5 @@ Classic Algorithms **Closest pair problem** - The closest pair of points problem or closest pair problem is a problem of computational geometry: given *n* points in metric space, find a pair of points with the smallest distance between them. **Sieve of Eratosthenes** - The sieve of Eratosthenes is one of the most efficient ways to find all of the smaller primes (below 10 million or so). + +**Inverted index** - An [Inverted Index](http://en.wikipedia.org/wiki/Inverted_index) is a data structure used to create full text search. Given a set of text files, implement a program to create an inverted index. Also create a user interface to do a search using that inverted index which returns a list of files that contain the query term / terms. The search index can be in memory. \ No newline at end of file diff --git a/README-scratch.md b/README-scratch.md index 7d5c026b1..a81eb6329 100644 --- a/README-scratch.md +++ b/README-scratch.md @@ -51,6 +51,8 @@ Classic Algorithms **Sieve of Eratosthenes** - The sieve of Eratosthenes is one of the most efficient ways to find all of the smaller primes (below 10 million or so). +**Inverted index** - An [Inverted Index](http://en.wikipedia.org/wiki/Inverted_index) is a data structure used to create full text search. Given a set of text files, implement a program to create an inverted index. Also create a user interface to do a search using that inverted index which returns a list of files that contain the query term / terms. The search index can be in memory. + Graph -------- **Graph from links** - Create a program that will create a graph or network from a series of links. @@ -213,10 +215,15 @@ Graphics and Multimedia **Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. Do a search online for "Turtle Graphics" for more information. *Optional: Allow the program to read in the list of commands from a file.* +Security +------------- + +**Caesar cipher** - Implement a Caesar cipher, both encoding and decoding. The key is an integer from 1 to 25. This cipher rotates the letters of the alphabet (A to Z). The encoding replaces each letter with the 1st to 25th next letter in the alphabet (wrapping Z to A). So key 2 encrypts "HI" to "JK", but key 20 encrypts "HI" to "BC". This simple "monoalphabetic substitution cipher" provides almost no security, because an attacker who has the encoded message can either use frequency analysis to guess the key, or just try all 25 keys. + =============================================== Sources ======= -[Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) -[Rosetta Code](http://rosettacode.org/) +* [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) +* [Rosetta Code](http://rosettacode.org/) \ No newline at end of file diff --git a/README.md b/README.md index d43575493..3113e8a52 100644 --- a/README.md +++ b/README.md @@ -105,6 +105,8 @@ Graphs **Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. +**Inverted index** - An [Inverted Index](http://en.wikipedia.org/wiki/Inverted_index) is a data structure used to create full text search. Given a set of text files, implement a program to create an inverted index. Also create a user interface to do a search using that inverted index which returns a list of files that contain the query term / terms. The search index can be in memory. + Text --------- @@ -255,10 +257,15 @@ Graphics and Multimedia **Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. Do a search online for "Turtle Graphics" for more information. *Optional: Allow the program to read in the list of commands from a file.* +Security +------------- + +**Caesar cipher** - Implement a Caesar cipher, both encoding and decoding. The key is an integer from 1 to 25. This cipher rotates the letters of the alphabet (A to Z). The encoding replaces each letter with the 1st to 25th next letter in the alphabet (wrapping Z to A). So key 2 encrypts "HI" to "JK", but key 20 encrypts "HI" to "BC". This simple "monoalphabetic substitution cipher" provides almost no security, because an attacker who has the encoded message can either use frequency analysis to guess the key, or just try all 25 keys. + =============================================== Sources ======= -[Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) -[Rosetta Code](http://rosettacode.org/) +* [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) +* [Rosetta Code](http://rosettacode.org/) \ No newline at end of file diff --git a/Security/README.md b/Security/README.md new file mode 100644 index 000000000..a654b76c7 --- /dev/null +++ b/Security/README.md @@ -0,0 +1,4 @@ +Security +------------- + +**Caesar cipher** - Implement a Caesar cipher, both encoding and decoding. The key is an integer from 1 to 25. This cipher rotates the letters of the alphabet (A to Z). The encoding replaces each letter with the 1st to 25th next letter in the alphabet (wrapping Z to A). So key 2 encrypts "HI" to "JK", but key 20 encrypts "HI" to "BC". This simple "monoalphabetic substitution cipher" provides almost no security, because an attacker who has the encoded message can either use frequency analysis to guess the key, or just try all 25 keys. \ No newline at end of file From 65c87e0313214c5e84f41e48dc71139b7776ee6e Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Fri, 30 Aug 2013 20:01:11 +0530 Subject: [PATCH 063/110] Some minor updates --- Classes/product_inventory.py | 4 +- Numbers/change.py | 82 +++++++++++++++++------------------- 2 files changed, 42 insertions(+), 44 deletions(-) diff --git a/Classes/product_inventory.py b/Classes/product_inventory.py index e337a7d5e..df1ef1afa 100644 --- a/Classes/product_inventory.py +++ b/Classes/product_inventory.py @@ -55,7 +55,9 @@ def print_inventory(self): """ value = 0 for product in self.products: - print '%d\t%s\t%.02f each' % (product.pid, product.qty, product.price) + print '%d\t%s\t%.02f each' % (product.pid, + product.qty, + product.price) value += (product.price * product.qty) print '\nTotal value: %.02f' % value diff --git a/Numbers/change.py b/Numbers/change.py index 6d6f13cde..8bce7273e 100644 --- a/Numbers/change.py +++ b/Numbers/change.py @@ -1,43 +1,39 @@ -# Change Return Program - The user enters a cost and -# then the amount of money given. The program will figure -# out the change and the number of quarters, dimes, nickels, -# pennies needed for the change. - -if __name__ == '__main__': - cost = input("What's the cost in dollars? ") - given = input("What's the amount of dollars given? ") - - change = given - cost - - print "\n" - if change < 0: - print "Please ask for $%.2f more from the customer." % (-change) # double negation - else: - print "The change is $%.2f." % change - - q = 0 # 0.25 - d = 0 # 0.10 - n = 0 # 0.05 - p = 0 # 0.01 - - change = int(change * 100) # let's talk about cents - - if change >= 25: - q = int(change / 25) - change = change % 25 - if change >= 10: - d = int(change / 10) - change = change % 10 - if change >= 5: - n = int(change / 5) - change = change % 5 - if change >= 1: - p = change # rest all change is in pennies - - print "Give the following change to the customer:" - print "Quarters: %d\tDimes: %d\tNickels: %d\tPennies: %d" \ - % (q, d, n, p) - - # DEBUG - # print "Total change per the number of coins is %.2f" % \ - # ((q * .25) + (d * .10) + (n * 0.05) + (p * 0.01)) +# Change Return Program - The user enters a cost and +# then the amount of money given. The program will figure +# out the change and the number of quarters, dimes, nickels, +# pennies needed for the change. + +if __name__ == '__main__': + cost = input("What's the cost in dollars? ") + given = input("What's the amount of dollars given? ") + + change = given - cost + + print "\n" + if change < 0: + print "Please ask for $%.2f more from the customer." % (-change) # double negation + else: + print "The change is $%.2f." % change + + q = 0 # 0.25 + d = 0 # 0.10 + n = 0 # 0.05 + p = 0 # 0.01 + + change = int(change * 100) # let's talk about cents + + if change >= 25: + q = int(change / 25) + change = change % 25 + if change >= 10: + d = int(change / 10) + change = change % 10 + if change >= 5: + n = int(change / 5) + change = change % 5 + if change >= 1: + p = change # rest all change is in pennies + + print "Give the following change to the customer:" + print "Quarters: %d\tDimes: %d\tNickels: %d\tPennies: %d" \ + % (q, d, n, p) From 7464080c62622d508bc4c8772a93791fe121eda8 Mon Sep 17 00:00:00 2001 From: Daniele Bonadiman Date: Wed, 4 Sep 2013 10:39:40 +0200 Subject: [PATCH 064/110] Update README.md The inverted index is not related to graphs but is used in information retrieval --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3113e8a52..6c0a48634 100644 --- a/README.md +++ b/README.md @@ -105,6 +105,9 @@ Graphs **Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. +Information Retrieval +--------- + **Inverted index** - An [Inverted Index](http://en.wikipedia.org/wiki/Inverted_index) is a data structure used to create full text search. Given a set of text files, implement a program to create an inverted index. Also create a user interface to do a search using that inverted index which returns a list of files that contain the query term / terms. The search index can be in memory. Text @@ -268,4 +271,4 @@ Sources ======= * [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) -* [Rosetta Code](http://rosettacode.org/) \ No newline at end of file +* [Rosetta Code](http://rosettacode.org/) From cc2ed7faf003a0b77437c6936b752f98be6d5d9b Mon Sep 17 00:00:00 2001 From: Daniele Bonadiman Date: Wed, 4 Sep 2013 17:35:24 +0200 Subject: [PATCH 065/110] Update README-scratch.md --- README-scratch.md | 459 +++++++++++++++++++++++----------------------- 1 file changed, 231 insertions(+), 228 deletions(-) diff --git a/README-scratch.md b/README-scratch.md index a81eb6329..b89a3323f 100644 --- a/README-scratch.md +++ b/README-scratch.md @@ -1,229 +1,232 @@ -Mega Project List -======== - -Numbers ---------- - -**Find PI to the Nth Digit** - Enter a number and have the program generate PI up to that many decimal places. Keep a limit to how far the program will go. - -**Fibonacci Sequence** - Enter a number and have the program generate the Fibonacci sequence to that number or to the Nth number. - -**Prime Factorization** - Have the user enter a number and find all Prime Factors (if there are any) and display them. - -**Next Prime Number** - Have the program find prime numbers until the user chooses to stop asking for the next one. - -**Find Cost of Tile to Cover W x H Floor** - Calculate the total cost of tile it would take to cover a floor plan of width and height, using a cost entered by the user. - -**Mortgage Calculator** - Calculate the monthly payments of a fixed term mortgage over given Nth terms at a given interest rate. Also figure out how long it will take the user to pay back the loan. - -**Change Return Program** - The user enters a cost and then the amount of money given. The program will figure out the change and the number of quarters, dimes, nickels, pennies needed for the change. - -**Binary to Decimal and Back Converter** - Develop a converter to convert a decimal number to binary or a binary number to its decimal equivalent. - -**Calculator** - A simple calculator to do basic operators. Make it a scientific calculator for added complexity. - -**Unit Converter (temp, currency, volume, mass and more)** - Converts various units between one another. The user enters the type of unit being entered, the type of unit they want to convert to and then the value. The program will then make the conversion. - -**Alarm Clock** - A simple clock where it plays a sound after X number of minutes/seconds or at a particular time. - -**Distance Between Two Cities** - Calculates the distance between two cities and allows the user to specify a unit of distance. This program may require finding coordinates for the cities like latitude and longitude. - -**Credit Card Validator** - Takes in a credit card number from a common credit card vendor (Visa, MasterCard, American Express, Discoverer) and validates it to make sure that it is a valid number (look into how credit cards use a checksum). - -**Tax Calculator** - Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. - -**Factorial Finder** - The Factorial of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, ...1 and the factorial of zero, 0, is defined as being 1. Solve this using both loops and recursion. - -**Complex Number Algebra** - Show addition, multiplication, negation, and inversion of complex numbers in separate functions. (Subtraction and division operations can be made with pairs of these operations.) Print the results for each operation tested. - -**Happy Numbers** - A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers. Display an example of your output here. Find first 8 happy numbers. - -**Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* - -Classic Algorithms ------------------ - +Mega Project List +======== + +Numbers +--------- + +**Find PI to the Nth Digit** - Enter a number and have the program generate PI up to that many decimal places. Keep a limit to how far the program will go. + +**Fibonacci Sequence** - Enter a number and have the program generate the Fibonacci sequence to that number or to the Nth number. + +**Prime Factorization** - Have the user enter a number and find all Prime Factors (if there are any) and display them. + +**Next Prime Number** - Have the program find prime numbers until the user chooses to stop asking for the next one. + +**Find Cost of Tile to Cover W x H Floor** - Calculate the total cost of tile it would take to cover a floor plan of width and height, using a cost entered by the user. + +**Mortgage Calculator** - Calculate the monthly payments of a fixed term mortgage over given Nth terms at a given interest rate. Also figure out how long it will take the user to pay back the loan. + +**Change Return Program** - The user enters a cost and then the amount of money given. The program will figure out the change and the number of quarters, dimes, nickels, pennies needed for the change. + +**Binary to Decimal and Back Converter** - Develop a converter to convert a decimal number to binary or a binary number to its decimal equivalent. + +**Calculator** - A simple calculator to do basic operators. Make it a scientific calculator for added complexity. + +**Unit Converter (temp, currency, volume, mass and more)** - Converts various units between one another. The user enters the type of unit being entered, the type of unit they want to convert to and then the value. The program will then make the conversion. + +**Alarm Clock** - A simple clock where it plays a sound after X number of minutes/seconds or at a particular time. + +**Distance Between Two Cities** - Calculates the distance between two cities and allows the user to specify a unit of distance. This program may require finding coordinates for the cities like latitude and longitude. + +**Credit Card Validator** - Takes in a credit card number from a common credit card vendor (Visa, MasterCard, American Express, Discoverer) and validates it to make sure that it is a valid number (look into how credit cards use a checksum). + +**Tax Calculator** - Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. + +**Factorial Finder** - The Factorial of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, ...1 and the factorial of zero, 0, is defined as being 1. Solve this using both loops and recursion. + +**Complex Number Algebra** - Show addition, multiplication, negation, and inversion of complex numbers in separate functions. (Subtraction and division operations can be made with pairs of these operations.) Print the results for each operation tested. + +**Happy Numbers** - A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers. Display an example of your output here. Find first 8 happy numbers. + +**Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* + +Classic Algorithms +----------------- + **Collatz Conjecture** - Start with a number *n > 1*. Find the number of steps it takes to reach one using the following process: If *n* is even, divide it by 2. If *n* is odd, multiply it by 3 and add 1. - -**Sorting** - Implement two types of sorting algorithms: Merge sort and bubble sort. - -**Closest pair problem** - The closest pair of points problem or closest pair problem is a problem of computational geometry: given *n* points in metric space, find a pair of points with the smallest distance between them. - -**Sieve of Eratosthenes** - The sieve of Eratosthenes is one of the most efficient ways to find all of the smaller primes (below 10 million or so). - -**Inverted index** - An [Inverted Index](http://en.wikipedia.org/wiki/Inverted_index) is a data structure used to create full text search. Given a set of text files, implement a program to create an inverted index. Also create a user interface to do a search using that inverted index which returns a list of files that contain the query term / terms. The search index can be in memory. - -Graph --------- -**Graph from links** - Create a program that will create a graph or network from a series of links. - -**Eulerian Path** - Create a program which will take as an input a graph and output either a Eulerian path or a Eulerian cycle, or state that it is not possible. A Eulerian Path starts at one node and traverses every edge of a graph through every node and finishes at another node. A Eulerian cycle is a eulerian Path that starts and finishes at the same node. - -**Connected Graph** - Create a program which takes a graph as an input and outputs whether every node is connected or not. - -**Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. - - - -Text ---------- - -**Reverse a String** - Enter a string and the program will reverse it and print it out. - -**Pig Latin** - Pig Latin is a game of alterations played on the English language game. To create the Pig Latin form of an English word the initial consonant sound is transposed to the end of the word and an ay is affixed (Ex.: "banana" would yield anana-bay). Read Wikipedia for more information on rules. - -**Count Vowels** - Enter a string and the program counts the number of vowels in the text. For added complexity have it report a sum of each vowel found. - -**Check if Palindrome** - Checks if the string entered by the user is a palindrome. That is that it reads the same forwards as backwards like “racecar” - -**Count Words in a String** - Counts the number of individual words in a string. For added complexity read these strings in from a text file and generate a summary. - -**Text Editor** - Notepad style application that can open, edit, and save text documents. *Optional: Add syntax highlighting and other features.* - -**RSS Feed Creator** - Given a link to RSS/Atom Feed, get all posts and display them. - -**Post it Notes Program** - A program where you can add text reminders and post them. *Optional: You can have the program also add popup reminders.* - -**Quote Tracker (market symbols etc)** - A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked. For CLI, show whether the stock has moved up or down. *Optional: If GUI, the program can show green up and red down arrows to show which direction the stock value has moved.* - -**Guestbook / Journal** - A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. *Optional: Deploy it on Google App Engine or Heroku or any other PaaS (if possible, of course).* - -**Fortune Teller (Horoscope)** - A program that checks your horoscope on various astrology sites and puts them together for you each day. - -**Vigenere / Vernam / Ceasar Ciphers** - Functions for encrypting and decrypting data messages. Then send them to a friend. - -**Random Gift Suggestions** - Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one. *Optional: Suggest places you can get it (link to Amazon page?).* - -**Markdown to HTML Converter** - Converts Markdown formatted text into HTML files. Implement basic tags like `p`, `strong`, `em` etc. *Optional: Implement all tags from [Markdown Syntax Docs](daringfireball.net/projects/markdown/syntax).* - -**Regex Query Tool** - A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular expression against the source text and return any matches or flag errors in the regular expression. - -Networking ---------- - -**FTP Program** - A file transfer program which can transfer files back and forth from a remote web sever. - -**Bandwidth Monitor** - A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it. - -**Port Scanner** - Enter an IP address and a port range where the program will then attempt to find open ports on the given computer by connecting to each of them. On any successful connections mark the port as open. - -**Mail Checker (POP3 / IMAP)** - The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email at a given interval. - -**Country from IP Lookup** - Enter an IP address and find the country that IP is registered in. *Optional: Find the Ip automatically.* - -**Whois Search Tool** - Enter an IP or host address and have it look it up through whois and return the results to you. - -**Site Checker with Time Scheduling** - An application that attempts to connect to a website or server every so many minutes or a given time and check if it is up. If it is down, it will notify you by email or by posting a notice on screen. - -Classes ---------- - -**Product Inventory Project** - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an *inventory* class which keeps track of various products and can sum up the inventory value. - -**Airline / Hotel Reservation System** - Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. - -**Bank Account Manager** - Create a class called Account which will be an abstract class for three other classes called CheckingAccount, SavingsAccount and BusinessAccount. Manage credits and debits from these accounts through an ATM style program. - -**Patient / Doctor Scheduler** - Create a patient class and a doctor class. Have a doctor that can handle multiple patients and setup a scheduling program where a doctor can only handle 16 patients during an 8 hr work day. - -**Recipe Creator and Manager** - Create a recipe class with ingredients and a put them in a recipe manager program that organizes them into categories like deserts, main courses or by ingredients like chicken, beef, soups, pies etc. - -**Image Gallery** - Create an image abstract class and then a class that inherits from it for each image type. Put them in a program which displays them in a gallery style format for viewing. - -**Shape Area and Perimeter Classes** - Create an abstract class called Shape and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type. - -**Flower Shop Ordering To Go** - Create a flower shop application which deals in flower objects and use those flower objects in a bouquet object which can then be sold. Keep track of the number of objects and when you may need to order more. - -**Family Tree Creator** - Create a class called Person which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen. - -Threading ---------- - -**Create A Progress Bar for Downloads** - Create a progress bar for applications that can keep track of a download in progress. The progress bar will be on a separate thread and will communicate with the main thread using delegates. - -**Bulk Thumbnail Creator** - Picture processing can take a bit of time for some transformations. Especially if the image is large. Create an image program which can take hundreds of images and converts them to a specified size in the background thread while you do other things. For added complexity, have one thread handling re-sizing, have another bulk renaming of thumbnails etc. - -Web ---------- - -**Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. *Optional: Organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file.* - -**Web Browser with Tabs** - Create a small web browser that allows you to navigate the web and contains tabs which can be used to navigate to multiple web pages at once. For simplicity don’t worry about executing Javascript or other client side code. - -**Online White Board** - Create an application which allows you to draw pictures, write notes and use various colors to flesh out ideas for projects. *Optional: Add feature to invite friends to collaborate on a white board online.* - -**Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. Use any one of the atomic clocks returned by a simple Google search. - -**Fetch Current Weather** - Get the current weather for a given zip/postal code. *Optional: Try locating the user automatically.* - -**Scheduled Auto Login and Action** - Make an application which logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking web mail, posting regular content, or getting info for other applications and saving it to your computer. - -**E-Card Generator** - Make a site that allows people to generate their own little e-cards and send them to other people. Do not use Flash. Use a picture library and perhaps insightful mottos or quotes. - -**Content Management System** - Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small. *Optional: Allow for the addition of modules/addons.* - -**Web Board (Forum)** - Create a forum for you and your buddies to post, administer and share thoughts and ideas. - -**CAPTCHA Maker** - Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. - -Files ---------- - -**Quiz Maker** - Make an application which takes various questions form a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes. - -**File Explorer** - Create your own simple windows explorer program. Add feature(s) you always thought are missing from MS Windows Explorer or Mac Finder. - -**Sort Excel/CSV File Utility** - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. - -**Create Zip File Maker** - The user enters various files from different directories and the program zips them up into a zip file. *Optional: Apply actual compression to the files. Start with Huffman Algorithm.* - -**PDF Generator** - An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. *Optional: Deploy on GAE or Heroku if possible.* - -**Mp3 Tagger** - Modify and add ID3v1 tags to MP3 files. See if you can also add in the album art into the MP3 file’s header as well as other ID3v2 tags. - -**Code Snippet Manager** - Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. *Optional: For extra practice try adding syntax highlighting based on the language.* - -Databases ---------- - -**SQL Query Analyzer** - A utility application which a user can enter a query and have it run against a local database and look for ways to make it more efficient. - -**Remote SQL Tool** - A utility that can execute queries on remote servers from your local computer across the Internet. It should take in a remote host, user name and password, run the query and return the results. - -**Report Generator** - Create a utility that generates a report based on some tables in a database. Generates a sales reports based on the order/order details tables or sums up the days current database activity. - -**Event Scheduler and Calendar** - Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. *Optional: Allow the application to create re-occurrence events that reoccur every day, week, month, year etc.* - -**Budget Tracker** - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. *Optional: Allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period.* - -**Address Book** - Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database. - -**TV Show Tracker** - Got a favorite show you don’t want to miss? Don’t have a PVR or want to be able to find the show to then PVR it later? Make an application which can search various online TV Guide sites, locate the shows/times/channels and add them to a database application. The database/website then can send you email reminders that a show is about to start and which channel it will be on. - -**Travel Planner System** - Make a system that allows users to put together their own little travel itinerary and keep track of the airline / hotel arrangements, points of interest, budget and schedule. - -Graphics and Multimedia ---------- - -**Slide Show** - Make an application that shows various pictures in a slide show format. *Optional: Try adding various effects like fade in/out, star wipe and window blinds transitions.* - -**Stream Video from Online** - Try to create your own online streaming video player. - -**Mp3 Player** - A simple program for playing your favorite music files. Add features you though are missing from your favorite music player. - -**Watermarking Application** - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. *Optional: Use threading to process multiple images simultaneously.* - -**Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. Do a search online for "Turtle Graphics" for more information. *Optional: Allow the program to read in the list of commands from a file.* - -Security -------------- - -**Caesar cipher** - Implement a Caesar cipher, both encoding and decoding. The key is an integer from 1 to 25. This cipher rotates the letters of the alphabet (A to Z). The encoding replaces each letter with the 1st to 25th next letter in the alphabet (wrapping Z to A). So key 2 encrypts "HI" to "JK", but key 20 encrypts "HI" to "BC". This simple "monoalphabetic substitution cipher" provides almost no security, because an attacker who has the encoded message can either use frequency analysis to guess the key, or just try all 25 keys. - -=============================================== - -Sources -======= - -* [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) -* [Rosetta Code](http://rosettacode.org/) \ No newline at end of file + +**Sorting** - Implement two types of sorting algorithms: Merge sort and bubble sort. + +**Closest pair problem** - The closest pair of points problem or closest pair problem is a problem of computational geometry: given *n* points in metric space, find a pair of points with the smallest distance between them. + +**Sieve of Eratosthenes** - The sieve of Eratosthenes is one of the most efficient ways to find all of the smaller primes (below 10 million or so). + + +Graph +-------- +**Graph from links** - Create a program that will create a graph or network from a series of links. + +**Eulerian Path** - Create a program which will take as an input a graph and output either a Eulerian path or a Eulerian cycle, or state that it is not possible. A Eulerian Path starts at one node and traverses every edge of a graph through every node and finishes at another node. A Eulerian cycle is a eulerian Path that starts and finishes at the same node. + +**Connected Graph** - Create a program which takes a graph as an input and outputs whether every node is connected or not. + +**Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. + +Data Structures +--------- + +**Inverted index** - An [Inverted Index](http://en.wikipedia.org/wiki/Inverted_index) is a data structure used to create full text search. Given a set of text files, implement a program to create an inverted index. Also create a user interface to do a search using that inverted index which returns a list of files that contain the query term / terms. The search index can be in memory. + + +Text +--------- + +**Reverse a String** - Enter a string and the program will reverse it and print it out. + +**Pig Latin** - Pig Latin is a game of alterations played on the English language game. To create the Pig Latin form of an English word the initial consonant sound is transposed to the end of the word and an ay is affixed (Ex.: "banana" would yield anana-bay). Read Wikipedia for more information on rules. + +**Count Vowels** - Enter a string and the program counts the number of vowels in the text. For added complexity have it report a sum of each vowel found. + +**Check if Palindrome** - Checks if the string entered by the user is a palindrome. That is that it reads the same forwards as backwards like “racecar” + +**Count Words in a String** - Counts the number of individual words in a string. For added complexity read these strings in from a text file and generate a summary. + +**Text Editor** - Notepad style application that can open, edit, and save text documents. *Optional: Add syntax highlighting and other features.* + +**RSS Feed Creator** - Given a link to RSS/Atom Feed, get all posts and display them. + +**Post it Notes Program** - A program where you can add text reminders and post them. *Optional: You can have the program also add popup reminders.* + +**Quote Tracker (market symbols etc)** - A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked. For CLI, show whether the stock has moved up or down. *Optional: If GUI, the program can show green up and red down arrows to show which direction the stock value has moved.* + +**Guestbook / Journal** - A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. *Optional: Deploy it on Google App Engine or Heroku or any other PaaS (if possible, of course).* + +**Fortune Teller (Horoscope)** - A program that checks your horoscope on various astrology sites and puts them together for you each day. + +**Vigenere / Vernam / Ceasar Ciphers** - Functions for encrypting and decrypting data messages. Then send them to a friend. + +**Random Gift Suggestions** - Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one. *Optional: Suggest places you can get it (link to Amazon page?).* + +**Markdown to HTML Converter** - Converts Markdown formatted text into HTML files. Implement basic tags like `p`, `strong`, `em` etc. *Optional: Implement all tags from [Markdown Syntax Docs](daringfireball.net/projects/markdown/syntax).* + +**Regex Query Tool** - A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular expression against the source text and return any matches or flag errors in the regular expression. + +Networking +--------- + +**FTP Program** - A file transfer program which can transfer files back and forth from a remote web sever. + +**Bandwidth Monitor** - A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it. + +**Port Scanner** - Enter an IP address and a port range where the program will then attempt to find open ports on the given computer by connecting to each of them. On any successful connections mark the port as open. + +**Mail Checker (POP3 / IMAP)** - The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email at a given interval. + +**Country from IP Lookup** - Enter an IP address and find the country that IP is registered in. *Optional: Find the Ip automatically.* + +**Whois Search Tool** - Enter an IP or host address and have it look it up through whois and return the results to you. + +**Site Checker with Time Scheduling** - An application that attempts to connect to a website or server every so many minutes or a given time and check if it is up. If it is down, it will notify you by email or by posting a notice on screen. + +Classes +--------- + +**Product Inventory Project** - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an *inventory* class which keeps track of various products and can sum up the inventory value. + +**Airline / Hotel Reservation System** - Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. + +**Bank Account Manager** - Create a class called Account which will be an abstract class for three other classes called CheckingAccount, SavingsAccount and BusinessAccount. Manage credits and debits from these accounts through an ATM style program. + +**Patient / Doctor Scheduler** - Create a patient class and a doctor class. Have a doctor that can handle multiple patients and setup a scheduling program where a doctor can only handle 16 patients during an 8 hr work day. + +**Recipe Creator and Manager** - Create a recipe class with ingredients and a put them in a recipe manager program that organizes them into categories like deserts, main courses or by ingredients like chicken, beef, soups, pies etc. + +**Image Gallery** - Create an image abstract class and then a class that inherits from it for each image type. Put them in a program which displays them in a gallery style format for viewing. + +**Shape Area and Perimeter Classes** - Create an abstract class called Shape and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type. + +**Flower Shop Ordering To Go** - Create a flower shop application which deals in flower objects and use those flower objects in a bouquet object which can then be sold. Keep track of the number of objects and when you may need to order more. + +**Family Tree Creator** - Create a class called Person which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen. + +Threading +--------- + +**Create A Progress Bar for Downloads** - Create a progress bar for applications that can keep track of a download in progress. The progress bar will be on a separate thread and will communicate with the main thread using delegates. + +**Bulk Thumbnail Creator** - Picture processing can take a bit of time for some transformations. Especially if the image is large. Create an image program which can take hundreds of images and converts them to a specified size in the background thread while you do other things. For added complexity, have one thread handling re-sizing, have another bulk renaming of thumbnails etc. + +Web +--------- + +**Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. *Optional: Organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file.* + +**Web Browser with Tabs** - Create a small web browser that allows you to navigate the web and contains tabs which can be used to navigate to multiple web pages at once. For simplicity don’t worry about executing Javascript or other client side code. + +**Online White Board** - Create an application which allows you to draw pictures, write notes and use various colors to flesh out ideas for projects. *Optional: Add feature to invite friends to collaborate on a white board online.* + +**Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. Use any one of the atomic clocks returned by a simple Google search. + +**Fetch Current Weather** - Get the current weather for a given zip/postal code. *Optional: Try locating the user automatically.* + +**Scheduled Auto Login and Action** - Make an application which logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking web mail, posting regular content, or getting info for other applications and saving it to your computer. + +**E-Card Generator** - Make a site that allows people to generate their own little e-cards and send them to other people. Do not use Flash. Use a picture library and perhaps insightful mottos or quotes. + +**Content Management System** - Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small. *Optional: Allow for the addition of modules/addons.* + +**Web Board (Forum)** - Create a forum for you and your buddies to post, administer and share thoughts and ideas. + +**CAPTCHA Maker** - Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. + +Files +--------- + +**Quiz Maker** - Make an application which takes various questions form a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes. + +**File Explorer** - Create your own simple windows explorer program. Add feature(s) you always thought are missing from MS Windows Explorer or Mac Finder. + +**Sort Excel/CSV File Utility** - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. + +**Create Zip File Maker** - The user enters various files from different directories and the program zips them up into a zip file. *Optional: Apply actual compression to the files. Start with Huffman Algorithm.* + +**PDF Generator** - An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. *Optional: Deploy on GAE or Heroku if possible.* + +**Mp3 Tagger** - Modify and add ID3v1 tags to MP3 files. See if you can also add in the album art into the MP3 file’s header as well as other ID3v2 tags. + +**Code Snippet Manager** - Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. *Optional: For extra practice try adding syntax highlighting based on the language.* + +Databases +--------- + +**SQL Query Analyzer** - A utility application which a user can enter a query and have it run against a local database and look for ways to make it more efficient. + +**Remote SQL Tool** - A utility that can execute queries on remote servers from your local computer across the Internet. It should take in a remote host, user name and password, run the query and return the results. + +**Report Generator** - Create a utility that generates a report based on some tables in a database. Generates a sales reports based on the order/order details tables or sums up the days current database activity. + +**Event Scheduler and Calendar** - Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. *Optional: Allow the application to create re-occurrence events that reoccur every day, week, month, year etc.* + +**Budget Tracker** - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. *Optional: Allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period.* + +**Address Book** - Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database. + +**TV Show Tracker** - Got a favorite show you don’t want to miss? Don’t have a PVR or want to be able to find the show to then PVR it later? Make an application which can search various online TV Guide sites, locate the shows/times/channels and add them to a database application. The database/website then can send you email reminders that a show is about to start and which channel it will be on. + +**Travel Planner System** - Make a system that allows users to put together their own little travel itinerary and keep track of the airline / hotel arrangements, points of interest, budget and schedule. + +Graphics and Multimedia +--------- + +**Slide Show** - Make an application that shows various pictures in a slide show format. *Optional: Try adding various effects like fade in/out, star wipe and window blinds transitions.* + +**Stream Video from Online** - Try to create your own online streaming video player. + +**Mp3 Player** - A simple program for playing your favorite music files. Add features you though are missing from your favorite music player. + +**Watermarking Application** - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. *Optional: Use threading to process multiple images simultaneously.* + +**Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. Do a search online for "Turtle Graphics" for more information. *Optional: Allow the program to read in the list of commands from a file.* + +Security +------------- + +**Caesar cipher** - Implement a Caesar cipher, both encoding and decoding. The key is an integer from 1 to 25. This cipher rotates the letters of the alphabet (A to Z). The encoding replaces each letter with the 1st to 25th next letter in the alphabet (wrapping Z to A). So key 2 encrypts "HI" to "JK", but key 20 encrypts "HI" to "BC". This simple "monoalphabetic substitution cipher" provides almost no security, because an attacker who has the encoded message can either use frequency analysis to guess the key, or just try all 25 keys. + +=============================================== + +Sources +======= + +* [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) +* [Rosetta Code](http://rosettacode.org/) From c9e2a81ed3f4603c0c25dcbf88ecdda726c443d4 Mon Sep 17 00:00:00 2001 From: Daniele Bonadiman Date: Wed, 4 Sep 2013 17:36:23 +0200 Subject: [PATCH 066/110] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6c0a48634..8355a725a 100644 --- a/README.md +++ b/README.md @@ -105,7 +105,7 @@ Graphs **Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. -Information Retrieval +Data Structures --------- **Inverted index** - An [Inverted Index](http://en.wikipedia.org/wiki/Inverted_index) is a data structure used to create full text search. Given a set of text files, implement a program to create an inverted index. Also create a user interface to do a search using that inverted index which returns a list of files that contain the query term / terms. The search index can be in memory. From 52949a3095f6f842ff4685090f59ce07a11f9429 Mon Sep 17 00:00:00 2001 From: Daniele Bonadiman Date: Wed, 4 Sep 2013 17:40:56 +0200 Subject: [PATCH 067/110] added Data Structures Folder --- Data Structures/README.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 Data Structures/README.md diff --git a/Data Structures/README.md b/Data Structures/README.md new file mode 100644 index 000000000..ec861fe6a --- /dev/null +++ b/Data Structures/README.md @@ -0,0 +1,4 @@ +Data Structures +--------- + +**Inverted index** - An [Inverted Index](http://en.wikipedia.org/wiki/Inverted_index) is a data structure used to create full text search. Given a set of text files, implement a program to create an inverted index. Also create a user interface to do a search using that inverted index which returns a list of files that contain the query term / terms. The search index can be in memory. \ No newline at end of file From 434c867e58d3f99c70668900c3ba490295c6ca53 Mon Sep 17 00:00:00 2001 From: Daniele Bonadiman Date: Wed, 4 Sep 2013 17:41:33 +0200 Subject: [PATCH 068/110] Update README.md --- Classic Algorithms/README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/Classic Algorithms/README.md b/Classic Algorithms/README.md index 9d15e2322..bd88e10d6 100644 --- a/Classic Algorithms/README.md +++ b/Classic Algorithms/README.md @@ -8,5 +8,3 @@ Classic Algorithms **Closest pair problem** - The closest pair of points problem or closest pair problem is a problem of computational geometry: given *n* points in metric space, find a pair of points with the smallest distance between them. **Sieve of Eratosthenes** - The sieve of Eratosthenes is one of the most efficient ways to find all of the smaller primes (below 10 million or so). - -**Inverted index** - An [Inverted Index](http://en.wikipedia.org/wiki/Inverted_index) is a data structure used to create full text search. Given a set of text files, implement a program to create an inverted index. Also create a user interface to do a search using that inverted index which returns a list of files that contain the query term / terms. The search index can be in memory. \ No newline at end of file From e38a3b06a765de6d60705374bc300604267faf3b Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Fri, 13 Sep 2013 12:45:40 +0530 Subject: [PATCH 069/110] Remove math import --- Numbers/prime.py | 1 - 1 file changed, 1 deletion(-) diff --git a/Numbers/prime.py b/Numbers/prime.py index 45cbe1390..ffa1ea83c 100644 --- a/Numbers/prime.py +++ b/Numbers/prime.py @@ -2,7 +2,6 @@ # and find all Prime Factors (if there are any) and # display them. -import math def is_a_prime(x): for i in range(2, x): From 8da323c5053756da78fb610242165fcd54b5ccf4 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Thu, 17 Oct 2013 09:40:39 -0700 Subject: [PATCH 070/110] update --- .gitignore | 76 +++++++++++------------ Classes/README.md | 38 ++++++------ Databases/README.md | 34 +++++----- Files/README.md | 30 ++++----- Graphics and Multimedia/README.md | 22 +++---- Networking/README.md | 30 ++++----- Numbers/README.md | 78 +++++++++++------------ Numbers/alarm.py | 98 ++++++++++++++--------------- Numbers/binary_decimal.py | 100 +++++++++++++++--------------- Numbers/credit_card_validator.py | 82 ++++++++++++------------ Numbers/factorial.py | 66 ++++++++++---------- Numbers/fibonacci.py | 30 ++++----- Numbers/next_prime.py | 50 +++++++-------- Numbers/pi.py | 20 +++--- Numbers/tile.py | 22 +++---- README.md | 2 +- RECOGNITION/README.md | 46 +++++++------- Text/README.md | 62 +++++++++--------- Text/count_words.py | 52 ++++++++-------- Text/palindrome.py | 24 +++---- Text/piglatin.py | 44 ++++++------- Text/reverse.py | 16 ++--- Threading/README.md | 10 +-- Web/README.md | 42 ++++++------- 24 files changed, 537 insertions(+), 537 deletions(-) diff --git a/.gitignore b/.gitignore index c084059d9..966cf2fa9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,39 +1,39 @@ -*.py[cod] - -# C extensions -*.so - -# Packages -*.egg -*.egg-info -dist -build -eggs -parts -bin -var -sdist -develop-eggs -.installed.cfg -lib -lib64 - -# Installer logs -pip-log.txt - -# Unit test / coverage reports -.coverage -.tox -nosetests.xml - -# Translations -*.mo - -# Mr Developer -.mr.developer.cfg -.project -.pydevproject - -# Komodo -.komodotools/ +*.py[cod] + +# C extensions +*.so + +# Packages +*.egg +*.egg-info +dist +build +eggs +parts +bin +var +sdist +develop-eggs +.installed.cfg +lib +lib64 + +# Installer logs +pip-log.txt + +# Unit test / coverage reports +.coverage +.tox +nosetests.xml + +# Translations +*.mo + +# Mr Developer +.mr.developer.cfg +.project +.pydevproject + +# Komodo +.komodotools/ *.komodoproject \ No newline at end of file diff --git a/Classes/README.md b/Classes/README.md index c37fd9d63..1e45760a8 100644 --- a/Classes/README.md +++ b/Classes/README.md @@ -1,20 +1,20 @@ -Classes ---------- - -**Product Inventory Project** - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an *inventory* class which keeps track of various products and can sum up the inventory value. - -**Airline / Hotel Reservation System** - Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. - -**Bank Account Manager** - Create a class called Account which will be an abstract class for three other classes called CheckingAccount, SavingsAccount and BusinessAccount. Manage credits and debits from these accounts through an ATM style program. - -**Patient / Doctor Scheduler** - Create a patient class and a doctor class. Have a doctor that can handle multiple patients and setup a scheduling program where a doctor can only handle 16 patients during an 8 hr work day. - -**Recipe Creator and Manager** - Create a recipe class with ingredients and a put them in a recipe manager program that organizes them into categories like deserts, main courses or by ingredients like chicken, beef, soups, pies etc. - -**Image Gallery** - Create an image abstract class and then a class that inherits from it for each image type. Put them in a program which displays them in a gallery style format for viewing. - -**Shape Area and Perimeter Classes** - Create an abstract class called Shape and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type. - -**Flower Shop Ordering To Go** - Create a flower shop application which deals in flower objects and use those flower objects in a bouquet object which can then be sold. Keep track of the number of objects and when you may need to order more. - +Classes +--------- + +**Product Inventory Project** - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an *inventory* class which keeps track of various products and can sum up the inventory value. + +**Airline / Hotel Reservation System** - Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. + +**Bank Account Manager** - Create a class called Account which will be an abstract class for three other classes called CheckingAccount, SavingsAccount and BusinessAccount. Manage credits and debits from these accounts through an ATM style program. + +**Patient / Doctor Scheduler** - Create a patient class and a doctor class. Have a doctor that can handle multiple patients and setup a scheduling program where a doctor can only handle 16 patients during an 8 hr work day. + +**Recipe Creator and Manager** - Create a recipe class with ingredients and a put them in a recipe manager program that organizes them into categories like deserts, main courses or by ingredients like chicken, beef, soups, pies etc. + +**Image Gallery** - Create an image abstract class and then a class that inherits from it for each image type. Put them in a program which displays them in a gallery style format for viewing. + +**Shape Area and Perimeter Classes** - Create an abstract class called Shape and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type. + +**Flower Shop Ordering To Go** - Create a flower shop application which deals in flower objects and use those flower objects in a bouquet object which can then be sold. Keep track of the number of objects and when you may need to order more. + **Family Tree Creator** - Create a class called Person which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen. \ No newline at end of file diff --git a/Databases/README.md b/Databases/README.md index 6ca5485da..48fe04a91 100644 --- a/Databases/README.md +++ b/Databases/README.md @@ -1,18 +1,18 @@ -Databases ---------- - -**SQL Query Analyzer** - A utility application which a user can enter a query and have it run against a local database and look for ways to make it more efficient. - -**Remote SQL Tool** - A utility that can execute queries on remote servers from your local computer across the Internet. It should take in a remote host, user name and password, run the query and return the results. - -**Report Generator** - Create a utility that generates a report based on some tables in a database. Generates a sales reports based on the order/order details tables or sums up the days current database activity. - -**Event Scheduler and Calendar** - Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. *Optional: Allow the application to create re-occurrence events that reoccur every day, week, month, year etc.* - -**Budget Tracker** - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. *Optional: Allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period.* - -**Address Book** - Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database. - -**TV Show Tracker** - Got a favorite show you don’t want to miss? Don’t have a PVR or want to be able to find the show to then PVR it later? Make an application which can search various online TV Guide sites, locate the shows/times/channels and add them to a database application. The database/website then can send you email reminders that a show is about to start and which channel it will be on. - +Databases +--------- + +**SQL Query Analyzer** - A utility application which a user can enter a query and have it run against a local database and look for ways to make it more efficient. + +**Remote SQL Tool** - A utility that can execute queries on remote servers from your local computer across the Internet. It should take in a remote host, user name and password, run the query and return the results. + +**Report Generator** - Create a utility that generates a report based on some tables in a database. Generates a sales reports based on the order/order details tables or sums up the days current database activity. + +**Event Scheduler and Calendar** - Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. *Optional: Allow the application to create re-occurrence events that reoccur every day, week, month, year etc.* + +**Budget Tracker** - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. *Optional: Allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period.* + +**Address Book** - Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database. + +**TV Show Tracker** - Got a favorite show you don’t want to miss? Don’t have a PVR or want to be able to find the show to then PVR it later? Make an application which can search various online TV Guide sites, locate the shows/times/channels and add them to a database application. The database/website then can send you email reminders that a show is about to start and which channel it will be on. + **Travel Planner System** - Make a system that allows users to put together their own little travel itinerary and keep track of the airline / hotel arrangements, points of interest, budget and schedule. \ No newline at end of file diff --git a/Files/README.md b/Files/README.md index 881155570..b564c730b 100644 --- a/Files/README.md +++ b/Files/README.md @@ -1,16 +1,16 @@ -Files ---------- - -**Quiz Maker** - Make an application which takes various questions form a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes. - -**File Explorer** - Create your own simple windows explorer program. Add feature(s) you always thought are missing from MS Windows Explorer or Mac Finder. - -**Sort Excel/CSV File Utility** - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. - -**Create Zip File Maker** - The user enters various files from different directories and the program zips them up into a zip file. *Optional: Apply actual compression to the files. Start with Huffman Algorithm.* - -**PDF Generator** - An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. *Optional: Deploy on GAE or Heroku if possible.* - -**Mp3 Tagger** - Modify and add ID3v1 tags to MP3 files. See if you can also add in the album art into the MP3 file’s header as well as other ID3v2 tags. - +Files +--------- + +**Quiz Maker** - Make an application which takes various questions form a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes. + +**File Explorer** - Create your own simple windows explorer program. Add feature(s) you always thought are missing from MS Windows Explorer or Mac Finder. + +**Sort Excel/CSV File Utility** - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. + +**Create Zip File Maker** - The user enters various files from different directories and the program zips them up into a zip file. *Optional: Apply actual compression to the files. Start with Huffman Algorithm.* + +**PDF Generator** - An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. *Optional: Deploy on GAE or Heroku if possible.* + +**Mp3 Tagger** - Modify and add ID3v1 tags to MP3 files. See if you can also add in the album art into the MP3 file’s header as well as other ID3v2 tags. + **Code Snippet Manager** - Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. *Optional: For extra practice try adding syntax highlighting based on the language.* \ No newline at end of file diff --git a/Graphics and Multimedia/README.md b/Graphics and Multimedia/README.md index f7aa3ce9a..f104dac4c 100644 --- a/Graphics and Multimedia/README.md +++ b/Graphics and Multimedia/README.md @@ -1,12 +1,12 @@ -Graphics and Multimedia ---------- - -**Slide Show** - Make an application that shows various pictures in a slide show format. *Optional: Try adding various effects like fade in/out, star wipe and window blinds transitions.* - -**Stream Video from Online** - Try to create your own online streaming video player. - -**Mp3 Player** - A simple program for playing your favorite music files. Add features you though are missing from your favorite music player. - -**Watermarking Application** - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. *Optional: Use threading to process multiple images simultaneously.* - +Graphics and Multimedia +--------- + +**Slide Show** - Make an application that shows various pictures in a slide show format. *Optional: Try adding various effects like fade in/out, star wipe and window blinds transitions.* + +**Stream Video from Online** - Try to create your own online streaming video player. + +**Mp3 Player** - A simple program for playing your favorite music files. Add features you though are missing from your favorite music player. + +**Watermarking Application** - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. *Optional: Use threading to process multiple images simultaneously.* + **Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. Do a search online for "Turtle Graphics" for more information. *Optional: Allow the program to read in the list of commands from a file.* \ No newline at end of file diff --git a/Networking/README.md b/Networking/README.md index d222d7db4..81565e25e 100644 --- a/Networking/README.md +++ b/Networking/README.md @@ -1,16 +1,16 @@ -Networking ---------- - -**FTP Program** - A file transfer program which can transfer files back and forth from a remote web sever. - -**Bandwidth Monitor** - A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it. - -**Port Scanner** - Enter an IP address and a port range where the program will then attempt to find open ports on the given computer by connecting to each of them. On any successful connections mark the port as open. - -**Mail Checker (POP3 / IMAP)** - The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email at a given interval. - -**Country from IP Lookup** - Enter an IP address and find the country that IP is registered in. *Optional: Find the Ip automatically.* - -**Whois Search Tool** - Enter an IP or host address and have it look it up through whois and return the results to you. - +Networking +--------- + +**FTP Program** - A file transfer program which can transfer files back and forth from a remote web sever. + +**Bandwidth Monitor** - A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it. + +**Port Scanner** - Enter an IP address and a port range where the program will then attempt to find open ports on the given computer by connecting to each of them. On any successful connections mark the port as open. + +**Mail Checker (POP3 / IMAP)** - The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email at a given interval. + +**Country from IP Lookup** - Enter an IP address and find the country that IP is registered in. *Optional: Find the Ip automatically.* + +**Whois Search Tool** - Enter an IP or host address and have it look it up through whois and return the results to you. + **Site Checker with Time Scheduling** - An application that attempts to connect to a website or server every so many minutes or a given time and check if it is up. If it is down, it will notify you by email or by posting a notice on screen. \ No newline at end of file diff --git a/Numbers/README.md b/Numbers/README.md index ce820a66d..c6fc22db6 100644 --- a/Numbers/README.md +++ b/Numbers/README.md @@ -1,40 +1,40 @@ -Numbers ---------- - -**Find PI to the Nth Digit** - Enter a number and have the program generate PI up to that many decimal places. Keep a limit to how far the program will go. - -**Fibonacci Sequence** - Enter a number and have the program generate the Fibonacci sequence to that number or to the Nth number. - -**Prime Factorization** - Have the user enter a number and find all Prime Factors (if there are any) and display them. - -**Next Prime Number** - Have the program find prime numbers until the user chooses to stop asking for the next one. - -**Find Cost of Tile to Cover W x H Floor** - Calculate the total cost of tile it would take to cover a floor plan of width and height, using a cost entered by the user. - -**Mortgage Calculator** - Calculate the monthly payments of a fixed term mortgage over given Nth terms at a given interest rate. Also figure out how long it will take the user to pay back the loan. - -**Change Return Program** - The user enters a cost and then the amount of money given. The program will figure out the change and the number of quarters, dimes, nickels, pennies needed for the change. - -**Binary to Decimal and Back Converter** - Develop a converter to convert a decimal number to binary or a binary number to its decimal equivalent. - -**Calculator** - A simple calculator to do basic operators. Make it a scientific calculator for added complexity. - -**Unit Converter (temp, currency, volume, mass and more)** - Converts various units between one another. The user enters the type of unit being entered, the type of unit they want to convert to and then the value. The program will then make the conversion. - -**Alarm Clock** - A simple clock where it plays a sound after X number of minutes/seconds or at a particular time. - -**Distance Between Two Cities** - Calculates the distance between two cities and allows the user to specify a unit of distance. This program may require finding coordinates for the cities like latitude and longitude. - -**Credit Card Validator** - Takes in a credit card number from a common credit card vendor (Visa, MasterCard, American Express, Discoverer) and validates it to make sure that it is a valid number (look into how credit cards use a checksum). - -**Tax Calculator** - Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. - -**Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. - -**Factorial Finder** - The Factorial of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, ...1 and the factorial of zero, 0, is defined as being 1. Solve this using both loops and recursion. - -**Complex Number Algebra** - Show addition, multiplication, negation, and inversion of complex numbers in separate functions. (Subtraction and division operations can be made with pairs of these operations.) Print the results for each operation tested. - -**Happy Numbers** - A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers. Display an example of your output here. Find first 8 happy numbers. - +Numbers +--------- + +**Find PI to the Nth Digit** - Enter a number and have the program generate PI up to that many decimal places. Keep a limit to how far the program will go. + +**Fibonacci Sequence** - Enter a number and have the program generate the Fibonacci sequence to that number or to the Nth number. + +**Prime Factorization** - Have the user enter a number and find all Prime Factors (if there are any) and display them. + +**Next Prime Number** - Have the program find prime numbers until the user chooses to stop asking for the next one. + +**Find Cost of Tile to Cover W x H Floor** - Calculate the total cost of tile it would take to cover a floor plan of width and height, using a cost entered by the user. + +**Mortgage Calculator** - Calculate the monthly payments of a fixed term mortgage over given Nth terms at a given interest rate. Also figure out how long it will take the user to pay back the loan. + +**Change Return Program** - The user enters a cost and then the amount of money given. The program will figure out the change and the number of quarters, dimes, nickels, pennies needed for the change. + +**Binary to Decimal and Back Converter** - Develop a converter to convert a decimal number to binary or a binary number to its decimal equivalent. + +**Calculator** - A simple calculator to do basic operators. Make it a scientific calculator for added complexity. + +**Unit Converter (temp, currency, volume, mass and more)** - Converts various units between one another. The user enters the type of unit being entered, the type of unit they want to convert to and then the value. The program will then make the conversion. + +**Alarm Clock** - A simple clock where it plays a sound after X number of minutes/seconds or at a particular time. + +**Distance Between Two Cities** - Calculates the distance between two cities and allows the user to specify a unit of distance. This program may require finding coordinates for the cities like latitude and longitude. + +**Credit Card Validator** - Takes in a credit card number from a common credit card vendor (Visa, MasterCard, American Express, Discoverer) and validates it to make sure that it is a valid number (look into how credit cards use a checksum). + +**Tax Calculator** - Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. + +**Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. + +**Factorial Finder** - The Factorial of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, ...1 and the factorial of zero, 0, is defined as being 1. Solve this using both loops and recursion. + +**Complex Number Algebra** - Show addition, multiplication, negation, and inversion of complex numbers in separate functions. (Subtraction and division operations can be made with pairs of these operations.) Print the results for each operation tested. + +**Happy Numbers** - A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers. Display an example of your output here. Find first 8 happy numbers. + **Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* \ No newline at end of file diff --git a/Numbers/alarm.py b/Numbers/alarm.py index a0a1c7367..24e0d9e81 100644 --- a/Numbers/alarm.py +++ b/Numbers/alarm.py @@ -1,49 +1,49 @@ -""" -Alarm Clock - A simple clock where it plays a sound after -X number of minutes/seconds or at a particular time. - -Dependencies: -pyglet - pip install pyglet -""" - -import time -import winsound -import pyglet - -def play(hh, mm): - not_alarmed = 1 - - while(not_alarmed): - cur_time = list(time.localtime()) # get the time right now - hour = cur_time[3] # find the hour - minute = cur_time[4] # and the minute - if hour == hh and minute == mm: - song = pyglet.media.load('bin/sound.wav') - song.play() # play the sound - pyglet.app.run() - not_alarmed = 0 # stop the loop - -if __name__ == '__main__': - - print """ - 1. Play sound after X minutes - 2. Play sound at an exact time - """ - choice = input('What do you want to do? ') - - if choice == 1: - mins = input('How many minutes from now? ') - hh_from_now = mins / 60 # if minutes > 60, this will adjust the hours - mm_from_now = mins % 60 # and then the minutes - cur_time = list(time.localtime()) # get the time right now - hour = cur_time[3] # find the current hour - minute = cur_time[4] # and the current minute - hh = (hour + hh_from_now) % 24 # cycle through the clock if hh > 24 - mm = (minute + mm_from_now) % 60 # cycle through the clock if mm > 60 - play(hh, mm) - elif choice == 2: - hh = input('What hour do you want to wake up (0-23)? ') - mm = input('What minute do you want to wake up (0-59)? ') - play(hh, mm) - +""" +Alarm Clock - A simple clock where it plays a sound after +X number of minutes/seconds or at a particular time. + +Dependencies: +pyglet + pip install pyglet +""" + +import time +import winsound +import pyglet + +def play(hh, mm): + not_alarmed = 1 + + while(not_alarmed): + cur_time = list(time.localtime()) # get the time right now + hour = cur_time[3] # find the hour + minute = cur_time[4] # and the minute + if hour == hh and minute == mm: + song = pyglet.media.load('bin/sound.wav') + song.play() # play the sound + pyglet.app.run() + not_alarmed = 0 # stop the loop + +if __name__ == '__main__': + + print """ + 1. Play sound after X minutes + 2. Play sound at an exact time + """ + choice = input('What do you want to do? ') + + if choice == 1: + mins = input('How many minutes from now? ') + hh_from_now = mins / 60 # if minutes > 60, this will adjust the hours + mm_from_now = mins % 60 # and then the minutes + cur_time = list(time.localtime()) # get the time right now + hour = cur_time[3] # find the current hour + minute = cur_time[4] # and the current minute + hh = (hour + hh_from_now) % 24 # cycle through the clock if hh > 24 + mm = (minute + mm_from_now) % 60 # cycle through the clock if mm > 60 + play(hh, mm) + elif choice == 2: + hh = input('What hour do you want to wake up (0-23)? ') + mm = input('What minute do you want to wake up (0-59)? ') + play(hh, mm) + diff --git a/Numbers/binary_decimal.py b/Numbers/binary_decimal.py index f378fb76f..5453fb888 100644 --- a/Numbers/binary_decimal.py +++ b/Numbers/binary_decimal.py @@ -1,50 +1,50 @@ -""" -Binary to Decimal and Back Converter -Develop a converter to convert a decimal number to binary -or a binary number to its decimal equivalent. -""" - -def binary_to_decimal(binary): - """ - Converts a binary number into a decimal number. - """ - decimal = 0 - index = 0 - while binary > 0: - last = binary % 10 - binary = binary / 10 - decimal += (last * (2 ** index)) - index += 1 - return decimal - -def decimal_to_binary(decimal): - """ - Converts a decimal number into a binary number. - """ - binary = "" - remainders = [] - while decimal > 0: - remainders.append(str(decimal % 2)) - decimal /= 2 - remainders.reverse() - binary = "".join(remainders) - return binary - -if __name__ == '__main__': - print """ - 1. Binary to Decimal - 2. Decimal to Binary\n - """ - - choice = input("Make a choice: ") - - if choice == 1: - binary = input("Binary to convert: ") - print "The binary number %d in decimal is %d" % \ - (binary, binary_to_decimal(binary)) - elif choice == 2: - decimal = input("Decimal to convert: ") - print "The decimal number %d in binary is %s" % \ - (decimal, decimal_to_binary(decimal)) - else: - print "Invalid choice" +""" +Binary to Decimal and Back Converter +Develop a converter to convert a decimal number to binary +or a binary number to its decimal equivalent. +""" + +def binary_to_decimal(binary): + """ + Converts a binary number into a decimal number. + """ + decimal = 0 + index = 0 + while binary > 0: + last = binary % 10 + binary = binary / 10 + decimal += (last * (2 ** index)) + index += 1 + return decimal + +def decimal_to_binary(decimal): + """ + Converts a decimal number into a binary number. + """ + binary = "" + remainders = [] + while decimal > 0: + remainders.append(str(decimal % 2)) + decimal /= 2 + remainders.reverse() + binary = "".join(remainders) + return binary + +if __name__ == '__main__': + print """ + 1. Binary to Decimal + 2. Decimal to Binary\n + """ + + choice = input("Make a choice: ") + + if choice == 1: + binary = input("Binary to convert: ") + print "The binary number %d in decimal is %d" % \ + (binary, binary_to_decimal(binary)) + elif choice == 2: + decimal = input("Decimal to convert: ") + print "The decimal number %d in binary is %s" % \ + (decimal, decimal_to_binary(decimal)) + else: + print "Invalid choice" diff --git a/Numbers/credit_card_validator.py b/Numbers/credit_card_validator.py index 7bb0a39cf..fb4e8fc95 100644 --- a/Numbers/credit_card_validator.py +++ b/Numbers/credit_card_validator.py @@ -1,41 +1,41 @@ -""" -Credit Card Validator - Takes in a credit card number from a -common credit card vendor (Visa, MasterCard, American Express, -Discoverer) and validates it to make sure that it is a valid -number (look into how credit cards use a checksum). - -This program works with *most* credit card numbers. - -Uses Luhn Algorithm (http://en.wikipedia.org/wiki/Luhn_algorithm). - -1. From the rightmost digit, which is the check digit, moving -left, double the value of every second digit; if product of this -doubling operation is greater than 9 (e.g., 7 * 2 = 14), then -sum the digits of the products (e.g., 10: 1 + 0 = 1, 14: 1 + 4 = 5). - -2. Add together doubled digits with the undoubled digits from the -original number. - -3. If the total modulo 10 is equal to 0 (if the total ends in zero) -then the number is valid according to the Luhn formula; else it is -not valid. -""" - -if __name__ == '__main__': - number = raw_input('Enter the credit card number of check: ').replace(' ', '') - #if not number.isdigit(): - # raise Exception('Invalid credit card number. Make sure it\'s all digits (with optional spaces in between).' - - digits = [int(char) for char in number] - - # double alternate digits (step 1) - doubled = [(digit * 2) if (i % 2 == 0) else digit \ - for (i, digit) in enumerate(digits)] # i <3 python - # sum digits of number > 10 (step 2) - summed = [num if num < 10 else sum([int(dig) for dig in str(num)]) \ - for num in doubled] # i <3 python ** 2 - # step 3 - if sum(summed) % 10 == 0: - print 'The number is valid' - else: - print 'The number is invalid' +""" +Credit Card Validator - Takes in a credit card number from a +common credit card vendor (Visa, MasterCard, American Express, +Discoverer) and validates it to make sure that it is a valid +number (look into how credit cards use a checksum). + +This program works with *most* credit card numbers. + +Uses Luhn Algorithm (http://en.wikipedia.org/wiki/Luhn_algorithm). + +1. From the rightmost digit, which is the check digit, moving +left, double the value of every second digit; if product of this +doubling operation is greater than 9 (e.g., 7 * 2 = 14), then +sum the digits of the products (e.g., 10: 1 + 0 = 1, 14: 1 + 4 = 5). + +2. Add together doubled digits with the undoubled digits from the +original number. + +3. If the total modulo 10 is equal to 0 (if the total ends in zero) +then the number is valid according to the Luhn formula; else it is +not valid. +""" + +if __name__ == '__main__': + number = raw_input('Enter the credit card number of check: ').replace(' ', '') + #if not number.isdigit(): + # raise Exception('Invalid credit card number. Make sure it\'s all digits (with optional spaces in between).' + + digits = [int(char) for char in number] + + # double alternate digits (step 1) + doubled = [(digit * 2) if (i % 2 == 0) else digit \ + for (i, digit) in enumerate(digits)] # i <3 python + # sum digits of number > 10 (step 2) + summed = [num if num < 10 else sum([int(dig) for dig in str(num)]) \ + for num in doubled] # i <3 python ** 2 + # step 3 + if sum(summed) % 10 == 0: + print 'The number is valid' + else: + print 'The number is invalid' diff --git a/Numbers/factorial.py b/Numbers/factorial.py index b09d5e2f4..cd8e753fc 100644 --- a/Numbers/factorial.py +++ b/Numbers/factorial.py @@ -1,33 +1,33 @@ -""" -Factorial Finder - The Factorial of a positive integer, n, -is defined as the product of the sequence n, n-1, n-2, ...1 -and the factorial of zero, 0, is defined as being 1. Solve -this using both loops and recursion. -""" - -def fact_loop(n): - """ - Returns the factorial of a given positive, non-zero integer - using loops. - """ - fact = 1 - while n > 0: - fact *= n - n -= 1 - return fact - -def fact_recursion(n): - """ - Returns the factorial of a given positive, non-zero integer - using recursion. - """ - return 1 if n == 0 else n * fact_recursion(n - 1) # if user as ternary operator - -if __name__ == '__main__': - n = input('Enter a positive number: ') - - if n >= 0: - print 'Factorial of %d by loops is %d' % (n, fact_loop(n)) - print 'Factorial of %d by recursion is %d' % (n, fact_recursion(n)) - else: - print 'Not a valid number' +""" +Factorial Finder - The Factorial of a positive integer, n, +is defined as the product of the sequence n, n-1, n-2, ...1 +and the factorial of zero, 0, is defined as being 1. Solve +this using both loops and recursion. +""" + +def fact_loop(n): + """ + Returns the factorial of a given positive, non-zero integer + using loops. + """ + fact = 1 + while n > 0: + fact *= n + n -= 1 + return fact + +def fact_recursion(n): + """ + Returns the factorial of a given positive, non-zero integer + using recursion. + """ + return 1 if n == 0 else n * fact_recursion(n - 1) # if user as ternary operator + +if __name__ == '__main__': + n = input('Enter a positive number: ') + + if n >= 0: + print 'Factorial of %d by loops is %d' % (n, fact_loop(n)) + print 'Factorial of %d by recursion is %d' % (n, fact_recursion(n)) + else: + print 'Not a valid number' diff --git a/Numbers/fibonacci.py b/Numbers/fibonacci.py index a6692a94f..2c239b48d 100644 --- a/Numbers/fibonacci.py +++ b/Numbers/fibonacci.py @@ -1,15 +1,15 @@ -# -*- coding: cp1252 -*- -# Fibonacci Sequence - Enter a number and have the -# program generate the Fibonacci sequence to that number -# or to the Nth number - -n = int(raw_input('How many numbers do you need? ')) -series = [1] - -while len(series) < n: - if len(series) == 1: - series.append(1) - else: - series.append(series[-1] + series[-2]) - -print series +# -*- coding: cp1252 -*- +# Fibonacci Sequence - Enter a number and have the +# program generate the Fibonacci sequence to that number +# or to the Nth number + +n = int(raw_input('How many numbers do you need? ')) +series = [1] + +while len(series) < n: + if len(series) == 1: + series.append(1) + else: + series.append(series[-1] + series[-2]) + +print series diff --git a/Numbers/next_prime.py b/Numbers/next_prime.py index 0f356acee..3d479bd07 100644 --- a/Numbers/next_prime.py +++ b/Numbers/next_prime.py @@ -1,25 +1,25 @@ -# Next Prime Number - Have the program find prime -# numbers until the user chooses to stop asking for -# the next one. - -def next_prime(current): - next_prime = current + 1 # start checking for primes 1 number after the current one - i = 2 - while next_prime > i: # check with numbers up to next_prime - 1 - if next_prime % i == 0: # if number is divisible - next_prime += 1 # ready to check the next number - i = 2 # reset i to check divisibility again from 2 - else: - i += 1 # increment the divisor - return next_prime - -if __name__ == '__main__': - current_prime = 2 - while True: - response = raw_input('Do you want the next prime? (Y/N) ') - - if response.lower().startswith('y'): - print current_prime - current_prime = next_prime(current_prime) - else: - break +# Next Prime Number - Have the program find prime +# numbers until the user chooses to stop asking for +# the next one. + +def next_prime(current): + next_prime = current + 1 # start checking for primes 1 number after the current one + i = 2 + while next_prime > i: # check with numbers up to next_prime - 1 + if next_prime % i == 0: # if number is divisible + next_prime += 1 # ready to check the next number + i = 2 # reset i to check divisibility again from 2 + else: + i += 1 # increment the divisor + return next_prime + +if __name__ == '__main__': + current_prime = 2 + while True: + response = raw_input('Do you want the next prime? (Y/N) ') + + if response.lower().startswith('y'): + print current_prime + current_prime = next_prime(current_prime) + else: + break diff --git a/Numbers/pi.py b/Numbers/pi.py index 559480110..027c63e50 100644 --- a/Numbers/pi.py +++ b/Numbers/pi.py @@ -1,10 +1,10 @@ -# Find PI to the Nth Digit - -from math import * - -digits = raw_input('Enter number of digits to round PI to: ') - -# print ('{0:.%df}' % min(20, int(digits))).format(math.pi) # nested string formatting - -# calculate pi using Machin-like Formula -print ('{0:.%df}' % min(30, int(digits))).format(4 * (4 * atan(1.0/5.0) - atan(1.0/239.0))) +# Find PI to the Nth Digit + +from math import * + +digits = raw_input('Enter number of digits to round PI to: ') + +# print ('{0:.%df}' % min(20, int(digits))).format(math.pi) # nested string formatting + +# calculate pi using Machin-like Formula +print ('{0:.%df}' % min(30, int(digits))).format(4 * (4 * atan(1.0/5.0) - atan(1.0/239.0))) diff --git a/Numbers/tile.py b/Numbers/tile.py index 6f4d7cf62..1b5b23408 100644 --- a/Numbers/tile.py +++ b/Numbers/tile.py @@ -1,11 +1,11 @@ -# Find Cost of Tile to Cover W x H Floor - Calculate -# the total cost of tile it would take to cover a floor -# plan of width and height, using a cost entered by the user. - -# Use input as the input can be integer and float -cost = input("What's the cost per sq. feet? ") -width = input("What's the width of the floor? ") -height = input("What's the height of the floor? ") - -print "The total cost is $%.2f for %.2f square feet" \ - % (width * height * cost, width * height) +# Find Cost of Tile to Cover W x H Floor - Calculate +# the total cost of tile it would take to cover a floor +# plan of width and height, using a cost entered by the user. + +# Use input as the input can be integer and float +cost = input("What's the cost per sq. feet? ") +width = input("What's the width of the floor? ") +height = input("What's the height of the floor? ") + +print "The total cost is $%.2f for %.2f square feet" \ + % (width * height * cost, width * height) diff --git a/README.md b/README.md index 8355a725a..e70871f9f 100644 --- a/README.md +++ b/README.md @@ -199,7 +199,7 @@ Web [**Get Atomic Time from Internet Clock**](https://github.com/thekarangoel/Projects/blob/master/Web/time.py) - This program will get the true atomic time from an atomic time clock on the Internet. Use any one of the atomic clocks returned by a simple Google search. -**Fetch Current Weather** - Get the current weather for a given zip/postal code. *Optional: Try locating the user automatically.* +[**Fetch Current Weather**](https://github.com/thekarangoel/GAE-weather) - Get the current weather for a given zip/postal code. *Optional: Try locating the user automatically.* **Scheduled Auto Login and Action** - Make an application which logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking web mail, posting regular content, or getting info for other applications and saving it to your computer. diff --git a/RECOGNITION/README.md b/RECOGNITION/README.md index c6b3c1aec..d79d2c85a 100644 --- a/RECOGNITION/README.md +++ b/RECOGNITION/README.md @@ -1,24 +1,24 @@ -Recognition for Projects -========================= - -### Throughout July - -Ever since this repo was created, it has been in the top list on GH. Be it the daily or weekly list! - -Projects is the #5 most forked repo on GH done in Python language! - -![](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top-languages-python-2013-07-25.png) - -### July 25 2013 - -In the monthly top list on GH. - -![Showed up on top monthly list](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-monthly-2013-07-25.png) - -### July 14 2013 - -Just 10 days after the repo was created, it showed up in the top 5 on GH. - -![](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-14.png) - +Recognition for Projects +========================= + +### Throughout July + +Ever since this repo was created, it has been in the top list on GH. Be it the daily or weekly list! + +Projects is the #5 most forked repo on GH done in Python language! + +![](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top-languages-python-2013-07-25.png) + +### July 25 2013 + +In the monthly top list on GH. + +![Showed up on top monthly list](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-monthly-2013-07-25.png) + +### July 14 2013 + +Just 10 days after the repo was created, it showed up in the top 5 on GH. + +![](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-14.png) + Check other screenshots in this repo for more GH explore page rankings following that day. \ No newline at end of file diff --git a/Text/README.md b/Text/README.md index 9cfb18abb..b2147d7bd 100644 --- a/Text/README.md +++ b/Text/README.md @@ -1,32 +1,32 @@ -Text ---------- - -**Reverse a String** - Enter a string and the program will reverse it and print it out. - -**Pig Latin** - Pig Latin is a game of alterations played on the English language game. To create the Pig Latin form of an English word the initial consonant sound is transposed to the end of the word and an ay is affixed (Ex.: "banana" would yield anana-bay). Read Wikipedia for more information on rules. - -**Count Vowels** - Enter a string and the program counts the number of vowels in the text. For added complexity have it report a sum of each vowel found. - -**Check if Palindrome** - Checks if the string entered by the user is a palindrome. That is that it reads the same forwards as backwards like “racecar” - -**Count Words in a String** - Counts the number of individual words in a string. For added complexity read these strings in from a text file and generate a summary. - -**Text Editor** - Notepad style application that can open, edit, and save text documents. *Optional: Add syntax highlighting and other features.* - -**RSS Feed Creator** - Given a link to RSS/Atom Feed, get all posts and display them. - -**Post it Notes Program** - A program where you can add text reminders and post them. *Optional: You can have the program also add popup reminders.* - -**Quote Tracker (market symbols etc)** - A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked. For CLI, show whether the stock has moved up or down. *Optional: If GUI, the program can show green up and red down arrows to show which direction the stock value has moved.* - -**Guestbook / Journal** - A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. *Optional: Deploy it on Google App Engine or Heroku or any other PaaS (if possible, of course).* - -**Fortune Teller (Horoscope)** - A program that checks your horoscope on various astrology sites and puts them together for you each day. - -**Vigenere / Vernam / Ceasar Ciphers** - Functions for encrypting and decrypting data messages. Then send them to a friend. - -**Random Gift Suggestions** - Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one. *Optional: Suggest places you can get it (link to Amazon page?).* - -**Markdown to HTML Converter** - Converts Markdown formatted text into HTML files. Implement basic tags like `p`, `strong`, `em` etc. *Optional: Implement all tags from [Markdown Syntax Docs](daringfireball.net/projects/markdown/syntax).* - +Text +--------- + +**Reverse a String** - Enter a string and the program will reverse it and print it out. + +**Pig Latin** - Pig Latin is a game of alterations played on the English language game. To create the Pig Latin form of an English word the initial consonant sound is transposed to the end of the word and an ay is affixed (Ex.: "banana" would yield anana-bay). Read Wikipedia for more information on rules. + +**Count Vowels** - Enter a string and the program counts the number of vowels in the text. For added complexity have it report a sum of each vowel found. + +**Check if Palindrome** - Checks if the string entered by the user is a palindrome. That is that it reads the same forwards as backwards like “racecar” + +**Count Words in a String** - Counts the number of individual words in a string. For added complexity read these strings in from a text file and generate a summary. + +**Text Editor** - Notepad style application that can open, edit, and save text documents. *Optional: Add syntax highlighting and other features.* + +**RSS Feed Creator** - Given a link to RSS/Atom Feed, get all posts and display them. + +**Post it Notes Program** - A program where you can add text reminders and post them. *Optional: You can have the program also add popup reminders.* + +**Quote Tracker (market symbols etc)** - A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked. For CLI, show whether the stock has moved up or down. *Optional: If GUI, the program can show green up and red down arrows to show which direction the stock value has moved.* + +**Guestbook / Journal** - A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. *Optional: Deploy it on Google App Engine or Heroku or any other PaaS (if possible, of course).* + +**Fortune Teller (Horoscope)** - A program that checks your horoscope on various astrology sites and puts them together for you each day. + +**Vigenere / Vernam / Ceasar Ciphers** - Functions for encrypting and decrypting data messages. Then send them to a friend. + +**Random Gift Suggestions** - Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one. *Optional: Suggest places you can get it (link to Amazon page?).* + +**Markdown to HTML Converter** - Converts Markdown formatted text into HTML files. Implement basic tags like `p`, `strong`, `em` etc. *Optional: Implement all tags from [Markdown Syntax Docs](daringfireball.net/projects/markdown/syntax).* + **Regex Query Tool** - A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular expression against the source text and return any matches or flag errors in the regular expression. \ No newline at end of file diff --git a/Text/count_words.py b/Text/count_words.py index 113c31f81..afe0daccc 100644 --- a/Text/count_words.py +++ b/Text/count_words.py @@ -1,26 +1,26 @@ -""" -Count Words in a String - Counts the number of individual -words in a string and display the top 5/10 most used words. -""" - -from collections import defaultdict -import operator - -if __name__ == '__main__': - text = raw_input('Enter some text: \n') - words = text.split() # very naive approach, split at space - - counts = defaultdict(int) # no need to check existence of a key - - # find count of each word - for word in words: - counts[word] += 1 - - # sort the dict by the count of each word, returns a tuple (word, count) - sorted_counts = sorted(counts.iteritems(), \ - key=operator.itemgetter(1), \ - reverse=True) - - # print top 5 words - for (word,count) in sorted_counts[:5]: # thanks @jrwren for this! - print (word, count) +""" +Count Words in a String - Counts the number of individual +words in a string and display the top 5/10 most used words. +""" + +from collections import defaultdict +import operator + +if __name__ == '__main__': + text = raw_input('Enter some text: \n') + words = text.split() # very naive approach, split at space + + counts = defaultdict(int) # no need to check existence of a key + + # find count of each word + for word in words: + counts[word] += 1 + + # sort the dict by the count of each word, returns a tuple (word, count) + sorted_counts = sorted(counts.iteritems(), \ + key=operator.itemgetter(1), \ + reverse=True) + + # print top 5 words + for (word,count) in sorted_counts[:5]: # thanks @jrwren for this! + print (word, count) diff --git a/Text/palindrome.py b/Text/palindrome.py index 43c7f4145..8e9cf3a38 100644 --- a/Text/palindrome.py +++ b/Text/palindrome.py @@ -1,12 +1,12 @@ -""" -Check if Palindrome - Checks if the string entered -by the user is a palindrome. That is that it reads -the same forwards as backwards like "racecar" -""" - -string = raw_input('Enter a string: ').lower() - -if string == string[::-1]: - print '%s is a palindrome' % string -else: - print '%s is not a palindrome' % string +""" +Check if Palindrome - Checks if the string entered +by the user is a palindrome. That is that it reads +the same forwards as backwards like "racecar" +""" + +string = raw_input('Enter a string: ').lower() + +if string == string[::-1]: + print '%s is a palindrome' % string +else: + print '%s is not a palindrome' % string diff --git a/Text/piglatin.py b/Text/piglatin.py index 07af62233..f5b09251e 100644 --- a/Text/piglatin.py +++ b/Text/piglatin.py @@ -1,22 +1,22 @@ -""" -Pig Latin - Pig Latin is a game of alterations played -on the English language game. To create the Pig Latin -form of an English word the initial consonant sound is -transposed to the end of the word and an ay is affixed -(Ex.: "banana" would yield anana-bay). Read Wikipedia -for more information on rules. -""" - -word = raw_input('What\'s your word? ').lower() -vowels = 'aeiou' - -pig = 'ay' - -first = word[0] - -if first in vowels: - new = word + pig -else: - new = word[1:] + first + pig - -print new +""" +Pig Latin - Pig Latin is a game of alterations played +on the English language game. To create the Pig Latin +form of an English word the initial consonant sound is +transposed to the end of the word and an ay is affixed +(Ex.: "banana" would yield anana-bay). Read Wikipedia +for more information on rules. +""" + +word = raw_input('What\'s your word? ').lower() +vowels = 'aeiou' + +pig = 'ay' + +first = word[0] + +if first in vowels: + new = word + pig +else: + new = word[1:] + first + pig + +print new diff --git a/Text/reverse.py b/Text/reverse.py index 5cec022c3..82d5331f1 100644 --- a/Text/reverse.py +++ b/Text/reverse.py @@ -1,8 +1,8 @@ -# -*- coding: cp1252 -*- -""" -Reverse a String - Enter a string and the program -will reverse it and print it out. -""" - -string = raw_input("Whatchu wanna say to me? ") -print "You say %s, I say %s" % (string, string[::-1]) +# -*- coding: cp1252 -*- +""" +Reverse a String - Enter a string and the program +will reverse it and print it out. +""" + +string = raw_input("Whatchu wanna say to me? ") +print "You say %s, I say %s" % (string, string[::-1]) diff --git a/Threading/README.md b/Threading/README.md index 70550fd4e..17fdcd043 100644 --- a/Threading/README.md +++ b/Threading/README.md @@ -1,6 +1,6 @@ -Threading ---------- - -**Create A Progress Bar for Downloads** - Create a progress bar for applications that can keep track of a download in progress. The progress bar will be on a separate thread and will communicate with the main thread using delegates. - +Threading +--------- + +**Create A Progress Bar for Downloads** - Create a progress bar for applications that can keep track of a download in progress. The progress bar will be on a separate thread and will communicate with the main thread using delegates. + **Bulk Thumbnail Creator** - Picture processing can take a bit of time for some transformations. Especially if the image is large. Create an image program which can take hundreds of images and converts them to a specified size in the background thread while you do other things. For added complexity, have one thread handling re-sizing, have another bulk renaming of thumbnails etc. \ No newline at end of file diff --git a/Web/README.md b/Web/README.md index 82708b573..cba41d524 100644 --- a/Web/README.md +++ b/Web/README.md @@ -1,22 +1,22 @@ -Web ---------- - -**Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. *Optional: Organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file.* - -**Web Browser with Tabs** - Create a small web browser that allows you to navigate the web and contains tabs which can be used to navigate to multiple web pages at once. For simplicity don’t worry about executing Javascript or other client side code. - -**Online White Board** - Create an application which allows you to draw pictures, write notes and use various colors to flesh out ideas for projects. *Optional: Add feature to invite friends to collaborate on a white board online.* - -**Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. Use any one of the atomic clocks returned by a simple Google search. - -**Fetch Current Weather** - Get the current weather for a given zip/postal code. *Optional: Try locating the user automatically.* - -**Scheduled Auto Login and Action** - Make an application which logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking web mail, posting regular content, or getting info for other applications and saving it to your computer. - -**E-Card Generator** - Make a site that allows people to generate their own little e-cards and send them to other people. Do not use Flash. Use a picture library and perhaps insightful mottos or quotes. - -**Content Management System** - Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small. *Optional: Allow for the addition of modules/addons.* - -**Web Board (Forum)** - Create a forum for you and your buddies to post, administer and share thoughts and ideas. - +Web +--------- + +**Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. *Optional: Organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file.* + +**Web Browser with Tabs** - Create a small web browser that allows you to navigate the web and contains tabs which can be used to navigate to multiple web pages at once. For simplicity don’t worry about executing Javascript or other client side code. + +**Online White Board** - Create an application which allows you to draw pictures, write notes and use various colors to flesh out ideas for projects. *Optional: Add feature to invite friends to collaborate on a white board online.* + +**Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. Use any one of the atomic clocks returned by a simple Google search. + +**Fetch Current Weather** - Get the current weather for a given zip/postal code. *Optional: Try locating the user automatically.* + +**Scheduled Auto Login and Action** - Make an application which logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking web mail, posting regular content, or getting info for other applications and saving it to your computer. + +**E-Card Generator** - Make a site that allows people to generate their own little e-cards and send them to other people. Do not use Flash. Use a picture library and perhaps insightful mottos or quotes. + +**Content Management System** - Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small. *Optional: Allow for the addition of modules/addons.* + +**Web Board (Forum)** - Create a forum for you and your buddies to post, administer and share thoughts and ideas. + **CAPTCHA Maker** - Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. \ No newline at end of file From 6eddc253b949be514829503510594d65bce9ab18 Mon Sep 17 00:00:00 2001 From: Santosh Kumar Date: Mon, 21 Oct 2013 18:05:43 +0530 Subject: [PATCH 071/110] Fixed the markdown Documentation link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e70871f9f..b3fe9d25e 100644 --- a/README.md +++ b/README.md @@ -139,7 +139,7 @@ Text **Random Gift Suggestions** - Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one. *Optional: Suggest places you can get it (link to Amazon page?).* -**Markdown to HTML Converter** - Converts Markdown formatted text into HTML files. Implement basic tags like `p`, `strong`, `em` etc. *Optional: Implement all tags from [Markdown Syntax Docs](daringfireball.net/projects/markdown/syntax).* +**Markdown to HTML Converter** - Converts Markdown formatted text into HTML files. Implement basic tags like `p`, `strong`, `em` etc. *Optional: Implement all tags from [Markdown Syntax Docs](http://daringfireball.net/projects/markdown/syntax).* **Regex Query Tool** - A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular expression against the source text and return any matches or flag errors in the regular expression. From 41debc368db5b4fde08c9ee5a83238535959b0f2 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 23 Oct 2013 16:26:17 -0700 Subject: [PATCH 072/110] Fix markdown docs url --- .DS_Store | Bin 0 -> 6148 bytes README-scratch.md | 2 +- Text/README.md | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 Date: Wed, 23 Oct 2013 16:28:03 -0700 Subject: [PATCH 073/110] Delete .DS_Store --- .DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 Date: Sat, 23 Nov 2013 09:15:56 -0800 Subject: [PATCH 074/110] Fix #34 --- Numbers/binary_decimal.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Numbers/binary_decimal.py b/Numbers/binary_decimal.py index 5453fb888..b6846b726 100644 --- a/Numbers/binary_decimal.py +++ b/Numbers/binary_decimal.py @@ -28,7 +28,7 @@ def decimal_to_binary(decimal): decimal /= 2 remainders.reverse() binary = "".join(remainders) - return binary + return 0 if binary == "" else binary if __name__ == '__main__': print """ From d1a0c320483d8b5c94e9457a4384db3d4d10267f Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Sat, 23 Nov 2013 20:06:18 -0800 Subject: [PATCH 075/110] Real reverse algorithm #31 --- Text/reverse.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Text/reverse.py b/Text/reverse.py index 82d5331f1..3a1296545 100644 --- a/Text/reverse.py +++ b/Text/reverse.py @@ -5,4 +5,7 @@ """ string = raw_input("Whatchu wanna say to me? ") -print "You say %s, I say %s" % (string, string[::-1]) +copy = [c for c in string] +for i in range(len(copy) / 2): + copy[i], copy[len(copy) - i - 1] = copy[len(copy) - i - 1], copy[i] +print "You say %s, I say %s" % (string, ''.join(copy)) From 97f8597da739557c37e3b46f1e9de4656702cf9a Mon Sep 17 00:00:00 2001 From: Bitdeli Chef Date: Mon, 25 Nov 2013 22:44:55 +0000 Subject: [PATCH 076/110] Add a Bitdeli badge to README --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index b3fe9d25e..d1f316043 100644 --- a/README.md +++ b/README.md @@ -272,3 +272,7 @@ Sources * [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) * [Rosetta Code](http://rosettacode.org/) + + +[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/karan/projects/trend.png)](https://bitdeli.com/free "Bitdeli Badge") + From c8d140412dc816bb31ef928b4220fa6518239b26 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Sun, 8 Dec 2013 11:56:41 -0800 Subject: [PATCH 077/110] remove .DS_Store --- .gitignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 966cf2fa9..d77b8a24e 100644 --- a/.gitignore +++ b/.gitignore @@ -36,4 +36,6 @@ nosetests.xml # Komodo .komodotools/ -*.komodoproject \ No newline at end of file +*.komodoproject + +.DS_Store \ No newline at end of file From 39a2ff6eedc45e5df634fc0613e4491530df86b5 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Sun, 8 Dec 2013 12:16:30 -0800 Subject: [PATCH 078/110] completed tax --- Numbers/tax.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 Numbers/tax.py diff --git a/Numbers/tax.py b/Numbers/tax.py new file mode 100644 index 000000000..76ccf776a --- /dev/null +++ b/Numbers/tax.py @@ -0,0 +1,15 @@ +#!/usr/bin/env python + +TAXES = { + 'WA': 9.5, + 'CA': 7.5, + 'FL': 10.8, + 'OH': 7.8 +} + +state = raw_input('What\'s your state (WA / CA / FL / OH)?: ') +cost = float(raw_input('And the cost?: ')) + +tax = TAXES[state] / 100 * cost + +print 'Cost: %.02f\nTax: %.02f\n----------\nTotal: %.02f' % (cost, tax, cost + tax) \ No newline at end of file From 85ddcdca7a93560accb1a5d761772f0a0fc64ea2 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Sun, 8 Dec 2013 12:17:36 -0800 Subject: [PATCH 079/110] Update README.md --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index d1f316043..332b92ac7 100644 --- a/README.md +++ b/README.md @@ -73,7 +73,7 @@ Numbers [**Credit Card Validator**](https://github.com/thekarangoel/Projects/blob/master/Numbers/credit_card_validator.py) - Takes in a credit card number from a common credit card vendor (Visa, MasterCard, American Express, Discoverer) and validates it to make sure that it is a valid number (look into how credit cards use a checksum). -**Tax Calculator** - Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. +[**Tax Calculator**](https://github.com/karan/Projects/blob/master/Numbers/tax.py) - Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. [**Factorial Finder**](https://github.com/thekarangoel/Projects/blob/master/Numbers/factorial.py) - The Factorial of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, ...1 and the factorial of zero, 0, is defined as being 1. Solve this using both loops and recursion. @@ -272,7 +272,7 @@ Sources * [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) * [Rosetta Code](http://rosettacode.org/) - - -[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/karan/projects/trend.png)](https://bitdeli.com/free "Bitdeli Badge") - + + +[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/karan/projects/trend.png)](https://bitdeli.com/free "Bitdeli Badge") + From be8dd11422d9632f19e0f286d4d1f1bb8ca5c550 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Tue, 17 Dec 2013 08:41:44 -0800 Subject: [PATCH 080/110] add license issue #37 --- LICENSE.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 LICENSE.md diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 000000000..378233073 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,22 @@ +The MIT License (MIT) +Copyright (c) 2013 Karan Goel + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, +merge, publish, distribute, sublicense, and/or sell copies of the +Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file From 36fd96bff7a4b895f1ddc7077e316ff98d4b4259 Mon Sep 17 00:00:00 2001 From: jintonation Date: Wed, 22 Jan 2014 09:08:46 -0700 Subject: [PATCH 081/110] Create caesar_cipher.py --- Text/caesar_cipher.py | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 Text/caesar_cipher.py diff --git a/Text/caesar_cipher.py b/Text/caesar_cipher.py new file mode 100644 index 000000000..5e2698679 --- /dev/null +++ b/Text/caesar_cipher.py @@ -0,0 +1,40 @@ +""" +Caesar Cipher - Enter the cipher number and the program will "encrypt" them with +the Caesar cipher (a.k.a. ROT #). Type the word "exit" when you're finished. +""" + +while True: + try: + cipher = int(raw_input("Enter the cipher number: ")) + break + except ValueError: + print "I need a valid integer, please." + +print "Enter the text to be encoded." +print "Enter \"exit\" to leave." + +if __name__ == '__main__': + while True: + text = raw_input("> ") + encoded = [] + + if text.lower() == "exit": + break + + for letter in text: + if letter.isalpha(): + is_upper = False + + if letter == letter.upper(): + is_upper = True + letter = letter.lower() + + value = (ord(letter) - 97 + cipher) % 26 + if is_upper: + value -= 32 + + encoded.append(chr(value + 97)) + else: + encoded.append(letter) + + print ''.join(encoded) From 156235c44064338722e90736ea97372ca82346f4 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Sat, 1 Mar 2014 12:26:35 -0800 Subject: [PATCH 082/110] donate links --- README.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 332b92ac7..8834729d3 100644 --- a/README.md +++ b/README.md @@ -23,9 +23,15 @@ You can find implementations of these projects in many other languages by other ================================ -### [Donate](https://www.gittip.com/Karan%20Goel/) +### Donations -If you love and use *Projects*, please consider [donating via gittip](https://www.gittip.com/Karan%20Goel/). Any support is appreciated! +If *Projects* has helped you in any way, and you'd like to help the developer, please consider donating. + +**- BTC: [19dLDL4ax7xRmMiGDAbkizh6WA6Yei2zP5](http://i.imgur.com/bAQgKLN.png)** + +**- Gittip: [https://www.gittip.com/karan/](https://www.gittip.com/karan/)** + +**- Flattr: [https://flattr.com/profile/thekarangoel](https://flattr.com/profile/thekarangoel)** ================================ From bca05a698ae5d218360f29f1a14da42f1c1547af Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Fri, 7 Mar 2014 21:52:40 -0800 Subject: [PATCH 083/110] add coin flip simulation project. close #40 --- Numbers/README.md | 4 +++- README-scratch.md | 2 ++ README.md | 3 +++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/Numbers/README.md b/Numbers/README.md index c6fc22db6..2253abd86 100644 --- a/Numbers/README.md +++ b/Numbers/README.md @@ -37,4 +37,6 @@ Numbers **Happy Numbers** - A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers. Display an example of your output here. Find first 8 happy numbers. -**Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* \ No newline at end of file +**Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* + +**Coin Flip Simulation** - Write some code that simulates flipping a single coin however many times the user decides. The code should record the outcomes and count the number of tails and heads. diff --git a/README-scratch.md b/README-scratch.md index bef59871d..9be6373b3 100644 --- a/README-scratch.md +++ b/README-scratch.md @@ -40,6 +40,8 @@ Numbers **Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* +**Coin Flip Simulation** - Write some code that simulates flipping a single coin however many times the user decides. The code should record the outcomes and count the number of tails and heads. + Classic Algorithms ----------------- diff --git a/README.md b/README.md index 8834729d3..36d76f79f 100644 --- a/README.md +++ b/README.md @@ -89,6 +89,8 @@ Numbers **Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* +**Coin Flip Simulation** - Write some code that simulates flipping a single coin however many times the user decides. The code should record the outcomes and count the number of tails and heads. + Classic Algorithms ----------------- @@ -278,6 +280,7 @@ Sources * [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) * [Rosetta Code](http://rosettacode.org/) +* Lots and lots of contributors. Thank you all. [![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/karan/projects/trend.png)](https://bitdeli.com/free "Bitdeli Badge") From 3b61ba35eb88045a6e0ca3faa0d3bc0ad94a24e9 Mon Sep 17 00:00:00 2001 From: Gaurav Pareek Date: Mon, 14 Apr 2014 11:56:38 +0530 Subject: [PATCH 084/110] Update alarm.py In case of Choice 1 the previous code would play alarm on wrong time. For e.g. current time is 03:40 and users sets alarm for after 150 minutes so it should play alarm on 06:10 but code would play at 5:10 itself. I have edited the code for this condition as well. --- Numbers/alarm.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Numbers/alarm.py b/Numbers/alarm.py index 24e0d9e81..2d7be3678 100644 --- a/Numbers/alarm.py +++ b/Numbers/alarm.py @@ -39,7 +39,7 @@ def play(hh, mm): cur_time = list(time.localtime()) # get the time right now hour = cur_time[3] # find the current hour minute = cur_time[4] # and the current minute - hh = (hour + hh_from_now) % 24 # cycle through the clock if hh > 24 + hh = (hour + hh_from_now+(minute+mm_from_now)/60) % 24 # cycle through the clock if hh > 24 mm = (minute + mm_from_now) % 60 # cycle through the clock if mm > 60 play(hh, mm) elif choice == 2: From 5d378c7c49ded576a9dc5f288010fe320927583c Mon Sep 17 00:00:00 2001 From: Gaurav Pareek Date: Mon, 14 Apr 2014 22:52:48 +0530 Subject: [PATCH 085/110] Update piglatin.py The existing program will give wrong output in case of glove or the letters which have more than 1 consonant at starting. I have modified it to give correct output, please let me know if i have missed any test case. --- Text/piglatin.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Text/piglatin.py b/Text/piglatin.py index f5b09251e..37313a6c2 100644 --- a/Text/piglatin.py +++ b/Text/piglatin.py @@ -12,11 +12,26 @@ pig = 'ay' +consonant = [] +count = 0 +copy = [c for c in word] + +for i in range(len(copy) - 1): + count = i + if copy[i] in vowels: + break + else: + consonant.append(copy[i]) + +new = word[count:] + "".join(consonant) + pig + +""" first = word[0] if first in vowels: new = word + pig else: new = word[1:] + first + pig +""" print new From 0e3eb440656d75f540b17db4363b87386da49a95 Mon Sep 17 00:00:00 2001 From: jbranchaud Date: Sun, 20 Apr 2014 19:49:58 -0300 Subject: [PATCH 086/110] Fixing Ceasar Cipher descriptions by changing all occurrences of 25 to 26. --- README.md | 2 +- Security/README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 36d76f79f..30a91383a 100644 --- a/README.md +++ b/README.md @@ -271,7 +271,7 @@ Graphics and Multimedia Security ------------- -**Caesar cipher** - Implement a Caesar cipher, both encoding and decoding. The key is an integer from 1 to 25. This cipher rotates the letters of the alphabet (A to Z). The encoding replaces each letter with the 1st to 25th next letter in the alphabet (wrapping Z to A). So key 2 encrypts "HI" to "JK", but key 20 encrypts "HI" to "BC". This simple "monoalphabetic substitution cipher" provides almost no security, because an attacker who has the encoded message can either use frequency analysis to guess the key, or just try all 25 keys. +**Caesar cipher** - Implement a Caesar cipher, both encoding and decoding. The key is an integer from 1 to 26. This cipher rotates the letters of the alphabet (A to Z). The encoding replaces each letter with the 1st to 26th next letter in the alphabet (wrapping Z to A). So key 2 encrypts "HI" to "JK", but key 20 encrypts "HI" to "BC". This simple "monoalphabetic substitution cipher" provides almost no security, because an attacker who has the encoded message can either use frequency analysis to guess the key, or just try all 26 keys. =============================================== diff --git a/Security/README.md b/Security/README.md index a654b76c7..3d6941ab5 100644 --- a/Security/README.md +++ b/Security/README.md @@ -1,4 +1,4 @@ Security ------------- -**Caesar cipher** - Implement a Caesar cipher, both encoding and decoding. The key is an integer from 1 to 25. This cipher rotates the letters of the alphabet (A to Z). The encoding replaces each letter with the 1st to 25th next letter in the alphabet (wrapping Z to A). So key 2 encrypts "HI" to "JK", but key 20 encrypts "HI" to "BC". This simple "monoalphabetic substitution cipher" provides almost no security, because an attacker who has the encoded message can either use frequency analysis to guess the key, or just try all 25 keys. \ No newline at end of file +**Caesar cipher** - Implement a Caesar cipher, both encoding and decoding. The key is an integer from 1 to 26. This cipher rotates the letters of the alphabet (A to Z). The encoding replaces each letter with the 1st to 26th next letter in the alphabet (wrapping Z to A). So key 2 encrypts "HI" to "JK", but key 20 encrypts "HI" to "BC". This simple "monoalphabetic substitution cipher" provides almost no security, because an attacker who has the encoded message can either use frequency analysis to guess the key, or just try all 26 keys. From 86c69ddca9db6b12c685f2334830090845789a24 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Sun, 11 May 2014 09:42:17 -0700 Subject: [PATCH 087/110] Remove bitdeli badge --- README.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/README.md b/README.md index 30a91383a..afd482ad6 100644 --- a/README.md +++ b/README.md @@ -282,6 +282,3 @@ Sources * [Rosetta Code](http://rosettacode.org/) * Lots and lots of contributors. Thank you all. - -[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/karan/projects/trend.png)](https://bitdeli.com/free "Bitdeli Badge") - From 36b52ed4673735a28a5eb6476029fa990541c878 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Tue, 13 May 2014 08:26:36 -0700 Subject: [PATCH 088/110] remove my solutions --- Classes/product_inventory.py | 80 ----------- Classic Algorithms/collatz.py | 29 ---- Numbers/alarm.py | 49 ------- Numbers/binary_decimal.py | 50 ------- Numbers/calc.py | 17 --- Numbers/change.py | 39 ------ Numbers/credit_card_validator.py | 41 ------ Numbers/distance.py | 55 -------- Numbers/factorial.py | 33 ----- Numbers/fibonacci.py | 15 -- Numbers/happy_numbers.py | 40 ------ Numbers/next_prime.py | 25 ---- Numbers/pi.py | 10 -- Numbers/prime.py | 23 --- Numbers/tax.py | 15 -- Numbers/tile.py | 11 -- Numbers/unit.py | 91 ------------ README-scratch.md | 234 ------------------------------- README.md | 100 +++++-------- Text/caesar_cipher.py | 40 ------ Text/count_vowels.py | 19 --- Text/count_words.py | 26 ---- Text/palindrome.py | 12 -- Text/piglatin.py | 37 ----- Text/reverse.py | 11 -- Text/rss.py | 29 ---- Web/page_scraper.py | 33 ----- Web/time.py | 25 ---- 28 files changed, 38 insertions(+), 1151 deletions(-) delete mode 100644 Classes/product_inventory.py delete mode 100644 Classic Algorithms/collatz.py delete mode 100644 Numbers/alarm.py delete mode 100644 Numbers/binary_decimal.py delete mode 100644 Numbers/calc.py delete mode 100644 Numbers/change.py delete mode 100644 Numbers/credit_card_validator.py delete mode 100644 Numbers/distance.py delete mode 100644 Numbers/factorial.py delete mode 100644 Numbers/fibonacci.py delete mode 100644 Numbers/happy_numbers.py delete mode 100644 Numbers/next_prime.py delete mode 100644 Numbers/pi.py delete mode 100644 Numbers/prime.py delete mode 100644 Numbers/tax.py delete mode 100644 Numbers/tile.py delete mode 100644 Numbers/unit.py delete mode 100644 README-scratch.md delete mode 100644 Text/caesar_cipher.py delete mode 100644 Text/count_vowels.py delete mode 100644 Text/count_words.py delete mode 100644 Text/palindrome.py delete mode 100644 Text/piglatin.py delete mode 100644 Text/reverse.py delete mode 100644 Text/rss.py delete mode 100644 Web/page_scraper.py delete mode 100644 Web/time.py diff --git a/Classes/product_inventory.py b/Classes/product_inventory.py deleted file mode 100644 index df1ef1afa..000000000 --- a/Classes/product_inventory.py +++ /dev/null @@ -1,80 +0,0 @@ -""" -Product Inventory Project - Create an application which manages -an inventory of products. Create a product class which has a -price, id, and quantity on hand. Then create an inventory class -which keeps track of various products and can sum up the inventory -value. -""" - -class Product: - - def __init__(self, price, pid, qty): - """ - Class constructor that needs a price, a product id, - and quantity. - """ - self.price = price - self.pid = pid - self.qty = qty - - def update_qty(self, qty, method='add'): - """ - Updates the quantity of produts. By default, adds the - passed quantity. Pass method as 'subtract' to subtract - the quantity. - """ - if method == 'add': - self.qty += qty - elif method == 'subtract': - self.qty = max(0, self.qty - qty) - - def print_product(self): - """ - Prints a single product. - """ - print '%d\t%s\t%.02f each' % (self.pid, self.qty, self.price) - -class Inventory: - - def __init__(self): - """ - Initializes the class instance. - """ - self.products = [] # list to hold all products - - def add(self, product): - """ - Adds a passed Product to the list of products. - """ - self.products.append(product) - - def print_inventory(self): - """ - Prints the current inventory, and the total value - of products. - """ - value = 0 - for product in self.products: - print '%d\t%s\t%.02f each' % (product.pid, - product.qty, - product.price) - value += (product.price * product.qty) - print '\nTotal value: %.02f' % value - -if __name__ == '__main__': - p1 = Product(1.4, 123, 5) - p2 = Product(1, 3432, 100) - p3 = Product(100.4, 2342, 99) - - - i = Inventory() - i.add(p1) - i.add(p2) - i.add(p3) - i.print_inventory() - - p1.update_qty(10) - i.print_inventory() - - p1.update_qty(10, method='subtract') - i.print_inventory() diff --git a/Classic Algorithms/collatz.py b/Classic Algorithms/collatz.py deleted file mode 100644 index 3881ea11e..000000000 --- a/Classic Algorithms/collatz.py +++ /dev/null @@ -1,29 +0,0 @@ -""" -Collatz Conjecture - Start with a number n > 1. -Find the number of steps it takes to reach one using -the following process: If n is even, divide it by 2. -If n is odd, multiply it by 3 and add 1. -""" - -def main(): - try: - n = int(raw_input('Enter a number: ')) - except ValueError: - print 'Enter only an integer value, n > 1.' - - steps = 0 - - print '\n%d' % n, - - while n > 1: - if n % 2 == 0: - n /= 2 - else: - n = (n * 3) + 1 - steps += 1 - print ' -> %d' % n, - - print '\n\n%d steps take to reach ONE.' % steps - -if __name__ == '__main__': - main() diff --git a/Numbers/alarm.py b/Numbers/alarm.py deleted file mode 100644 index 2d7be3678..000000000 --- a/Numbers/alarm.py +++ /dev/null @@ -1,49 +0,0 @@ -""" -Alarm Clock - A simple clock where it plays a sound after -X number of minutes/seconds or at a particular time. - -Dependencies: -pyglet - pip install pyglet -""" - -import time -import winsound -import pyglet - -def play(hh, mm): - not_alarmed = 1 - - while(not_alarmed): - cur_time = list(time.localtime()) # get the time right now - hour = cur_time[3] # find the hour - minute = cur_time[4] # and the minute - if hour == hh and minute == mm: - song = pyglet.media.load('bin/sound.wav') - song.play() # play the sound - pyglet.app.run() - not_alarmed = 0 # stop the loop - -if __name__ == '__main__': - - print """ - 1. Play sound after X minutes - 2. Play sound at an exact time - """ - choice = input('What do you want to do? ') - - if choice == 1: - mins = input('How many minutes from now? ') - hh_from_now = mins / 60 # if minutes > 60, this will adjust the hours - mm_from_now = mins % 60 # and then the minutes - cur_time = list(time.localtime()) # get the time right now - hour = cur_time[3] # find the current hour - minute = cur_time[4] # and the current minute - hh = (hour + hh_from_now+(minute+mm_from_now)/60) % 24 # cycle through the clock if hh > 24 - mm = (minute + mm_from_now) % 60 # cycle through the clock if mm > 60 - play(hh, mm) - elif choice == 2: - hh = input('What hour do you want to wake up (0-23)? ') - mm = input('What minute do you want to wake up (0-59)? ') - play(hh, mm) - diff --git a/Numbers/binary_decimal.py b/Numbers/binary_decimal.py deleted file mode 100644 index b6846b726..000000000 --- a/Numbers/binary_decimal.py +++ /dev/null @@ -1,50 +0,0 @@ -""" -Binary to Decimal and Back Converter -Develop a converter to convert a decimal number to binary -or a binary number to its decimal equivalent. -""" - -def binary_to_decimal(binary): - """ - Converts a binary number into a decimal number. - """ - decimal = 0 - index = 0 - while binary > 0: - last = binary % 10 - binary = binary / 10 - decimal += (last * (2 ** index)) - index += 1 - return decimal - -def decimal_to_binary(decimal): - """ - Converts a decimal number into a binary number. - """ - binary = "" - remainders = [] - while decimal > 0: - remainders.append(str(decimal % 2)) - decimal /= 2 - remainders.reverse() - binary = "".join(remainders) - return 0 if binary == "" else binary - -if __name__ == '__main__': - print """ - 1. Binary to Decimal - 2. Decimal to Binary\n - """ - - choice = input("Make a choice: ") - - if choice == 1: - binary = input("Binary to convert: ") - print "The binary number %d in decimal is %d" % \ - (binary, binary_to_decimal(binary)) - elif choice == 2: - decimal = input("Decimal to convert: ") - print "The decimal number %d in binary is %s" % \ - (decimal, decimal_to_binary(decimal)) - else: - print "Invalid choice" diff --git a/Numbers/calc.py b/Numbers/calc.py deleted file mode 100644 index e6ea5f7f2..000000000 --- a/Numbers/calc.py +++ /dev/null @@ -1,17 +0,0 @@ -""" -Calculator - A simple calculator to do basic operators. -""" - -if __name__ == '__main__': - try: - num1 = int(raw_input("Number 1: ")) - num2 = int(raw_input("Number 2: ")) - except: - print 'Invalid input' - else: - op = raw_input("Operation (+, -, /, *): ") - if op not in '+-/*': - print "Invalid operator" - else: - print "%d %s %d = %d" % \ - (num1, op, num2, eval(str(num1) + op + str(num2))) diff --git a/Numbers/change.py b/Numbers/change.py deleted file mode 100644 index 8bce7273e..000000000 --- a/Numbers/change.py +++ /dev/null @@ -1,39 +0,0 @@ -# Change Return Program - The user enters a cost and -# then the amount of money given. The program will figure -# out the change and the number of quarters, dimes, nickels, -# pennies needed for the change. - -if __name__ == '__main__': - cost = input("What's the cost in dollars? ") - given = input("What's the amount of dollars given? ") - - change = given - cost - - print "\n" - if change < 0: - print "Please ask for $%.2f more from the customer." % (-change) # double negation - else: - print "The change is $%.2f." % change - - q = 0 # 0.25 - d = 0 # 0.10 - n = 0 # 0.05 - p = 0 # 0.01 - - change = int(change * 100) # let's talk about cents - - if change >= 25: - q = int(change / 25) - change = change % 25 - if change >= 10: - d = int(change / 10) - change = change % 10 - if change >= 5: - n = int(change / 5) - change = change % 5 - if change >= 1: - p = change # rest all change is in pennies - - print "Give the following change to the customer:" - print "Quarters: %d\tDimes: %d\tNickels: %d\tPennies: %d" \ - % (q, d, n, p) diff --git a/Numbers/credit_card_validator.py b/Numbers/credit_card_validator.py deleted file mode 100644 index fb4e8fc95..000000000 --- a/Numbers/credit_card_validator.py +++ /dev/null @@ -1,41 +0,0 @@ -""" -Credit Card Validator - Takes in a credit card number from a -common credit card vendor (Visa, MasterCard, American Express, -Discoverer) and validates it to make sure that it is a valid -number (look into how credit cards use a checksum). - -This program works with *most* credit card numbers. - -Uses Luhn Algorithm (http://en.wikipedia.org/wiki/Luhn_algorithm). - -1. From the rightmost digit, which is the check digit, moving -left, double the value of every second digit; if product of this -doubling operation is greater than 9 (e.g., 7 * 2 = 14), then -sum the digits of the products (e.g., 10: 1 + 0 = 1, 14: 1 + 4 = 5). - -2. Add together doubled digits with the undoubled digits from the -original number. - -3. If the total modulo 10 is equal to 0 (if the total ends in zero) -then the number is valid according to the Luhn formula; else it is -not valid. -""" - -if __name__ == '__main__': - number = raw_input('Enter the credit card number of check: ').replace(' ', '') - #if not number.isdigit(): - # raise Exception('Invalid credit card number. Make sure it\'s all digits (with optional spaces in between).' - - digits = [int(char) for char in number] - - # double alternate digits (step 1) - doubled = [(digit * 2) if (i % 2 == 0) else digit \ - for (i, digit) in enumerate(digits)] # i <3 python - # sum digits of number > 10 (step 2) - summed = [num if num < 10 else sum([int(dig) for dig in str(num)]) \ - for num in doubled] # i <3 python ** 2 - # step 3 - if sum(summed) % 10 == 0: - print 'The number is valid' - else: - print 'The number is invalid' diff --git a/Numbers/distance.py b/Numbers/distance.py deleted file mode 100644 index 65cfc9a9b..000000000 --- a/Numbers/distance.py +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/env python - -""" -Distance Between Two Cities - Calculates the distance between -two cities and allows the user to specify a unit of distance. -This program may require finding coordinates for the cities -like latitude and longitude. - -Uses the Haversine formula -(http://www.movable-type.co.uk/scripts/latlong.html) - -Dependencies: -geopy - pip install geopy -""" - -from geopy import geocoders # to find lat/lon for the city -import math - -R = 6373 # km - -city1 = raw_input('Enter city 1: ') -city2 = raw_input('Enter city 2: ') -unit = raw_input('Enter unit of distance (Enter "K" for KM or "M" for MI): ').lower() - -if unit in 'km': - - g = geocoders.GoogleV3() - - try: - city1, (lat1, lon1) = g.geocode(city1) - city2, (lat2, lon2) = g.geocode(city2) - except: - raise Exception('Unable to locate the citites. Check the city names.') - - # convert decimal locations to radians - lat1 = math.radians(lat1) - lon1 = math.radians(lon1) - lat2 = math.radians(lat2) - lon2 = math.radians(lon2) - - # start haversne formula - dlon = lon2 - lon1 - dlat = lat2 - lat1 - a = (math.sin(dlat/2) ** 2) + math.cos(lat1) * math.cos(lat2) * \ - (math.sin(dlon/2) ** 2) - c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a)) - d = R * c - - if unit == 'k': - print 'Distance between %s and %s is %.04f km' % (city1, city2, d) - else: - print 'Distance between %s and %s is %.04f mi' % (city1, city2, d / 1.60934) -else: - print 'Invalid unit input!' diff --git a/Numbers/factorial.py b/Numbers/factorial.py deleted file mode 100644 index cd8e753fc..000000000 --- a/Numbers/factorial.py +++ /dev/null @@ -1,33 +0,0 @@ -""" -Factorial Finder - The Factorial of a positive integer, n, -is defined as the product of the sequence n, n-1, n-2, ...1 -and the factorial of zero, 0, is defined as being 1. Solve -this using both loops and recursion. -""" - -def fact_loop(n): - """ - Returns the factorial of a given positive, non-zero integer - using loops. - """ - fact = 1 - while n > 0: - fact *= n - n -= 1 - return fact - -def fact_recursion(n): - """ - Returns the factorial of a given positive, non-zero integer - using recursion. - """ - return 1 if n == 0 else n * fact_recursion(n - 1) # if user as ternary operator - -if __name__ == '__main__': - n = input('Enter a positive number: ') - - if n >= 0: - print 'Factorial of %d by loops is %d' % (n, fact_loop(n)) - print 'Factorial of %d by recursion is %d' % (n, fact_recursion(n)) - else: - print 'Not a valid number' diff --git a/Numbers/fibonacci.py b/Numbers/fibonacci.py deleted file mode 100644 index 2c239b48d..000000000 --- a/Numbers/fibonacci.py +++ /dev/null @@ -1,15 +0,0 @@ -# -*- coding: cp1252 -*- -# Fibonacci Sequence - Enter a number and have the -# program generate the Fibonacci sequence to that number -# or to the Nth number - -n = int(raw_input('How many numbers do you need? ')) -series = [1] - -while len(series) < n: - if len(series) == 1: - series.append(1) - else: - series.append(series[-1] + series[-2]) - -print series diff --git a/Numbers/happy_numbers.py b/Numbers/happy_numbers.py deleted file mode 100644 index a50f05f92..000000000 --- a/Numbers/happy_numbers.py +++ /dev/null @@ -1,40 +0,0 @@ -""" -Happy Numbers - A happy number is defined by the -following process. Starting with any positive integer, -replace the number by the sum of the squares of its -digits, and repeat the process until the number equals -1 (where it will stay), or it loops endlessly in a -cycle which does not include 1. Those numbers for which -this process ends in 1 are happy numbers, while those -that do not end in 1 are unhappy numbers. Take an input -number from user, and find first 8 happy numbers from -that input. -""" - -NUMBERS_REQUIRED = 8 # number of happy numbers required - -def is_happy_number(num): - seen = [] - while True: - sum_digits = sum(int(digit) ** 2 for digit in str(num)) - if sum_digits == 1: - return True - elif sum_digits in seen: - return False - else: - num = sum_digits - seen.append(num) - -if __name__ == '__main__': - - happies = [] # list of happy numbers found - - num = input('Start at: ') - - while len(happies) != NUMBERS_REQUIRED: - if is_happy_number(num): - happies.append(num) - num += 1 - - print happies - diff --git a/Numbers/next_prime.py b/Numbers/next_prime.py deleted file mode 100644 index 3d479bd07..000000000 --- a/Numbers/next_prime.py +++ /dev/null @@ -1,25 +0,0 @@ -# Next Prime Number - Have the program find prime -# numbers until the user chooses to stop asking for -# the next one. - -def next_prime(current): - next_prime = current + 1 # start checking for primes 1 number after the current one - i = 2 - while next_prime > i: # check with numbers up to next_prime - 1 - if next_prime % i == 0: # if number is divisible - next_prime += 1 # ready to check the next number - i = 2 # reset i to check divisibility again from 2 - else: - i += 1 # increment the divisor - return next_prime - -if __name__ == '__main__': - current_prime = 2 - while True: - response = raw_input('Do you want the next prime? (Y/N) ') - - if response.lower().startswith('y'): - print current_prime - current_prime = next_prime(current_prime) - else: - break diff --git a/Numbers/pi.py b/Numbers/pi.py deleted file mode 100644 index 027c63e50..000000000 --- a/Numbers/pi.py +++ /dev/null @@ -1,10 +0,0 @@ -# Find PI to the Nth Digit - -from math import * - -digits = raw_input('Enter number of digits to round PI to: ') - -# print ('{0:.%df}' % min(20, int(digits))).format(math.pi) # nested string formatting - -# calculate pi using Machin-like Formula -print ('{0:.%df}' % min(30, int(digits))).format(4 * (4 * atan(1.0/5.0) - atan(1.0/239.0))) diff --git a/Numbers/prime.py b/Numbers/prime.py deleted file mode 100644 index ffa1ea83c..000000000 --- a/Numbers/prime.py +++ /dev/null @@ -1,23 +0,0 @@ -# Prime Factorization - Have the user enter a number -# and find all Prime Factors (if there are any) and -# display them. - - -def is_a_prime(x): - for i in range(2, x): - if x % i == 0: - return False - return True - -# standard boilerplate -if __name__ == '__main__': - n = int(raw_input('Enter the number to find prime factors of: ')) - - factors = [] - - for i in range(2, n + 1): - while n % i == 0: # Thanks @madsulrik - if is_a_prime(i): - factors.append(i) - n /= i - print factors diff --git a/Numbers/tax.py b/Numbers/tax.py deleted file mode 100644 index 76ccf776a..000000000 --- a/Numbers/tax.py +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env python - -TAXES = { - 'WA': 9.5, - 'CA': 7.5, - 'FL': 10.8, - 'OH': 7.8 -} - -state = raw_input('What\'s your state (WA / CA / FL / OH)?: ') -cost = float(raw_input('And the cost?: ')) - -tax = TAXES[state] / 100 * cost - -print 'Cost: %.02f\nTax: %.02f\n----------\nTotal: %.02f' % (cost, tax, cost + tax) \ No newline at end of file diff --git a/Numbers/tile.py b/Numbers/tile.py deleted file mode 100644 index 1b5b23408..000000000 --- a/Numbers/tile.py +++ /dev/null @@ -1,11 +0,0 @@ -# Find Cost of Tile to Cover W x H Floor - Calculate -# the total cost of tile it would take to cover a floor -# plan of width and height, using a cost entered by the user. - -# Use input as the input can be integer and float -cost = input("What's the cost per sq. feet? ") -width = input("What's the width of the floor? ") -height = input("What's the height of the floor? ") - -print "The total cost is $%.2f for %.2f square feet" \ - % (width * height * cost, width * height) diff --git a/Numbers/unit.py b/Numbers/unit.py deleted file mode 100644 index 383044e99..000000000 --- a/Numbers/unit.py +++ /dev/null @@ -1,91 +0,0 @@ -""" -Unit Converter (temp, currency, volume, mass and more) - Converts -various units between one another. The user enters the type of unit -being entered, the type of unit they want to convert to and then -the value. The program will then make the conversion. -""" - -from __future__ import division -from urllib2 import urlopen -import json - -# 1 (std unit) = these many units -MULTIPLIERS_TO_STD = { - 'length': { - 'cm': 0.01, - 'm': 1, # std unit - 'km': 1000, - 'mi': 1609.34, - 'ft': 0.3048 - }, - 'temp': { - 'C': 1, # std unit - 'F': 33.8 - } -} - -# These many units = 1 (std unit) -MULTIPLIERS_FROM_STD = { - 'length': { - 'cm': 100, - 'm': 1, # std unit - 'km': 0.001, - 'mi': 0.000621371, - 'ft': 3.28084 - }, - 'temp': { - 'C': 1, # std unit - 'F': -17.2222 - } -} - - -def get_user_input(choice): - units = ', '.join(MULTIPLIERS_TO_STD[choice].keys()) - source_unit = raw_input('\nEnter source unit (%s): ' % units) - source_val = float(raw_input('How many %s\'s? ' % source_unit)) - convert_to = raw_input('Convert to? (%s): ' % units) - return source_unit, source_val, convert_to - -def get_currency(source_unit, source_val, convert_to): - url = 'http://rate-exchange.appspot.com/currency?from=%s&to=%s&q=%s' % ( - source_unit, convert_to, str(source_val)) - content = urlopen(url).read() - return json.loads(content)['v'] - -def main(): - print """Unit Converter - 1. Length - 2. Temperature - 3. Currency""" - - choice = int(raw_input('What do you want to convert: ')) - - if choice == 1: - source_unit, source_val, convert_to = get_user_input('length') - print '%f%s = %f%s' % (source_val, source_unit, - source_val * \ - MULTIPLIERS_TO_STD['length'][source_unit] * \ - MULTIPLIERS_FROM_STD['length'][convert_to], \ - convert_to) - elif choice == 2: - source_unit, source_val, convert_to = get_user_input('temp') - if (source_unit, convert_to) == ('F', 'C'): # F -> C - value = (source_val - 32) * (5/9) - elif (source_unit, convert_to) == ('C', 'F'): # C -> F - value = (source_val * (9/5)) + 32 - else: - value = source_val - print '%f%s = %f%s' % (source_val, source_unit, - value, convert_to) - - elif choice == 3: - source_unit = raw_input('\nEnter source currency (eg USD, INR etc): ') - source_val = float(raw_input('How many %s\'s? ' % source_unit)) - convert_to = raw_input('Convert to? (eg USD, INR etc): ') - print '%f%s = %f%s' % (source_val, source_unit, - get_currency(source_unit, source_val, convert_to), - convert_to) - -if __name__ == '__main__': - main() diff --git a/README-scratch.md b/README-scratch.md deleted file mode 100644 index 9be6373b3..000000000 --- a/README-scratch.md +++ /dev/null @@ -1,234 +0,0 @@ -Mega Project List -======== - -Numbers ---------- - -**Find PI to the Nth Digit** - Enter a number and have the program generate PI up to that many decimal places. Keep a limit to how far the program will go. - -**Fibonacci Sequence** - Enter a number and have the program generate the Fibonacci sequence to that number or to the Nth number. - -**Prime Factorization** - Have the user enter a number and find all Prime Factors (if there are any) and display them. - -**Next Prime Number** - Have the program find prime numbers until the user chooses to stop asking for the next one. - -**Find Cost of Tile to Cover W x H Floor** - Calculate the total cost of tile it would take to cover a floor plan of width and height, using a cost entered by the user. - -**Mortgage Calculator** - Calculate the monthly payments of a fixed term mortgage over given Nth terms at a given interest rate. Also figure out how long it will take the user to pay back the loan. - -**Change Return Program** - The user enters a cost and then the amount of money given. The program will figure out the change and the number of quarters, dimes, nickels, pennies needed for the change. - -**Binary to Decimal and Back Converter** - Develop a converter to convert a decimal number to binary or a binary number to its decimal equivalent. - -**Calculator** - A simple calculator to do basic operators. Make it a scientific calculator for added complexity. - -**Unit Converter (temp, currency, volume, mass and more)** - Converts various units between one another. The user enters the type of unit being entered, the type of unit they want to convert to and then the value. The program will then make the conversion. - -**Alarm Clock** - A simple clock where it plays a sound after X number of minutes/seconds or at a particular time. - -**Distance Between Two Cities** - Calculates the distance between two cities and allows the user to specify a unit of distance. This program may require finding coordinates for the cities like latitude and longitude. - -**Credit Card Validator** - Takes in a credit card number from a common credit card vendor (Visa, MasterCard, American Express, Discoverer) and validates it to make sure that it is a valid number (look into how credit cards use a checksum). - -**Tax Calculator** - Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. - -**Factorial Finder** - The Factorial of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, ...1 and the factorial of zero, 0, is defined as being 1. Solve this using both loops and recursion. - -**Complex Number Algebra** - Show addition, multiplication, negation, and inversion of complex numbers in separate functions. (Subtraction and division operations can be made with pairs of these operations.) Print the results for each operation tested. - -**Happy Numbers** - A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers. Display an example of your output here. Find first 8 happy numbers. - -**Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* - -**Coin Flip Simulation** - Write some code that simulates flipping a single coin however many times the user decides. The code should record the outcomes and count the number of tails and heads. - -Classic Algorithms ------------------ - -**Collatz Conjecture** - Start with a number *n > 1*. Find the number of steps it takes to reach one using the following process: If *n* is even, divide it by 2. If *n* is odd, multiply it by 3 and add 1. - -**Sorting** - Implement two types of sorting algorithms: Merge sort and bubble sort. - -**Closest pair problem** - The closest pair of points problem or closest pair problem is a problem of computational geometry: given *n* points in metric space, find a pair of points with the smallest distance between them. - -**Sieve of Eratosthenes** - The sieve of Eratosthenes is one of the most efficient ways to find all of the smaller primes (below 10 million or so). - - -Graph --------- -**Graph from links** - Create a program that will create a graph or network from a series of links. - -**Eulerian Path** - Create a program which will take as an input a graph and output either a Eulerian path or a Eulerian cycle, or state that it is not possible. A Eulerian Path starts at one node and traverses every edge of a graph through every node and finishes at another node. A Eulerian cycle is a eulerian Path that starts and finishes at the same node. - -**Connected Graph** - Create a program which takes a graph as an input and outputs whether every node is connected or not. - -**Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. - -Data Structures ---------- - -**Inverted index** - An [Inverted Index](http://en.wikipedia.org/wiki/Inverted_index) is a data structure used to create full text search. Given a set of text files, implement a program to create an inverted index. Also create a user interface to do a search using that inverted index which returns a list of files that contain the query term / terms. The search index can be in memory. - - -Text ---------- - -**Reverse a String** - Enter a string and the program will reverse it and print it out. - -**Pig Latin** - Pig Latin is a game of alterations played on the English language game. To create the Pig Latin form of an English word the initial consonant sound is transposed to the end of the word and an ay is affixed (Ex.: "banana" would yield anana-bay). Read Wikipedia for more information on rules. - -**Count Vowels** - Enter a string and the program counts the number of vowels in the text. For added complexity have it report a sum of each vowel found. - -**Check if Palindrome** - Checks if the string entered by the user is a palindrome. That is that it reads the same forwards as backwards like “racecar” - -**Count Words in a String** - Counts the number of individual words in a string. For added complexity read these strings in from a text file and generate a summary. - -**Text Editor** - Notepad style application that can open, edit, and save text documents. *Optional: Add syntax highlighting and other features.* - -**RSS Feed Creator** - Given a link to RSS/Atom Feed, get all posts and display them. - -**Post it Notes Program** - A program where you can add text reminders and post them. *Optional: You can have the program also add popup reminders.* - -**Quote Tracker (market symbols etc)** - A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked. For CLI, show whether the stock has moved up or down. *Optional: If GUI, the program can show green up and red down arrows to show which direction the stock value has moved.* - -**Guestbook / Journal** - A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. *Optional: Deploy it on Google App Engine or Heroku or any other PaaS (if possible, of course).* - -**Fortune Teller (Horoscope)** - A program that checks your horoscope on various astrology sites and puts them together for you each day. - -**Vigenere / Vernam / Ceasar Ciphers** - Functions for encrypting and decrypting data messages. Then send them to a friend. - -**Random Gift Suggestions** - Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one. *Optional: Suggest places you can get it (link to Amazon page?).* - -**Markdown to HTML Converter** - Converts Markdown formatted text into HTML files. Implement basic tags like `p`, `strong`, `em` etc. *Optional: Implement all tags from [Markdown Syntax Docs](http://daringfireball.net/projects/markdown/syntax).* - -**Regex Query Tool** - A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular expression against the source text and return any matches or flag errors in the regular expression. - -Networking ---------- - -**FTP Program** - A file transfer program which can transfer files back and forth from a remote web sever. - -**Bandwidth Monitor** - A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it. - -**Port Scanner** - Enter an IP address and a port range where the program will then attempt to find open ports on the given computer by connecting to each of them. On any successful connections mark the port as open. - -**Mail Checker (POP3 / IMAP)** - The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email at a given interval. - -**Country from IP Lookup** - Enter an IP address and find the country that IP is registered in. *Optional: Find the Ip automatically.* - -**Whois Search Tool** - Enter an IP or host address and have it look it up through whois and return the results to you. - -**Site Checker with Time Scheduling** - An application that attempts to connect to a website or server every so many minutes or a given time and check if it is up. If it is down, it will notify you by email or by posting a notice on screen. - -Classes ---------- - -**Product Inventory Project** - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an *inventory* class which keeps track of various products and can sum up the inventory value. - -**Airline / Hotel Reservation System** - Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. - -**Bank Account Manager** - Create a class called Account which will be an abstract class for three other classes called CheckingAccount, SavingsAccount and BusinessAccount. Manage credits and debits from these accounts through an ATM style program. - -**Patient / Doctor Scheduler** - Create a patient class and a doctor class. Have a doctor that can handle multiple patients and setup a scheduling program where a doctor can only handle 16 patients during an 8 hr work day. - -**Recipe Creator and Manager** - Create a recipe class with ingredients and a put them in a recipe manager program that organizes them into categories like deserts, main courses or by ingredients like chicken, beef, soups, pies etc. - -**Image Gallery** - Create an image abstract class and then a class that inherits from it for each image type. Put them in a program which displays them in a gallery style format for viewing. - -**Shape Area and Perimeter Classes** - Create an abstract class called Shape and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type. - -**Flower Shop Ordering To Go** - Create a flower shop application which deals in flower objects and use those flower objects in a bouquet object which can then be sold. Keep track of the number of objects and when you may need to order more. - -**Family Tree Creator** - Create a class called Person which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen. - -Threading ---------- - -**Create A Progress Bar for Downloads** - Create a progress bar for applications that can keep track of a download in progress. The progress bar will be on a separate thread and will communicate with the main thread using delegates. - -**Bulk Thumbnail Creator** - Picture processing can take a bit of time for some transformations. Especially if the image is large. Create an image program which can take hundreds of images and converts them to a specified size in the background thread while you do other things. For added complexity, have one thread handling re-sizing, have another bulk renaming of thumbnails etc. - -Web ---------- - -**Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. *Optional: Organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file.* - -**Web Browser with Tabs** - Create a small web browser that allows you to navigate the web and contains tabs which can be used to navigate to multiple web pages at once. For simplicity don’t worry about executing Javascript or other client side code. - -**Online White Board** - Create an application which allows you to draw pictures, write notes and use various colors to flesh out ideas for projects. *Optional: Add feature to invite friends to collaborate on a white board online.* - -**Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. Use any one of the atomic clocks returned by a simple Google search. - -**Fetch Current Weather** - Get the current weather for a given zip/postal code. *Optional: Try locating the user automatically.* - -**Scheduled Auto Login and Action** - Make an application which logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking web mail, posting regular content, or getting info for other applications and saving it to your computer. - -**E-Card Generator** - Make a site that allows people to generate their own little e-cards and send them to other people. Do not use Flash. Use a picture library and perhaps insightful mottos or quotes. - -**Content Management System** - Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small. *Optional: Allow for the addition of modules/addons.* - -**Web Board (Forum)** - Create a forum for you and your buddies to post, administer and share thoughts and ideas. - -**CAPTCHA Maker** - Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. - -Files ---------- - -**Quiz Maker** - Make an application which takes various questions form a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes. - -**File Explorer** - Create your own simple windows explorer program. Add feature(s) you always thought are missing from MS Windows Explorer or Mac Finder. - -**Sort Excel/CSV File Utility** - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. - -**Create Zip File Maker** - The user enters various files from different directories and the program zips them up into a zip file. *Optional: Apply actual compression to the files. Start with Huffman Algorithm.* - -**PDF Generator** - An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. *Optional: Deploy on GAE or Heroku if possible.* - -**Mp3 Tagger** - Modify and add ID3v1 tags to MP3 files. See if you can also add in the album art into the MP3 file’s header as well as other ID3v2 tags. - -**Code Snippet Manager** - Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. *Optional: For extra practice try adding syntax highlighting based on the language.* - -Databases ---------- - -**SQL Query Analyzer** - A utility application which a user can enter a query and have it run against a local database and look for ways to make it more efficient. - -**Remote SQL Tool** - A utility that can execute queries on remote servers from your local computer across the Internet. It should take in a remote host, user name and password, run the query and return the results. - -**Report Generator** - Create a utility that generates a report based on some tables in a database. Generates a sales reports based on the order/order details tables or sums up the days current database activity. - -**Event Scheduler and Calendar** - Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. *Optional: Allow the application to create re-occurrence events that reoccur every day, week, month, year etc.* - -**Budget Tracker** - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. *Optional: Allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period.* - -**Address Book** - Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database. - -**TV Show Tracker** - Got a favorite show you don’t want to miss? Don’t have a PVR or want to be able to find the show to then PVR it later? Make an application which can search various online TV Guide sites, locate the shows/times/channels and add them to a database application. The database/website then can send you email reminders that a show is about to start and which channel it will be on. - -**Travel Planner System** - Make a system that allows users to put together their own little travel itinerary and keep track of the airline / hotel arrangements, points of interest, budget and schedule. - -Graphics and Multimedia ---------- - -**Slide Show** - Make an application that shows various pictures in a slide show format. *Optional: Try adding various effects like fade in/out, star wipe and window blinds transitions.* - -**Stream Video from Online** - Try to create your own online streaming video player. - -**Mp3 Player** - A simple program for playing your favorite music files. Add features you though are missing from your favorite music player. - -**Watermarking Application** - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. *Optional: Use threading to process multiple images simultaneously.* - -**Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. Do a search online for "Turtle Graphics" for more information. *Optional: Allow the program to read in the list of commands from a file.* - -Security -------------- - -**Caesar cipher** - Implement a Caesar cipher, both encoding and decoding. The key is an integer from 1 to 25. This cipher rotates the letters of the alphabet (A to Z). The encoding replaces each letter with the 1st to 25th next letter in the alphabet (wrapping Z to A). So key 2 encrypts "HI" to "JK", but key 20 encrypts "HI" to "BC". This simple "monoalphabetic substitution cipher" provides almost no security, because an attacker who has the encoded message can either use frequency analysis to guess the key, or just try all 25 keys. - -=============================================== - -Sources -======= - -* [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) -* [Rosetta Code](http://rosettacode.org/) diff --git a/README.md b/README.md index afd482ad6..4e14db857 100644 --- a/README.md +++ b/README.md @@ -1,29 +1,21 @@ Mega Project List ======== -A list of practical projects that anyone can solve in any programming language (See [solutions](https://github.com/thekarangoel/Projects-Solutions)). These projects are divided in multiple categories, and each category has it's own folder. +A list of practical projects that anyone can solve in any programming language (See [solutions](https://github.com/thekarangoel/Projects-Solutions)). These projects are divided in multiple categories, and each category has it's own folder. + +To get started, simply fork this repo. -#### [RECOGNITION](https://github.com/thekarangoel/Projects/tree/master/RECOGNITION) +## [CONTRIBUTING](https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) -Ever since this repo was created, it has been in the top list on GH. Be it the daily or weekly list! This repo is in the top 5 on GitHub on [July 14 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-14.png). (And again on [July 22, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-22%2013_10_30.png), and again on [July 23, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-2013-07-23.png).) And on [weekly](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-weekly-2013-07-22.png) [list](https://github.com/thekarangoel/Projects/blob/master/RECOGNITION/top5-weekly-2013-07-23.png) during the week of July 2013. In the last week of July, *Projects* was in the monthly top list on GH. +See ways of [contributing](https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) to this repo. You can contribute **solutions** (will be published in this [repo](https://github.com/thekarangoel/Projects-Solutions)) to existing problems, **add new projects** or remove existing ones. Make sure you follow all instructions properly. -![July 25, 2013](https://raw.github.com/thekarangoel/Projects/master/RECOGNITION/top5-monthly-2013-07-25.png) -=============================== +## [Solutions](https://github.com/thekarangoel/Projects-Solutions) -### [CONTRIBUTING](https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) +You can find implementations of these projects in many other languages by other users in [this repo](https://github.com/thekarangoel/Projects-Solutions). -See ways of [contributing](https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) to this repo. You can contribute solutions (will be published in this [repo](https://github.com/thekarangoel/Projects-Solutions)) to existing problems, add new projects or remove existing ones. Make sure you follow all instructions properly. -================================ - -### [Solutions](https://github.com/thekarangoel/Projects-Solutions) - -You can find implementations of these projects in many other languages by other users in this [repo](https://github.com/thekarangoel/Projects-Solutions). - -================================ - -### Donations +## Donations If *Projects* has helped you in any way, and you'd like to help the developer, please consider donating. @@ -35,57 +27,42 @@ If *Projects* has helped you in any way, and you'd like to help the developer, p ================================ -Some details about this repo: - -* I will use Python to solve these. Why? Because I want to learn the language quickly. -* I have no interest in making games, so I'm excluding those from the list below. -* I'm not interested in networking, so I *might* skip all (or some) of them. -* The projects will not be made in the order posted. -* I may not be able to complete all of them. -* My method of solving them may not be the best. If you do not like my algorithm(s), please add a comment for the file/commit or open an issue, and I'll try to improve. - -I will link to each project that I complete. Some will be in this same repo, some bigger ones will have dedicated repos. - -To get started, fork this repo, delete this README and rename [*README-scratch.md*](https://github.com/thekarangoel/Projects/blob/master/README-scratch.md) to *README.md*. - -=============================== - Numbers --------- -[**Find PI to the Nth Digit**](https://github.com/thekarangoel/Projects/blob/master/Numbers/pi.py) - Enter a number and have the program generate PI up to that many decimal places. Keep a limit to how far the program will go. +**Find PI to the Nth Digit** - Enter a number and have the program generate PI up to that many decimal places. Keep a limit to how far the program will go. -[**Fibonacci Sequence**](https://github.com/thekarangoel/Projects/blob/master/Numbers/fibonacci.py) - Enter a number and have the program generate the Fibonacci sequence to that number or to the Nth number. +**Fibonacci Sequence** - Enter a number and have the program generate the Fibonacci sequence to that number or to the Nth number. -[**Prime Factorization**](https://github.com/thekarangoel/Projects/blob/master/Numbers/prime.py) - Have the user enter a number and find all Prime Factors (if there are any) and display them. +**Prime Factorization** - Have the user enter a number and find all Prime Factors (if there are any) and display them. -[**Next Prime Number**](https://github.com/thekarangoel/Projects/blob/master/Numbers/next_prime.py) - Have the program find prime numbers until the user chooses to stop asking for the next one. +**Next Prime Number** - Have the program find prime numbers until the user chooses to stop asking for the next one. -[**Find Cost of Tile to Cover W x H Floor**](https://github.com/thekarangoel/Projects/blob/master/Numbers/tile.py) - Calculate the total cost of tile it would take to cover a floor plan of width and height, using a cost entered by the user. +**Find Cost of Tile to Cover W x H Floor** - Calculate the total cost of tile it would take to cover a floor plan of width and height, using a cost entered by the user. **Mortgage Calculator** - Calculate the monthly payments of a fixed term mortgage over given Nth terms at a given interest rate. Also figure out how long it will take the user to pay back the loan. -[**Change Return Program**](https://github.com/thekarangoel/Projects/blob/master/Numbers/change.py) - The user enters a cost and then the amount of money given. The program will figure out the change and the number of quarters, dimes, nickels, pennies needed for the change. +**Change Return Program** - The user enters a cost and then the amount of money given. The program will figure out the change and the number of quarters, dimes, nickels, pennies needed for the change. -[**Binary to Decimal and Back Converter**](https://github.com/thekarangoel/Projects/blob/master/Numbers/binary_decimal.py) - Develop a converter to convert a decimal number to binary or a binary number to its decimal equivalent. +**Binary to Decimal and Back Converter** - Develop a converter to convert a decimal number to binary or a binary number to its decimal equivalent. -[**Calculator**](https://github.com/thekarangoel/Projects/blob/master/Numbers/calc.py) - A simple calculator to do basic operators. Make it a scientific calculator for added complexity. +**Calculator** - A simple calculator to do basic operators. Make it a scientific calculator for added complexity. -[**Unit Converter (temp, currency, volume, mass and more)**](https://github.com/thekarangoel/Projects/blob/master/Numbers/unit.py) - Converts various units between one another. The user enters the type of unit being entered, the type of unit they want to convert to and then the value. The program will then make the conversion. +**Unit Converter (temp, currency, volume, mass and more)** - Converts various units between one another. The user enters the type of unit being entered, the type of unit they want to convert to and then the value. The program will then make the conversion. -[**Alarm Clock**](https://github.com/thekarangoel/Projects/blob/master/Numbers/alarm.py) - A simple clock where it plays a sound after X number of minutes/seconds or at a particular time. +**Alarm Clock** - A simple clock where it plays a sound after X number of minutes/seconds or at a particular time. -[**Distance Between Two Cities**](https://github.com/thekarangoel/Projects/blob/master/Numbers/distance.py) - Calculates the distance between two cities and allows the user to specify a unit of distance. This program may require finding coordinates for the cities like latitude and longitude. +**Distance Between Two Cities** - Calculates the distance between two cities and allows the user to specify a unit of distance. This program may require finding coordinates for the cities like latitude and longitude. -[**Credit Card Validator**](https://github.com/thekarangoel/Projects/blob/master/Numbers/credit_card_validator.py) - Takes in a credit card number from a common credit card vendor (Visa, MasterCard, American Express, Discoverer) and validates it to make sure that it is a valid number (look into how credit cards use a checksum). +**Credit Card Validator** - Takes in a credit card number from a common credit card vendor (Visa, MasterCard, American Express, Discoverer) and validates it to make sure that it is a valid number (look into how credit cards use a checksum). -[**Tax Calculator**](https://github.com/karan/Projects/blob/master/Numbers/tax.py) - Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. +**Tax Calculator** - Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. -[**Factorial Finder**](https://github.com/thekarangoel/Projects/blob/master/Numbers/factorial.py) - The Factorial of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, ...1 and the factorial of zero, 0, is defined as being 1. Solve this using both loops and recursion. +**Factorial Finder** - The Factorial of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, ...1 and the factorial of zero, 0, is defined as being 1. Solve this using both loops and recursion. **Complex Number Algebra** - Show addition, multiplication, negation, and inversion of complex numbers in separate functions. (Subtraction and division operations can be made with pairs of these operations.) Print the results for each operation tested. -[**Happy Numbers**](https://github.com/thekarangoel/Projects/blob/master/Numbers/happy_numbers.py) - A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers. Take an input number from user, and find first 8 happy numbers from that input. +**Happy Numbers** - A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers. Display an example of your output here. Find first 8 happy numbers. **Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* @@ -94,7 +71,7 @@ Numbers Classic Algorithms ----------------- -[**Collatz Conjecture**](https://github.com/thekarangoel/Projects/blob/master/Classic%20Algorithms/collatz.py) - Start with a number *n > 1*. Find the number of steps it takes to reach one using the following process: If *n* is even, divide it by 2. If *n* is odd, multiply it by 3 and add 1. +**Collatz Conjecture** - Start with a number *n > 1*. Find the number of steps it takes to reach one using the following process: If *n* is even, divide it by 2. If *n* is odd, multiply it by 3 and add 1. **Sorting** - Implement two types of sorting algorithms: Merge sort and bubble sort. @@ -102,9 +79,9 @@ Classic Algorithms **Sieve of Eratosthenes** - The sieve of Eratosthenes is one of the most efficient ways to find all of the smaller primes (below 10 million or so). -Graphs ---------- +Graph +-------- **Graph from links** - Create a program that will create a graph or network from a series of links. **Eulerian Path** - Create a program which will take as an input a graph and output either a Eulerian path or a Eulerian cycle, or state that it is not possible. A Eulerian Path starts at one node and traverses every edge of a graph through every node and finishes at another node. A Eulerian cycle is a eulerian Path that starts and finishes at the same node. @@ -118,22 +95,23 @@ Data Structures **Inverted index** - An [Inverted Index](http://en.wikipedia.org/wiki/Inverted_index) is a data structure used to create full text search. Given a set of text files, implement a program to create an inverted index. Also create a user interface to do a search using that inverted index which returns a list of files that contain the query term / terms. The search index can be in memory. + Text --------- -[**Reverse a String**](https://github.com/thekarangoel/Projects/blob/master/Text/reverse.py) - Enter a string and the program will reverse it and print it out. +**Reverse a String** - Enter a string and the program will reverse it and print it out. -[**Pig Latin**](https://github.com/thekarangoel/Projects/blob/master/Text/piglatin.py) - Pig Latin is a game of alterations played on the English language game. To create the Pig Latin form of an English word the initial consonant sound is transposed to the end of the word and an ay is affixed (Ex.: "banana" would yield anana-bay). Read Wikipedia for more information on rules. +**Pig Latin** - Pig Latin is a game of alterations played on the English language game. To create the Pig Latin form of an English word the initial consonant sound is transposed to the end of the word and an ay is affixed (Ex.: "banana" would yield anana-bay). Read Wikipedia for more information on rules. -[**Count Vowels**](https://github.com/thekarangoel/Projects/blob/master/Text/count_vowels.py) - Enter a string and the program counts the number of vowels in the text. For added complexity have it report a sum of each vowel found. +**Count Vowels** - Enter a string and the program counts the number of vowels in the text. For added complexity have it report a sum of each vowel found. -[**Check if Palindrome**](https://github.com/thekarangoel/Projects/blob/master/Text/palindrome.py) - Checks if the string entered by the user is a palindrome. That is that it reads the same forwards as backwards like “racecar” +**Check if Palindrome** - Checks if the string entered by the user is a palindrome. That is that it reads the same forwards as backwards like “racecar” -[**Count Words in a String**](https://github.com/thekarangoel/Projects/blob/master/Text/count_words.py) - Counts the number of individual words in a string and display the top 5/10 most used words. +**Count Words in a String** - Counts the number of individual words in a string. For added complexity read these strings in from a text file and generate a summary. **Text Editor** - Notepad style application that can open, edit, and save text documents. *Optional: Add syntax highlighting and other features.* -[**RSS Feed Creator**](https://github.com/thekarangoel/Projects/blob/master/Text/rss.py) - Given a link to RSS/Atom Feed, get all posts and display them. +**RSS Feed Creator** - Given a link to RSS/Atom Feed, get all posts and display them. **Post it Notes Program** - A program where you can add text reminders and post them. *Optional: You can have the program also add popup reminders.* @@ -171,7 +149,7 @@ Networking Classes --------- -[**Product Inventory Project**](https://github.com/thekarangoel/Projects/blob/master/Classes/product_inventory.py) - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an *inventory* class which keeps track of various products and can sum up the inventory value. +**Product Inventory Project** - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an *inventory* class which keeps track of various products and can sum up the inventory value. **Airline / Hotel Reservation System** - Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. @@ -199,15 +177,15 @@ Threading Web --------- -[**Page Scraper**](https://github.com/thekarangoel/Projects/blob/master/Web/page_scraper.py) - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. *Optional: Organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file.* +**Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. *Optional: Organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file.* **Web Browser with Tabs** - Create a small web browser that allows you to navigate the web and contains tabs which can be used to navigate to multiple web pages at once. For simplicity don’t worry about executing Javascript or other client side code. **Online White Board** - Create an application which allows you to draw pictures, write notes and use various colors to flesh out ideas for projects. *Optional: Add feature to invite friends to collaborate on a white board online.* -[**Get Atomic Time from Internet Clock**](https://github.com/thekarangoel/Projects/blob/master/Web/time.py) - This program will get the true atomic time from an atomic time clock on the Internet. Use any one of the atomic clocks returned by a simple Google search. +**Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. Use any one of the atomic clocks returned by a simple Google search. -[**Fetch Current Weather**](https://github.com/thekarangoel/GAE-weather) - Get the current weather for a given zip/postal code. *Optional: Try locating the user automatically.* +**Fetch Current Weather** - Get the current weather for a given zip/postal code. *Optional: Try locating the user automatically.* **Scheduled Auto Login and Action** - Make an application which logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking web mail, posting regular content, or getting info for other applications and saving it to your computer. @@ -271,7 +249,7 @@ Graphics and Multimedia Security ------------- -**Caesar cipher** - Implement a Caesar cipher, both encoding and decoding. The key is an integer from 1 to 26. This cipher rotates the letters of the alphabet (A to Z). The encoding replaces each letter with the 1st to 26th next letter in the alphabet (wrapping Z to A). So key 2 encrypts "HI" to "JK", but key 20 encrypts "HI" to "BC". This simple "monoalphabetic substitution cipher" provides almost no security, because an attacker who has the encoded message can either use frequency analysis to guess the key, or just try all 26 keys. +**Caesar cipher** - Implement a Caesar cipher, both encoding and decoding. The key is an integer from 1 to 25. This cipher rotates the letters of the alphabet (A to Z). The encoding replaces each letter with the 1st to 25th next letter in the alphabet (wrapping Z to A). So key 2 encrypts "HI" to "JK", but key 20 encrypts "HI" to "BC". This simple "monoalphabetic substitution cipher" provides almost no security, because an attacker who has the encoded message can either use frequency analysis to guess the key, or just try all 25 keys. =============================================== @@ -280,5 +258,3 @@ Sources * [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) * [Rosetta Code](http://rosettacode.org/) -* Lots and lots of contributors. Thank you all. - diff --git a/Text/caesar_cipher.py b/Text/caesar_cipher.py deleted file mode 100644 index 5e2698679..000000000 --- a/Text/caesar_cipher.py +++ /dev/null @@ -1,40 +0,0 @@ -""" -Caesar Cipher - Enter the cipher number and the program will "encrypt" them with -the Caesar cipher (a.k.a. ROT #). Type the word "exit" when you're finished. -""" - -while True: - try: - cipher = int(raw_input("Enter the cipher number: ")) - break - except ValueError: - print "I need a valid integer, please." - -print "Enter the text to be encoded." -print "Enter \"exit\" to leave." - -if __name__ == '__main__': - while True: - text = raw_input("> ") - encoded = [] - - if text.lower() == "exit": - break - - for letter in text: - if letter.isalpha(): - is_upper = False - - if letter == letter.upper(): - is_upper = True - letter = letter.lower() - - value = (ord(letter) - 97 + cipher) % 26 - if is_upper: - value -= 32 - - encoded.append(chr(value + 97)) - else: - encoded.append(letter) - - print ''.join(encoded) diff --git a/Text/count_vowels.py b/Text/count_vowels.py deleted file mode 100644 index fe55626f1..000000000 --- a/Text/count_vowels.py +++ /dev/null @@ -1,19 +0,0 @@ -""" -Count Vowels - Enter a string and the program counts -the number of vowels in the text. For added complexity -have it report a sum of each vowel found. -""" - -from collections import defaultdict - -if __name__ == '__main__': - string = raw_input('Enter a string: ').lower() - - vowels = ['a', 'e', 'i', 'o', 'u'] - counts = defaultdict(int) - - for char in string: - if char in vowels: - counts[char] += 1 - - print counts.items() diff --git a/Text/count_words.py b/Text/count_words.py deleted file mode 100644 index afe0daccc..000000000 --- a/Text/count_words.py +++ /dev/null @@ -1,26 +0,0 @@ -""" -Count Words in a String - Counts the number of individual -words in a string and display the top 5/10 most used words. -""" - -from collections import defaultdict -import operator - -if __name__ == '__main__': - text = raw_input('Enter some text: \n') - words = text.split() # very naive approach, split at space - - counts = defaultdict(int) # no need to check existence of a key - - # find count of each word - for word in words: - counts[word] += 1 - - # sort the dict by the count of each word, returns a tuple (word, count) - sorted_counts = sorted(counts.iteritems(), \ - key=operator.itemgetter(1), \ - reverse=True) - - # print top 5 words - for (word,count) in sorted_counts[:5]: # thanks @jrwren for this! - print (word, count) diff --git a/Text/palindrome.py b/Text/palindrome.py deleted file mode 100644 index 8e9cf3a38..000000000 --- a/Text/palindrome.py +++ /dev/null @@ -1,12 +0,0 @@ -""" -Check if Palindrome - Checks if the string entered -by the user is a palindrome. That is that it reads -the same forwards as backwards like "racecar" -""" - -string = raw_input('Enter a string: ').lower() - -if string == string[::-1]: - print '%s is a palindrome' % string -else: - print '%s is not a palindrome' % string diff --git a/Text/piglatin.py b/Text/piglatin.py deleted file mode 100644 index 37313a6c2..000000000 --- a/Text/piglatin.py +++ /dev/null @@ -1,37 +0,0 @@ -""" -Pig Latin - Pig Latin is a game of alterations played -on the English language game. To create the Pig Latin -form of an English word the initial consonant sound is -transposed to the end of the word and an ay is affixed -(Ex.: "banana" would yield anana-bay). Read Wikipedia -for more information on rules. -""" - -word = raw_input('What\'s your word? ').lower() -vowels = 'aeiou' - -pig = 'ay' - -consonant = [] -count = 0 -copy = [c for c in word] - -for i in range(len(copy) - 1): - count = i - if copy[i] in vowels: - break - else: - consonant.append(copy[i]) - -new = word[count:] + "".join(consonant) + pig - -""" -first = word[0] - -if first in vowels: - new = word + pig -else: - new = word[1:] + first + pig -""" - -print new diff --git a/Text/reverse.py b/Text/reverse.py deleted file mode 100644 index 3a1296545..000000000 --- a/Text/reverse.py +++ /dev/null @@ -1,11 +0,0 @@ -# -*- coding: cp1252 -*- -""" -Reverse a String - Enter a string and the program -will reverse it and print it out. -""" - -string = raw_input("Whatchu wanna say to me? ") -copy = [c for c in string] -for i in range(len(copy) / 2): - copy[i], copy[len(copy) - i - 1] = copy[len(copy) - i - 1], copy[i] -print "You say %s, I say %s" % (string, ''.join(copy)) diff --git a/Text/rss.py b/Text/rss.py deleted file mode 100644 index 25f8c8f1d..000000000 --- a/Text/rss.py +++ /dev/null @@ -1,29 +0,0 @@ -""" -RSS Feed Creator - Given a link to RSS/Atom Feed, -get all posts and display them. -""" - -import re -import urllib2 - - -def main(): - """ - Takes in a Feedburned feed URL. - - Eg: http://feeds.feedburner.com/WebDesignLedger - """ - feed_url = raw_input('Enter Feedburner RSS URL: ') - content = urllib2.urlopen(feed_url).read() # get the source code of feed - - link_pattern = re.compile('(.*)') - title_pattern = re.compile('(.*)') - - links = re.findall(link_pattern, content)[1:] # skip blog url - titles = re.findall(title_pattern, content)[1:] # skip the page title - - for (link, title) in zip(links, titles): - print '{0}\n{1}\n'.format(title, link) - -if __name__ == '__main__': - main() diff --git a/Web/page_scraper.py b/Web/page_scraper.py deleted file mode 100644 index ccfd191fa..000000000 --- a/Web/page_scraper.py +++ /dev/null @@ -1,33 +0,0 @@ -# -*- coding: cp1252 -*- -""" -Page Scraper - Create an application which connects to a -site and pulls out all links, or images, and saves them to -a list. Optional: Organize the indexed content and don�t -allow duplicates. Have it put the results into an easily -searchable index file. -""" - -import urllib2 -from bs4 import BeautifulSoup - - -def print_list(stuff): - print '\n'.join(stuff) - print '\n====================\n' - -if __name__ == '__main__': - - url = raw_input('Enter a URL: ') - - choice = input('What to scrape?\n1. Links\n2. Images\n3. Both\n') - - soup = BeautifulSoup(urllib2.urlopen(url).read()) - - if choice == 1 or choice == 3: - urls = [link.get('href') for link in soup.findAll('a')] - print 'URLs:' - print_list(urls) - if choice == 2 or choice ==3: - images = [image['src'] for image in soup.findAll("img")] - print 'Images:' - print_list(images) diff --git a/Web/time.py b/Web/time.py deleted file mode 100644 index 073d75f47..000000000 --- a/Web/time.py +++ /dev/null @@ -1,25 +0,0 @@ -""" -Get Atomic Time from Internet Clock - This program will get -the true atomic time from an atomic time clock on the Internet. -Use any one of the atomic clocks returned by a simple Google search. -""" - -import re -from urllib2 import urlopen - - -def main(): - url = 'http://time.is/just' - content = urlopen(url).read() - pattern = re.compile('
(.*)(AM|PM)
') - - find_match = re.search(pattern, content) - - location_pat = re.compile('

(.*)

') - location_match = re.search(location_pat, content) - - print 'The time in %s is %s %s' % \ - (location_match.group(1), find_match.group(1), find_match.group(2)) - -if __name__ == '__main__': - main() From 76cfa898a99e4eadf9750ea11b03abf05bc66000 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Tue, 13 May 2014 08:27:44 -0700 Subject: [PATCH 089/110] update contributing instructions --- CONTRIBUTING.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 153e83ed4..19b982301 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -22,14 +22,13 @@ Please **do not send pull requests for replacing my code**. If you'd like to con - Save/Commit the README.md file. - Send a pull request for this commit ONLY - ie, the commit to the [solutions repo](https://github.com/thekarangoel/Projects-Solutions)! - -===================================== + ## Projects If you have suggestions for adding or removing projects, feel free to [open an issue](https://github.com/thekarangoel/Projects/issues/new) to discuss it, or directly create a pull request after you edit the *README.md* file with necessary changes. If you add a problem, make sure you add it in the correct category. -It is required that any changes made to the projects (this does not include adding solutions) in *README.md*, must be reflected in *README-scratch.md*, in *README.md* file in the relevant category folder, and in the [Solutions *README.md* file](https://github.com/thekarangoel/Projects-Solutions/blob/master/README.md) +It is required that any changes made to the projects (this does not include adding solutions) in *README.md*, must be reflected in *README.md* file in the relevant **category folder**, and in the [Solutions *README.md* file](https://github.com/thekarangoel/Projects-Solutions/blob/master/README.md) If you're copying a project from some other webpage, you **MUST** link to it in the *Sources* section at the bottom of repo's *README.md* and *README-scratch.md*. From 219abb0540a1d472488320696725583e473e1951 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 11 Jun 2014 07:06:31 -0700 Subject: [PATCH 090/110] remove btc as a way of donation --- README.md | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 4e14db857..738dcf17a 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ Mega Project List ======== -A list of practical projects that anyone can solve in any programming language (See [solutions](https://github.com/thekarangoel/Projects-Solutions)). These projects are divided in multiple categories, and each category has it's own folder. - +A list of practical projects that anyone can solve in any programming language (See [solutions](https://github.com/thekarangoel/Projects-Solutions)). These projects are divided in multiple categories, and each category has it's own folder. + To get started, simply fork this repo. ## [CONTRIBUTING](https://github.com/thekarangoel/Projects/blob/master/CONTRIBUTING.md) @@ -14,13 +14,10 @@ See ways of [contributing](https://github.com/thekarangoel/Projects/blob/master/ You can find implementations of these projects in many other languages by other users in [this repo](https://github.com/thekarangoel/Projects-Solutions). - ## Donations If *Projects* has helped you in any way, and you'd like to help the developer, please consider donating. -**- BTC: [19dLDL4ax7xRmMiGDAbkizh6WA6Yei2zP5](http://i.imgur.com/bAQgKLN.png)** - **- Gittip: [https://www.gittip.com/karan/](https://www.gittip.com/karan/)** **- Flattr: [https://flattr.com/profile/thekarangoel](https://flattr.com/profile/thekarangoel)** From 3d804d724969a803b3fb62df6c53d40ef6327543 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 11 Jun 2014 07:07:10 -0700 Subject: [PATCH 091/110] remove folders to simply structure --- Classes/README.md | 20 --------------- Classic Algorithms/README.md | 10 -------- Data Structures/README.md | 4 --- Databases/README.md | 18 ------------- Files/README.md | 16 ------------ Graphics and Multimedia/README.md | 12 --------- Graphs/README.md | 10 -------- Networking/README.md | 16 ------------ Numbers/README.md | 42 ------------------------------- Security/README.md | 4 --- Text/README.md | 32 ----------------------- Threading/README.md | 6 ----- Web/README.md | 22 ---------------- 13 files changed, 212 deletions(-) delete mode 100644 Classes/README.md delete mode 100644 Classic Algorithms/README.md delete mode 100644 Data Structures/README.md delete mode 100644 Databases/README.md delete mode 100644 Files/README.md delete mode 100644 Graphics and Multimedia/README.md delete mode 100644 Graphs/README.md delete mode 100644 Networking/README.md delete mode 100644 Numbers/README.md delete mode 100644 Security/README.md delete mode 100644 Text/README.md delete mode 100644 Threading/README.md delete mode 100644 Web/README.md diff --git a/Classes/README.md b/Classes/README.md deleted file mode 100644 index 1e45760a8..000000000 --- a/Classes/README.md +++ /dev/null @@ -1,20 +0,0 @@ -Classes ---------- - -**Product Inventory Project** - Create an application which manages an inventory of products. Create a product class which has a price, id, and quantity on hand. Then create an *inventory* class which keeps track of various products and can sum up the inventory value. - -**Airline / Hotel Reservation System** - Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. - -**Bank Account Manager** - Create a class called Account which will be an abstract class for three other classes called CheckingAccount, SavingsAccount and BusinessAccount. Manage credits and debits from these accounts through an ATM style program. - -**Patient / Doctor Scheduler** - Create a patient class and a doctor class. Have a doctor that can handle multiple patients and setup a scheduling program where a doctor can only handle 16 patients during an 8 hr work day. - -**Recipe Creator and Manager** - Create a recipe class with ingredients and a put them in a recipe manager program that organizes them into categories like deserts, main courses or by ingredients like chicken, beef, soups, pies etc. - -**Image Gallery** - Create an image abstract class and then a class that inherits from it for each image type. Put them in a program which displays them in a gallery style format for viewing. - -**Shape Area and Perimeter Classes** - Create an abstract class called Shape and then inherit from it other shapes like diamond, rectangle, circle, triangle etc. Then have each class override the area and perimeter functionality to handle each shape type. - -**Flower Shop Ordering To Go** - Create a flower shop application which deals in flower objects and use those flower objects in a bouquet object which can then be sold. Keep track of the number of objects and when you may need to order more. - -**Family Tree Creator** - Create a class called Person which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen. \ No newline at end of file diff --git a/Classic Algorithms/README.md b/Classic Algorithms/README.md deleted file mode 100644 index bd88e10d6..000000000 --- a/Classic Algorithms/README.md +++ /dev/null @@ -1,10 +0,0 @@ -Classic Algorithms ------------------ - -**Collatz Conjecture** - Start with a number *n > 1*. Find the number of steps it takes to reach one using the following process: If *n* is even, divide it by 2. If *n* is odd, multiply it by 3 and add 1. - -**Sorting** - Implement two types of sorting algorithms: Merge sort and bubble sort. - -**Closest pair problem** - The closest pair of points problem or closest pair problem is a problem of computational geometry: given *n* points in metric space, find a pair of points with the smallest distance between them. - -**Sieve of Eratosthenes** - The sieve of Eratosthenes is one of the most efficient ways to find all of the smaller primes (below 10 million or so). diff --git a/Data Structures/README.md b/Data Structures/README.md deleted file mode 100644 index ec861fe6a..000000000 --- a/Data Structures/README.md +++ /dev/null @@ -1,4 +0,0 @@ -Data Structures ---------- - -**Inverted index** - An [Inverted Index](http://en.wikipedia.org/wiki/Inverted_index) is a data structure used to create full text search. Given a set of text files, implement a program to create an inverted index. Also create a user interface to do a search using that inverted index which returns a list of files that contain the query term / terms. The search index can be in memory. \ No newline at end of file diff --git a/Databases/README.md b/Databases/README.md deleted file mode 100644 index 48fe04a91..000000000 --- a/Databases/README.md +++ /dev/null @@ -1,18 +0,0 @@ -Databases ---------- - -**SQL Query Analyzer** - A utility application which a user can enter a query and have it run against a local database and look for ways to make it more efficient. - -**Remote SQL Tool** - A utility that can execute queries on remote servers from your local computer across the Internet. It should take in a remote host, user name and password, run the query and return the results. - -**Report Generator** - Create a utility that generates a report based on some tables in a database. Generates a sales reports based on the order/order details tables or sums up the days current database activity. - -**Event Scheduler and Calendar** - Make an application which allows the user to enter a date and time of an event, event notes and then schedule those events on a calendar. The user can then browse the calendar or search the calendar for specific events. *Optional: Allow the application to create re-occurrence events that reoccur every day, week, month, year etc.* - -**Budget Tracker** - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. *Optional: Allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period.* - -**Address Book** - Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database. - -**TV Show Tracker** - Got a favorite show you don’t want to miss? Don’t have a PVR or want to be able to find the show to then PVR it later? Make an application which can search various online TV Guide sites, locate the shows/times/channels and add them to a database application. The database/website then can send you email reminders that a show is about to start and which channel it will be on. - -**Travel Planner System** - Make a system that allows users to put together their own little travel itinerary and keep track of the airline / hotel arrangements, points of interest, budget and schedule. \ No newline at end of file diff --git a/Files/README.md b/Files/README.md deleted file mode 100644 index b564c730b..000000000 --- a/Files/README.md +++ /dev/null @@ -1,16 +0,0 @@ -Files ---------- - -**Quiz Maker** - Make an application which takes various questions form a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes. - -**File Explorer** - Create your own simple windows explorer program. Add feature(s) you always thought are missing from MS Windows Explorer or Mac Finder. - -**Sort Excel/CSV File Utility** - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. - -**Create Zip File Maker** - The user enters various files from different directories and the program zips them up into a zip file. *Optional: Apply actual compression to the files. Start with Huffman Algorithm.* - -**PDF Generator** - An application which can read in a text file, html file or some other file and generates a PDF file out of it. Great for a web based service where the user uploads the file and the program returns a PDF of the file. *Optional: Deploy on GAE or Heroku if possible.* - -**Mp3 Tagger** - Modify and add ID3v1 tags to MP3 files. See if you can also add in the album art into the MP3 file’s header as well as other ID3v2 tags. - -**Code Snippet Manager** - Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. *Optional: For extra practice try adding syntax highlighting based on the language.* \ No newline at end of file diff --git a/Graphics and Multimedia/README.md b/Graphics and Multimedia/README.md deleted file mode 100644 index f104dac4c..000000000 --- a/Graphics and Multimedia/README.md +++ /dev/null @@ -1,12 +0,0 @@ -Graphics and Multimedia ---------- - -**Slide Show** - Make an application that shows various pictures in a slide show format. *Optional: Try adding various effects like fade in/out, star wipe and window blinds transitions.* - -**Stream Video from Online** - Try to create your own online streaming video player. - -**Mp3 Player** - A simple program for playing your favorite music files. Add features you though are missing from your favorite music player. - -**Watermarking Application** - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. *Optional: Use threading to process multiple images simultaneously.* - -**Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. Do a search online for "Turtle Graphics" for more information. *Optional: Allow the program to read in the list of commands from a file.* \ No newline at end of file diff --git a/Graphs/README.md b/Graphs/README.md deleted file mode 100644 index 759d41453..000000000 --- a/Graphs/README.md +++ /dev/null @@ -1,10 +0,0 @@ -Graphs ------- - -**Graph from links** - Create a program that will create a graph or network from a series of links. - -**Eulerian Path** - Create a program which will take as an input a graph and output either a Eulerian path or a Eulerian cycle, or state that it is not possible. A Eulerian Path starts at one node and traverses every edge of a graph through every node and finishes at another node. A Eulerian cycle is a eulerian Path that starts and finishes at the same node. - -**Connected Graph** - Create a program which takes a graph as an input and outputs whether every node is connected or not. - -**Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. diff --git a/Networking/README.md b/Networking/README.md deleted file mode 100644 index 81565e25e..000000000 --- a/Networking/README.md +++ /dev/null @@ -1,16 +0,0 @@ -Networking ---------- - -**FTP Program** - A file transfer program which can transfer files back and forth from a remote web sever. - -**Bandwidth Monitor** - A small utility program that tracks how much data you have uploaded and downloaded from the net during the course of your current online session. See if you can find out what periods of the day you use more and less and generate a report or graph that shows it. - -**Port Scanner** - Enter an IP address and a port range where the program will then attempt to find open ports on the given computer by connecting to each of them. On any successful connections mark the port as open. - -**Mail Checker (POP3 / IMAP)** - The user enters various account information include web server and IP, protocol type (POP3 or IMAP) and the application will check for email at a given interval. - -**Country from IP Lookup** - Enter an IP address and find the country that IP is registered in. *Optional: Find the Ip automatically.* - -**Whois Search Tool** - Enter an IP or host address and have it look it up through whois and return the results to you. - -**Site Checker with Time Scheduling** - An application that attempts to connect to a website or server every so many minutes or a given time and check if it is up. If it is down, it will notify you by email or by posting a notice on screen. \ No newline at end of file diff --git a/Numbers/README.md b/Numbers/README.md deleted file mode 100644 index 2253abd86..000000000 --- a/Numbers/README.md +++ /dev/null @@ -1,42 +0,0 @@ -Numbers ---------- - -**Find PI to the Nth Digit** - Enter a number and have the program generate PI up to that many decimal places. Keep a limit to how far the program will go. - -**Fibonacci Sequence** - Enter a number and have the program generate the Fibonacci sequence to that number or to the Nth number. - -**Prime Factorization** - Have the user enter a number and find all Prime Factors (if there are any) and display them. - -**Next Prime Number** - Have the program find prime numbers until the user chooses to stop asking for the next one. - -**Find Cost of Tile to Cover W x H Floor** - Calculate the total cost of tile it would take to cover a floor plan of width and height, using a cost entered by the user. - -**Mortgage Calculator** - Calculate the monthly payments of a fixed term mortgage over given Nth terms at a given interest rate. Also figure out how long it will take the user to pay back the loan. - -**Change Return Program** - The user enters a cost and then the amount of money given. The program will figure out the change and the number of quarters, dimes, nickels, pennies needed for the change. - -**Binary to Decimal and Back Converter** - Develop a converter to convert a decimal number to binary or a binary number to its decimal equivalent. - -**Calculator** - A simple calculator to do basic operators. Make it a scientific calculator for added complexity. - -**Unit Converter (temp, currency, volume, mass and more)** - Converts various units between one another. The user enters the type of unit being entered, the type of unit they want to convert to and then the value. The program will then make the conversion. - -**Alarm Clock** - A simple clock where it plays a sound after X number of minutes/seconds or at a particular time. - -**Distance Between Two Cities** - Calculates the distance between two cities and allows the user to specify a unit of distance. This program may require finding coordinates for the cities like latitude and longitude. - -**Credit Card Validator** - Takes in a credit card number from a common credit card vendor (Visa, MasterCard, American Express, Discoverer) and validates it to make sure that it is a valid number (look into how credit cards use a checksum). - -**Tax Calculator** - Asks the user to enter a cost and either a country or state tax. It then returns the tax plus the total cost with tax. - -**Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. - -**Factorial Finder** - The Factorial of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, ...1 and the factorial of zero, 0, is defined as being 1. Solve this using both loops and recursion. - -**Complex Number Algebra** - Show addition, multiplication, negation, and inversion of complex numbers in separate functions. (Subtraction and division operations can be made with pairs of these operations.) Print the results for each operation tested. - -**Happy Numbers** - A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers. Display an example of your output here. Find first 8 happy numbers. - -**Number Names** - Show how to spell out a number in English. You can use a preexisting implementation or roll your own, but you should support inputs up to at least one million (or the maximum value of your language's default bounded integer type, if that's less). *Optional: Support for inputs other than positive integers (like zero, negative integers, and floating-point numbers).* - -**Coin Flip Simulation** - Write some code that simulates flipping a single coin however many times the user decides. The code should record the outcomes and count the number of tails and heads. diff --git a/Security/README.md b/Security/README.md deleted file mode 100644 index 3d6941ab5..000000000 --- a/Security/README.md +++ /dev/null @@ -1,4 +0,0 @@ -Security -------------- - -**Caesar cipher** - Implement a Caesar cipher, both encoding and decoding. The key is an integer from 1 to 26. This cipher rotates the letters of the alphabet (A to Z). The encoding replaces each letter with the 1st to 26th next letter in the alphabet (wrapping Z to A). So key 2 encrypts "HI" to "JK", but key 20 encrypts "HI" to "BC". This simple "monoalphabetic substitution cipher" provides almost no security, because an attacker who has the encoded message can either use frequency analysis to guess the key, or just try all 26 keys. diff --git a/Text/README.md b/Text/README.md deleted file mode 100644 index 48916ccae..000000000 --- a/Text/README.md +++ /dev/null @@ -1,32 +0,0 @@ -Text ---------- - -**Reverse a String** - Enter a string and the program will reverse it and print it out. - -**Pig Latin** - Pig Latin is a game of alterations played on the English language game. To create the Pig Latin form of an English word the initial consonant sound is transposed to the end of the word and an ay is affixed (Ex.: "banana" would yield anana-bay). Read Wikipedia for more information on rules. - -**Count Vowels** - Enter a string and the program counts the number of vowels in the text. For added complexity have it report a sum of each vowel found. - -**Check if Palindrome** - Checks if the string entered by the user is a palindrome. That is that it reads the same forwards as backwards like “racecar” - -**Count Words in a String** - Counts the number of individual words in a string. For added complexity read these strings in from a text file and generate a summary. - -**Text Editor** - Notepad style application that can open, edit, and save text documents. *Optional: Add syntax highlighting and other features.* - -**RSS Feed Creator** - Given a link to RSS/Atom Feed, get all posts and display them. - -**Post it Notes Program** - A program where you can add text reminders and post them. *Optional: You can have the program also add popup reminders.* - -**Quote Tracker (market symbols etc)** - A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked. For CLI, show whether the stock has moved up or down. *Optional: If GUI, the program can show green up and red down arrows to show which direction the stock value has moved.* - -**Guestbook / Journal** - A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. *Optional: Deploy it on Google App Engine or Heroku or any other PaaS (if possible, of course).* - -**Fortune Teller (Horoscope)** - A program that checks your horoscope on various astrology sites and puts them together for you each day. - -**Vigenere / Vernam / Ceasar Ciphers** - Functions for encrypting and decrypting data messages. Then send them to a friend. - -**Random Gift Suggestions** - Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one. *Optional: Suggest places you can get it (link to Amazon page?).* - -**Markdown to HTML Converter** - Converts Markdown formatted text into HTML files. Implement basic tags like `p`, `strong`, `em` etc. *Optional: Implement all tags from [Markdown Syntax Docs](http://daringfireball.net/projects/markdown/syntax).* - -**Regex Query Tool** - A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular expression against the source text and return any matches or flag errors in the regular expression. \ No newline at end of file diff --git a/Threading/README.md b/Threading/README.md deleted file mode 100644 index 17fdcd043..000000000 --- a/Threading/README.md +++ /dev/null @@ -1,6 +0,0 @@ -Threading ---------- - -**Create A Progress Bar for Downloads** - Create a progress bar for applications that can keep track of a download in progress. The progress bar will be on a separate thread and will communicate with the main thread using delegates. - -**Bulk Thumbnail Creator** - Picture processing can take a bit of time for some transformations. Especially if the image is large. Create an image program which can take hundreds of images and converts them to a specified size in the background thread while you do other things. For added complexity, have one thread handling re-sizing, have another bulk renaming of thumbnails etc. \ No newline at end of file diff --git a/Web/README.md b/Web/README.md deleted file mode 100644 index cba41d524..000000000 --- a/Web/README.md +++ /dev/null @@ -1,22 +0,0 @@ -Web ---------- - -**Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. *Optional: Organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file.* - -**Web Browser with Tabs** - Create a small web browser that allows you to navigate the web and contains tabs which can be used to navigate to multiple web pages at once. For simplicity don’t worry about executing Javascript or other client side code. - -**Online White Board** - Create an application which allows you to draw pictures, write notes and use various colors to flesh out ideas for projects. *Optional: Add feature to invite friends to collaborate on a white board online.* - -**Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. Use any one of the atomic clocks returned by a simple Google search. - -**Fetch Current Weather** - Get the current weather for a given zip/postal code. *Optional: Try locating the user automatically.* - -**Scheduled Auto Login and Action** - Make an application which logs into a given site on a schedule and invokes a certain action and then logs out. This can be useful for checking web mail, posting regular content, or getting info for other applications and saving it to your computer. - -**E-Card Generator** - Make a site that allows people to generate their own little e-cards and send them to other people. Do not use Flash. Use a picture library and perhaps insightful mottos or quotes. - -**Content Management System** - Create a content management system (CMS) like Joomla, Drupal, PHP Nuke etc. Start small. *Optional: Allow for the addition of modules/addons.* - -**Web Board (Forum)** - Create a forum for you and your buddies to post, administer and share thoughts and ideas. - -**CAPTCHA Maker** - Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. \ No newline at end of file From 7a098a3d9cb4f59e712e07c953d633d24c84ee41 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 11 Jun 2014 07:08:06 -0700 Subject: [PATCH 092/110] update steps for contributing --- CONTRIBUTING.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 19b982301..482a7924a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -22,14 +22,12 @@ Please **do not send pull requests for replacing my code**. If you'd like to con - Save/Commit the README.md file. - Send a pull request for this commit ONLY - ie, the commit to the [solutions repo](https://github.com/thekarangoel/Projects-Solutions)! - + ## Projects If you have suggestions for adding or removing projects, feel free to [open an issue](https://github.com/thekarangoel/Projects/issues/new) to discuss it, or directly create a pull request after you edit the *README.md* file with necessary changes. If you add a problem, make sure you add it in the correct category. -It is required that any changes made to the projects (this does not include adding solutions) in *README.md*, must be reflected in *README.md* file in the relevant **category folder**, and in the [Solutions *README.md* file](https://github.com/thekarangoel/Projects-Solutions/blob/master/README.md) +It is required that any changes made to the projects (this does not include adding solutions) in *README.md*, must be reflected in the [Solutions *README.md* file](https://github.com/thekarangoel/Projects-Solutions/blob/master/README.md) If you're copying a project from some other webpage, you **MUST** link to it in the *Sources* section at the bottom of repo's *README.md* and *README-scratch.md*. - -If you skip any step(s), I will not merge the changes! From 1aa5440698ed1ab99319b6717cf74a83b95e82ba Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 11 Jun 2014 07:13:36 -0700 Subject: [PATCH 093/110] remove absurdly hard projects, move sources to separate file --- README.md | 32 +++++++++++--------------------- sources.md | 5 +++++ 2 files changed, 16 insertions(+), 21 deletions(-) create mode 100644 sources.md diff --git a/README.md b/README.md index 738dcf17a..31f9f4eb5 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,7 @@ Numbers **Coin Flip Simulation** - Write some code that simulates flipping a single coin however many times the user decides. The code should record the outcomes and count the number of tails and heads. + Classic Algorithms ----------------- @@ -79,6 +80,7 @@ Classic Algorithms Graph -------- + **Graph from links** - Create a program that will create a graph or network from a series of links. **Eulerian Path** - Create a program which will take as an input a graph and output either a Eulerian path or a Eulerian cycle, or state that it is not possible. A Eulerian Path starts at one node and traverses every edge of a graph through every node and finishes at another node. A Eulerian cycle is a eulerian Path that starts and finishes at the same node. @@ -87,6 +89,7 @@ Graph **Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. + Data Structures --------- @@ -110,22 +113,15 @@ Text **RSS Feed Creator** - Given a link to RSS/Atom Feed, get all posts and display them. -**Post it Notes Program** - A program where you can add text reminders and post them. *Optional: You can have the program also add popup reminders.* - **Quote Tracker (market symbols etc)** - A program which can go out and check the current value of stocks for a list of symbols entered by the user. The user can set how often the stocks are checked. For CLI, show whether the stock has moved up or down. *Optional: If GUI, the program can show green up and red down arrows to show which direction the stock value has moved.* **Guestbook / Journal** - A simple application that allows people to add comments or write journal entries. It can allow comments or not and timestamps for all entries. Could also be made into a shout box. *Optional: Deploy it on Google App Engine or Heroku or any other PaaS (if possible, of course).* -**Fortune Teller (Horoscope)** - A program that checks your horoscope on various astrology sites and puts them together for you each day. - **Vigenere / Vernam / Ceasar Ciphers** - Functions for encrypting and decrypting data messages. Then send them to a friend. -**Random Gift Suggestions** - Enter various gifts for certain people when you think of them. When its time to give them a gift (xmas, birthday, anniversary) it will randomly pick one. *Optional: Suggest places you can get it (link to Amazon page?).* - -**Markdown to HTML Converter** - Converts Markdown formatted text into HTML files. Implement basic tags like `p`, `strong`, `em` etc. *Optional: Implement all tags from [Markdown Syntax Docs](http://daringfireball.net/projects/markdown/syntax).* - **Regex Query Tool** - A tool that allows the user to enter a text string and then in a separate control enter a regex pattern. It will run the regular expression against the source text and return any matches or flag errors in the regular expression. + Networking --------- @@ -143,6 +139,7 @@ Networking **Site Checker with Time Scheduling** - An application that attempts to connect to a website or server every so many minutes or a given time and check if it is up. If it is down, it will notify you by email or by posting a notice on screen. + Classes --------- @@ -164,6 +161,7 @@ Classes **Family Tree Creator** - Create a class called Person which will have a name, when they were born and when (and if) they died. Allow the user to create these Person classes and put them into a family tree structure. Print out the tree to the screen. + Threading --------- @@ -171,13 +169,12 @@ Threading **Bulk Thumbnail Creator** - Picture processing can take a bit of time for some transformations. Especially if the image is large. Create an image program which can take hundreds of images and converts them to a specified size in the background thread while you do other things. For added complexity, have one thread handling re-sizing, have another bulk renaming of thumbnails etc. + Web --------- **Page Scraper** - Create an application which connects to a site and pulls out all links, or images, and saves them to a list. *Optional: Organize the indexed content and don’t allow duplicates. Have it put the results into an easily searchable index file.* -**Web Browser with Tabs** - Create a small web browser that allows you to navigate the web and contains tabs which can be used to navigate to multiple web pages at once. For simplicity don’t worry about executing Javascript or other client side code. - **Online White Board** - Create an application which allows you to draw pictures, write notes and use various colors to flesh out ideas for projects. *Optional: Add feature to invite friends to collaborate on a white board online.* **Get Atomic Time from Internet Clock** - This program will get the true atomic time from an atomic time clock on the Internet. Use any one of the atomic clocks returned by a simple Google search. @@ -194,13 +191,12 @@ Web **CAPTCHA Maker** - Ever see those images with letters a numbers when you signup for a service and then asks you to enter what you see? It keeps web bots from automatically signing up and spamming. Try creating one yourself for online forms. + Files --------- **Quiz Maker** - Make an application which takes various questions form a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes. -**File Explorer** - Create your own simple windows explorer program. Add feature(s) you always thought are missing from MS Windows Explorer or Mac Finder. - **Sort Excel/CSV File Utility** - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. **Create Zip File Maker** - The user enters various files from different directories and the program zips them up into a zip file. *Optional: Apply actual compression to the files. Start with Huffman Algorithm.* @@ -211,6 +207,7 @@ Files **Code Snippet Manager** - Another utility program that allows coders to put in functions, classes or other tidbits to save for use later. Organized by the type of snippet or language the coder can quickly look up code. *Optional: For extra practice try adding syntax highlighting based on the language.* + Databases --------- @@ -224,12 +221,11 @@ Databases **Budget Tracker** - Write an application that keeps track of a household’s budget. The user can add expenses, income, and recurring costs to find out how much they are saving or losing over a period of time. *Optional: Allow the user to specify a date range and see the net flow of money in and out of the house budget for that time period.* -**Address Book** - Keep track of various contacts, their numbers, emails and little notes about them like a Rolodex in the database. - **TV Show Tracker** - Got a favorite show you don’t want to miss? Don’t have a PVR or want to be able to find the show to then PVR it later? Make an application which can search various online TV Guide sites, locate the shows/times/channels and add them to a database application. The database/website then can send you email reminders that a show is about to start and which channel it will be on. **Travel Planner System** - Make a system that allows users to put together their own little travel itinerary and keep track of the airline / hotel arrangements, points of interest, budget and schedule. + Graphics and Multimedia --------- @@ -243,15 +239,9 @@ Graphics and Multimedia **Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. Do a search online for "Turtle Graphics" for more information. *Optional: Allow the program to read in the list of commands from a file.* + Security ------------- **Caesar cipher** - Implement a Caesar cipher, both encoding and decoding. The key is an integer from 1 to 25. This cipher rotates the letters of the alphabet (A to Z). The encoding replaces each letter with the 1st to 25th next letter in the alphabet (wrapping Z to A). So key 2 encrypts "HI" to "JK", but key 20 encrypts "HI" to "BC". This simple "monoalphabetic substitution cipher" provides almost no security, because an attacker who has the encoded message can either use frequency analysis to guess the key, or just try all 25 keys. -=============================================== - -Sources -======= - -* [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) -* [Rosetta Code](http://rosettacode.org/) diff --git a/sources.md b/sources.md new file mode 100644 index 000000000..efb517dca --- /dev/null +++ b/sources.md @@ -0,0 +1,5 @@ +Sources +======= + +* [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) +* [Rosetta Code](http://rosettacode.org/) From 15222e9acc59ff5059800b8b54f618d96dc4cd05 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Thu, 12 Jun 2014 15:25:46 -0700 Subject: [PATCH 094/110] move sources back to readme --- README.md | 6 ++++++ sources.md | 5 ----- 2 files changed, 6 insertions(+), 5 deletions(-) delete mode 100644 sources.md diff --git a/README.md b/README.md index 31f9f4eb5..43bd038fc 100644 --- a/README.md +++ b/README.md @@ -245,3 +245,9 @@ Security **Caesar cipher** - Implement a Caesar cipher, both encoding and decoding. The key is an integer from 1 to 25. This cipher rotates the letters of the alphabet (A to Z). The encoding replaces each letter with the 1st to 25th next letter in the alphabet (wrapping Z to A). So key 2 encrypts "HI" to "JK", but key 20 encrypts "HI" to "BC". This simple "monoalphabetic substitution cipher" provides almost no security, because an attacker who has the encoded message can either use frequency analysis to guess the key, or just try all 25 keys. + +Sources +======= + +* [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) +* [Rosetta Code](http://rosettacode.org/) diff --git a/sources.md b/sources.md deleted file mode 100644 index efb517dca..000000000 --- a/sources.md +++ /dev/null @@ -1,5 +0,0 @@ -Sources -======= - -* [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) -* [Rosetta Code](http://rosettacode.org/) From 34bca5b79b82f302781a89f4a4f8e3f3b994b2db Mon Sep 17 00:00:00 2001 From: Aaron Schumacher Date: Fri, 13 Jun 2014 15:19:48 -0400 Subject: [PATCH 095/110] typo: "form" -> "from" --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 43bd038fc..3a607e079 100644 --- a/README.md +++ b/README.md @@ -195,7 +195,7 @@ Web Files --------- -**Quiz Maker** - Make an application which takes various questions form a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes. +**Quiz Maker** - Make an application which takes various questions from a file, picked randomly, and puts together a quiz for students. Each quiz can be different and then reads a key to grade the quizzes. **Sort Excel/CSV File Utility** - Reads a file of records, sorts them, and then writes them back to the file. Allow the user to choose various sort style and sorting based on a particular field. From d56420a7b7a4f5721e980985a8895e3b039ccb23 Mon Sep 17 00:00:00 2001 From: Wasim Sandhu Date: Mon, 7 Jul 2014 02:17:51 -0700 Subject: [PATCH 096/110] Added new Graphics and Multimedia project This is something that's been on my list for a while. I will work on a solution pronto. :+1: --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 3a607e079..cfe670b09 100644 --- a/README.md +++ b/README.md @@ -239,6 +239,8 @@ Graphics and Multimedia **Turtle Graphics** - This is a common project where you create a floor of 20 x 20 squares. Using various commands you tell a turtle to draw a line on the floor. You have move forward, left or right, lift or drop pen etc. Do a search online for "Turtle Graphics" for more information. *Optional: Allow the program to read in the list of commands from a file.* +**GIF Creator** A program that puts together multiple images (PNGs, JPGs, TIFFs) to make a smooth GIF that can be exported. *Optional: Make the program convert small video files to GIFs as well.* + Security ------------- From d44d05ea62043fa3b62d5996483b24f6c877615b Mon Sep 17 00:00:00 2001 From: bhainesva Date: Sat, 9 Aug 2014 20:20:46 -0400 Subject: [PATCH 097/110] Corrects it's to its --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cfe670b09..5430bce14 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ Mega Project List ======== -A list of practical projects that anyone can solve in any programming language (See [solutions](https://github.com/thekarangoel/Projects-Solutions)). These projects are divided in multiple categories, and each category has it's own folder. +A list of practical projects that anyone can solve in any programming language (See [solutions](https://github.com/thekarangoel/Projects-Solutions)). These projects are divided in multiple categories, and each category has its own folder. To get started, simply fork this repo. From 3627cf44c1d4a33373c8c88e03b5e072fcda1357 Mon Sep 17 00:00:00 2001 From: vdrey Date: Tue, 19 Aug 2014 20:34:25 -0400 Subject: [PATCH 098/110] Update Readme.md Added more layers to the mortgage calculator problem. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5430bce14..cd1d1f5d0 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ Numbers **Find Cost of Tile to Cover W x H Floor** - Calculate the total cost of tile it would take to cover a floor plan of width and height, using a cost entered by the user. -**Mortgage Calculator** - Calculate the monthly payments of a fixed term mortgage over given Nth terms at a given interest rate. Also figure out how long it will take the user to pay back the loan. +**Mortgage Calculator** - Calculate the monthly payments of a fixed term mortgage over given Nth terms at a given interest rate. Also figure out how long it will take the user to pay back the loan. For added complexity, add an option for users to select the compounding interval (Monthly, Weekly, Daily, Continually). **Change Return Program** - The user enters a cost and then the amount of money given. The program will figure out the change and the number of quarters, dimes, nickels, pennies needed for the change. From 22dd3c466d357ef7454a93ce9dd51be0d493750d Mon Sep 17 00:00:00 2001 From: vdrey Date: Mon, 25 Aug 2014 20:15:31 -0400 Subject: [PATCH 099/110] Update Readme.md Added Find e to the Nth Digit. --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index cd1d1f5d0..faed0bc94 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,8 @@ Numbers **Find PI to the Nth Digit** - Enter a number and have the program generate PI up to that many decimal places. Keep a limit to how far the program will go. +**Find e to the Nth Digit** - Just like the previous problem, but with e instead of PI. Enter a number and have the program generate e up to that many decimal places. Keep a limit to how far the program will go. + **Fibonacci Sequence** - Enter a number and have the program generate the Fibonacci sequence to that number or to the Nth number. **Prime Factorization** - Have the user enter a number and find all Prime Factors (if there are any) and display them. From 3375fc3ddbd4a57a9dc17be5fec2350de2bde6dc Mon Sep 17 00:00:00 2001 From: vdrey Date: Tue, 26 Aug 2014 19:24:05 -0400 Subject: [PATCH 100/110] Added Limit Calculator Project --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index faed0bc94..4e052051b 100644 --- a/README.md +++ b/README.md @@ -67,6 +67,8 @@ Numbers **Coin Flip Simulation** - Write some code that simulates flipping a single coin however many times the user decides. The code should record the outcomes and count the number of tails and heads. +**Limit Calculator** - Ask the user to enter f(x) and the limit value, then return the value of the limit statement *Optional: Make the calculator capable of supporting infinite limits.* + Classic Algorithms ----------------- From 3454679dc2d78d785223734414759fa2765a689c Mon Sep 17 00:00:00 2001 From: Lovekesh garg Date: Mon, 17 Nov 2014 00:54:09 +0530 Subject: [PATCH 101/110] adding the fast expo. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 4e052051b..5f6ae5d9a 100644 --- a/README.md +++ b/README.md @@ -69,6 +69,7 @@ Numbers **Limit Calculator** - Ask the user to enter f(x) and the limit value, then return the value of the limit statement *Optional: Make the calculator capable of supporting infinite limits.* +**Fast Exponentiation** - Ask the user to enter 2 integers a and b and output a^b (i.e. pow(a,b)) in O(lg n) time complexity.* Classic Algorithms ----------------- From 4879fab6aa0c5235c21a9587cb25fbcfe77d1192 Mon Sep 17 00:00:00 2001 From: Lovekesh garg Date: Mon, 17 Nov 2014 00:56:10 +0530 Subject: [PATCH 102/110] Readme Updates typo errors corrected --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5f6ae5d9a..21fdea112 100644 --- a/README.md +++ b/README.md @@ -69,7 +69,7 @@ Numbers **Limit Calculator** - Ask the user to enter f(x) and the limit value, then return the value of the limit statement *Optional: Make the calculator capable of supporting infinite limits.* -**Fast Exponentiation** - Ask the user to enter 2 integers a and b and output a^b (i.e. pow(a,b)) in O(lg n) time complexity.* +**Fast Exponentiation** - Ask the user to enter 2 integers a and b and output a^b (i.e. pow(a,b)) in O(lg n) time complexity. Classic Algorithms ----------------- From e287ca8a7eb9cdb3ef46478729fdce5a4660588f Mon Sep 17 00:00:00 2001 From: Anton Antonov Date: Sat, 22 Nov 2014 15:52:16 +0200 Subject: [PATCH 103/110] Added a Company Manager problem in Classes --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 21fdea112..b4bce325f 100644 --- a/README.md +++ b/README.md @@ -152,6 +152,9 @@ Classes **Airline / Hotel Reservation System** - Create a reservation system which books airline seats or hotel rooms. It charges various rates for particular sections of the plane or hotel. Example, first class is going to cost more than coach. Hotel rooms have penthouse suites which cost more. Keep track of when rooms will be available and can be scheduled. +**Company Manager** - Create an hierarchy of classes - abstract class Employee and subclasses HourlyEmployee, SalariedEmployee, Manager and Executive. Every one's pay is calculated differently, research a bit about it. +After you've established an employee hierarchy, create a Company class that allows you to manage the employees. You should be able to hire, fire and raise employees. + **Bank Account Manager** - Create a class called Account which will be an abstract class for three other classes called CheckingAccount, SavingsAccount and BusinessAccount. Manage credits and debits from these accounts through an ATM style program. **Patient / Doctor Scheduler** - Create a patient class and a doctor class. Have a doctor that can handle multiple patients and setup a scheduling program where a doctor can only handle 16 patients during an 8 hr work day. From 8d188b907746b29390696dfef0b6022ad3ac5b31 Mon Sep 17 00:00:00 2001 From: James Lieu Date: Tue, 25 Nov 2014 15:03:49 +0000 Subject: [PATCH 104/110] Added Fizzbuzz problem --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 21fdea112..4a36a2e17 100644 --- a/README.md +++ b/README.md @@ -104,6 +104,8 @@ Data Structures Text --------- +**Fizz Buzz** - Write a program that prints the numbers from 1 to 100. But for multiples of three print “Fizz” instead of the number and for the multiples of five print “Buzz”. For numbers which are multiples of both three and five print “FizzBuzz”. + **Reverse a String** - Enter a string and the program will reverse it and print it out. **Pig Latin** - Pig Latin is a game of alterations played on the English language game. To create the Pig Latin form of an English word the initial consonant sound is transposed to the end of the word and an ay is affixed (Ex.: "banana" would yield anana-bay). Read Wikipedia for more information on rules. From d240ac61ee85df54333a09aa3b82ee608c3f8b48 Mon Sep 17 00:00:00 2001 From: sutiam Date: Thu, 18 Dec 2014 05:08:59 -0800 Subject: [PATCH 105/110] Updated README.md typo fixed. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3a6a7260b..c6439362f 100644 --- a/README.md +++ b/README.md @@ -243,7 +243,7 @@ Graphics and Multimedia **Stream Video from Online** - Try to create your own online streaming video player. -**Mp3 Player** - A simple program for playing your favorite music files. Add features you though are missing from your favorite music player. +**Mp3 Player** - A simple program for playing your favorite music files. Add features you thought are missing from your favorite music player. **Watermarking Application** - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. *Optional: Use threading to process multiple images simultaneously.* From 5631ffa119bde2065cbdbcf4fab058810d8d5c4b Mon Sep 17 00:00:00 2001 From: sutiam Date: Fri, 19 Dec 2014 04:58:03 -0800 Subject: [PATCH 106/110] Updated README.md fixed typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c6439362f..e5237ddc8 100644 --- a/README.md +++ b/README.md @@ -243,7 +243,7 @@ Graphics and Multimedia **Stream Video from Online** - Try to create your own online streaming video player. -**Mp3 Player** - A simple program for playing your favorite music files. Add features you thought are missing from your favorite music player. +**Mp3 Player** - A simple program for playing your favorite music files. Add features you think are missing from your favorite music player. **Watermarking Application** - Have some pictures you want copyright protected? Add your own logo or text lightly across the background so that no one can simply steal your graphics off your site. Make a program that will add this watermark to the picture. *Optional: Use threading to process multiple images simultaneously.* From b5185543e6bd3b2109e5a860a743407a62629d7a Mon Sep 17 00:00:00 2001 From: Kiriakos Velissariou Date: Thu, 25 Dec 2014 18:46:07 +0200 Subject: [PATCH 107/110] Added Minimum Spanning Tree Problem --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 3a6a7260b..1c57ff03c 100644 --- a/README.md +++ b/README.md @@ -94,6 +94,9 @@ Graph **Dijkstra’s Algorithm** - Create a program that finds the shortest path through a graph using its edges. +**Minimum Spanning Tree** - Create a program which takes a connected, undirected graph with weights and outputs the minimum spanning tree of the graph i.e., a +subgraph that is a tree, contains all the vertices, and the sum of its weights is the least possible. + Data Structures --------- From 070095a83c21ab0f362485db4fba2b0bfe0a7020 Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 7 Jan 2015 14:34:09 -0800 Subject: [PATCH 108/110] move credits on top --- README.md | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 3a6a7260b..7fe54d547 100644 --- a/README.md +++ b/README.md @@ -14,13 +14,15 @@ See ways of [contributing](https://github.com/thekarangoel/Projects/blob/master/ You can find implementations of these projects in many other languages by other users in [this repo](https://github.com/thekarangoel/Projects-Solutions). -## Donations +## Credits -If *Projects* has helped you in any way, and you'd like to help the developer, please consider donating. +This repo was compiled by [Karan Goel](http://twitter.com/karangoel). -**- Gittip: [https://www.gittip.com/karan/](https://www.gittip.com/karan/)** +Problems are motivated by the ones shared at: + +* [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) +* [Rosetta Code](http://rosettacode.org/) -**- Flattr: [https://flattr.com/profile/thekarangoel](https://flattr.com/profile/thekarangoel)** ================================ @@ -256,10 +258,3 @@ Security ------------- **Caesar cipher** - Implement a Caesar cipher, both encoding and decoding. The key is an integer from 1 to 25. This cipher rotates the letters of the alphabet (A to Z). The encoding replaces each letter with the 1st to 25th next letter in the alphabet (wrapping Z to A). So key 2 encrypts "HI" to "JK", but key 20 encrypts "HI" to "BC". This simple "monoalphabetic substitution cipher" provides almost no security, because an attacker who has the encoded message can either use frequency analysis to guess the key, or just try all 25 keys. - - -Sources -======= - -* [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) -* [Rosetta Code](http://rosettacode.org/) From 2bbb8ec298275efa35a186b5a5c60a540f6d49db Mon Sep 17 00:00:00 2001 From: Karan Goel Date: Wed, 7 Jan 2015 14:37:00 -0800 Subject: [PATCH 109/110] add a table of contents, close #61 --- README.md | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7fe54d547..a4dc6607b 100644 --- a/README.md +++ b/README.md @@ -23,8 +23,21 @@ Problems are motivated by the ones shared at: * [Martyr2’s Mega Project List](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/) * [Rosetta Code](http://rosettacode.org/) - -================================ +## Table of Contents + +- [Numbers](https://github.com/karan/Projects#numbers) +- [Classic Algorithms](https://github.com/karan/Projects#classic-algorithms) +- [Graph](https://github.com/karan/Projects#graph) +- [Data Structures](https://github.com/karan/Projects#data-structures) +- [Text](https://github.com/karan/Projects#text) +- [Networking](https://github.com/karan/Projects#networking) +- [Classes](https://github.com/karan/Projects#classes) +- [Threading](https://github.com/karan/Projects#threading) +- [Web](https://github.com/karan/Projects#web) +- [Files](https://github.com/karan/Projects#files) +- [Databases](https://github.com/karan/Projects#databases) +- [Graphics and Multimedia](https://github.com/karan/Projects#graphics-and-multimedia) +- [Security](https://github.com/karan/Projects#security) Numbers --------- From 10ed1c05166c66aa1b1085b92d95b67ad5268182 Mon Sep 17 00:00:00 2001 From: Karan Goel <3261985+karan@users.noreply.github.com> Date: Tue, 24 Nov 2020 07:54:29 -0800 Subject: [PATCH 110/110] Create CNAME --- docs/CNAME | 1 + 1 file changed, 1 insertion(+) create mode 100644 docs/CNAME diff --git a/docs/CNAME b/docs/CNAME new file mode 100644 index 000000000..7dc5a55a2 --- /dev/null +++ b/docs/CNAME @@ -0,0 +1 @@ +nojs.club \ No newline at end of file