From 17a8ee2bf3389258d1fe2fe86dbabdaad77c63ab Mon Sep 17 00:00:00 2001 From: Gregory Campbell Date: Wed, 7 Jul 2021 22:15:32 -0400 Subject: [PATCH] Added section for Euler checking algorithm to projects page --- src/Projects.js | 28 ++++++++++++++++++++++++++++ src/assets/EulerCycle.png | Bin 0 -> 18306 bytes src/assets/EulerExample.png | Bin 0 -> 4494 bytes 3 files changed, 28 insertions(+) create mode 100644 src/assets/EulerCycle.png create mode 100644 src/assets/EulerExample.png diff --git a/src/Projects.js b/src/Projects.js index 676c63be4..b4ad6654f 100644 --- a/src/Projects.js +++ b/src/Projects.js @@ -7,6 +7,8 @@ import WH from './assets/W&H.png' import StateMachine from './assets/StateMachine.png' import Skin2 from './assets/skin2.png' import HSV from './assets/HSV.png' +import EulerCycle from './assets/EulerCycle.png' +import EulerExample from './assets/EulerExample.png' export const Projects = () => ( @@ -72,6 +74,32 @@ export const Projects = () => (
+

Euler Checking Algorithm

+ +

In a course I took in university we were tasked checking if a graph was Eulerian or not. + Much like the Python Skin Detection assignment this was also an assignment I could still remember + from those days and wanted to re-explore and improve upon. + This C algorithm takes the text file euler-graphs.txt and runs through the input to determine if its contents contain a Euler graph. + The algorithm checks the initial line of a graph to determine the length of the graph and + uses that information to know how many lines it must go through to gather all the info of the graph. + It will repeat this process until it reaches EOF. + You can check out my code through the script by checking out the repo Here. +

+ +
+ + EulerExample + +

Example of a graph from euler-graphs.txt

+ +
+ + EulerCycle + +

Output from running the algorithm with euler-graphs.txt

+ +
+

My Many Games


diff --git a/src/assets/EulerCycle.png b/src/assets/EulerCycle.png new file mode 100644 index 0000000000000000000000000000000000000000..acc78dddeb1d6f4cdca74ed62825226e19bd31f1 GIT binary patch literal 18306 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

CAr`NWU^ z2?9n4b?l1Ely@|P>&z4E-NAh|%5=x#V1IyxaXi}QE0?#aGF6*Wx$}+6gN|sm?xsn` zeVpd1ae;L&7AFb8f~f_KH#%rx=+Og5knSb@@?I@-s`PINYKtdODMmMaq)q3a$kl$H zTZy*r{?r$Udw*BBTMiq+W{m=1_h2*|f`5-F%Hc$uI=HI#RYA7K#z1mLPh!SrG?blx z|3oeKRBLmw88C`-!5N7*^X1v&)x<>$7OdogXUZsB3qHq;IJbCI8(OVdKAUw|t!)DH-OF-j|CT zmpF{if9`nOtW9ss@m5-{g7oSO z&)iv`gWG`?^6GHDoIU7fYbLqF1t|#bteUb0Fo~@as!p<)6TQO1#)QnbA^0~4)CF2i1+7}#a(?|R5d!@IFFgWwS3%`V+cejMc zG3ldv`hw7!1r%}KTJr-$l$)^D8a%4VE~9&mnG$!BiJD7*FJ`bCjj=g+M5?w+t5akC zDkL4N!axn@yRNZPKS@lR^Btx7Sv<6d0~fm@Z@vL>)!lYR(q5n<;lXHQup~Qr z%rdB1fHx=|%A!(Cb1~d+6GwC_qTzE?pcp0ZTNWXj>o0v|OCbGx>kV%h;k2ir&8k=FpS{6wTdaYI@buaQf?kHXp zCkeF5>n*}pLZc%M0*af}}u59iPlmnYI8 zD0u61e7RqNe)nz9)FH7BnITp-`M!#2oHhbQks(+ygPe5^~e%Kg7x?A zK3pBR=lAt})>XJ+F~d<)<25#|&h@*%Xyr@oQca?)SB&3{)mXWFG}JAmEOwM)VJ0R& z4EGAh`dh21DK(rgGFSsh1*13*WG!CJ$+Zv8 z*64_smqZzuN)kg!PzL5dPeXwuVWz9|SV}g4a>l1RR3vDa2jo$=%oWV48HO4FaMk$V zQDf_XqaPjSl z+5Gv1Jhd+i+6ElFX+`4J?W<6~>j>!l9MZ^ab~}+t#R-e&(?l#*#pc0gP0_**cR;MjJ85uB-5wC)`Z5+S%i>g~6wPHu}H`>suLW8z$%q1-$ox6Gt zks(o(E*r;ezZ`;2q+@jMNHdkk=hE}I7MqU6=%I`qb{j*U18!U*cz+_swEb)f7=i!P z4Xk(A#Lgq}WS7~{q;+$05A48jqn1gkUO?i7>!_24;WILW&`f*WEiSWbPXfkT#MCVH zwa!8aA%qY=0*~|^l%C(fC;c)QKW7vp)(xadBaMQTB%%&pAk*CZ%$USCW2a!h*q7n! zH#5c23S(g&xv4Q2u08s%JiXM8_8-q@a0_dSlA_q>GlMlDcj~v-Rs&tl=yO*4HAE}S<#zlTjwTjX`t0SztX{yj_Mb6utv`P#P9rvOE{8%A$=3^s zp8p}^Z%$^y*fGo=)dU+YpNxdlY%>Ja;i8Sit)0)t4htFn_jU9yNh5a4Tn_9_Aiowd zHA{W1vk*cEA;gb>(z2z8?vVbR?-Z=Q!mxwKn0))sy#2v}dT3V=LI@#*5aNeXZ;cf~ z2qAGNy?%^Xp1f53dtZ!?s3nUF($VeB4*vf=tRk}mN6)I?in&j#*x;J z`zZGjBKK8doZvC_w#-}&-1(=8tQAZALKm<006tTmYOjD z?16xvqxSCu-wm?RC&0^IcU5h~e(>eL-|hkU{e*|QsRta7^YFHI!vgj$cxSA*yR91* z>*DT!_xQm4QW;!yZfDU|H>|bCb-arZ;<_^yKw<5Kq%I2Sc-|0_mXba%bY4n93aTJ0 zEo7*tZ_0ZO0FKOPt6f3(JeeE7Yjrp!)h@K+ar)1V6`*0~vaV|s$E0h)o+{-1F=%*&$dG7%LsYvGxRO|SV!6$5rZk;FhP`8kZY|7I^Fv;m#HJN^A0N}PD0cTIoQyC~Vfdyea#@6?j ziGsChY!;E_W2Pjx6-@8}8<KN%I8_j{FGHRm+8)IW+^!FJi*^<3 zUcSfDhD{PB=s8vlK5b9e^sE*&te?kHHTkcj#w$fn_DJPG{6sr?_-@vpvKMg!OX%mo z(%mK;^>Bvf&CVf^OKIbS`?w_?Q8N|EJo$~0G9%ts-cLg-;p%}Foh7Rb*M?(KY8tqQi9MqAT{Hl^ zL(K#y5Dk;z=B+o(D$ZHDCbeXmw)l@t^mcT2WuwaRAmlRdY7I!WiIZ*FihV}jrkw^S z6^2e>NjHm)O2(Wf-#nE=j?<#!hmAu|>#>cSy1i(Nj$@b!TC8_=Z%ce~=NZ*CI1B*$ z3ftO`1wXkrL|8|cQ&&*ahHE&AR&-FAnMVtTQWGAjeQ9;Jl$-W*W16t__EoguReM-* zdbvqt;{8+hzB_25eRfzNb;z3;y!?#@-#B8+y;RP^A}vh;<+jdvC8+WW>(+6IMQB9>#gMK5)=RYm{ktRtFjGEiVL zt!$JY;&m>wDL3R%v2WR6n#e7wk*AYQSHa?js0S1wUfB8Ewma-;G-{@5SVbf$L@Io& zFW}i_+AKUhUz^hX*n_r|6u7sO)Ou)N-o&cOM*ZRm~U+0Gp zb)F46Os@Gg!}N^qLe%S9j9At+v84k#5B!~kMHhcz2C7QtAOY;M8MT$>eKfbn`h#Oz zmLQrJjJAEw$jfI9zxEf`4Iy4oPGx#|rtzG&8(H?0|{U)mWKPDVaQYsiBR=hM0Zn)^Ao+|scGu3_2@q$;V?lcoGOkU>Rv1&la)6vM<*s4x#RDJ94pRcSQtL) z9;-XCP$pE^g|z@ViepnL~G`N)! zkF0ft7|lpagGzjlz--AJHdTNpJt*XKKrZ5y4CEaIl5+~hu{G^-qcX1#X;xr zA430MKDb4)QVP@ij0bbH3_{f)n#gYm&I3IR>H3b`ijjA$CAOwVW+%9C{$bPMf7tZ5 zoF_>favt``V|4hmIi-FhweenPJxI>EY$L)7p}4{)+3BJaqFm0ROSjq90R&&p^Z#H)r}t-8eaH@e?SDQYZnH(_?Cb12dpXKrbp8v23AmVj<)_6P(@rxTkij$%hobM$<-Ru5*1%(` z&`@su2+wc~Z&djIbi8To1^*eoQHRy3VbQe3C zO8m)j=O8$%qEDb&7ZOB8mvSoU`4R9+7QEN^_bI~!SkXSpKvE1nT&5EOzfTxY2Txiu z>-EJ7YeA!N%9M00#^H0ea@)9dUb_8c-+a_m`q+c%DyU$)-R2+S6(I50gVfmkd8wtt8MBF)3^%N@ko$ z>$|)Pm>lsjO32dvnj6iL-1)PcLD5aMXY#R zzKE`W@ut6y1z%XvgC|MWbVxruZGC>j(Qn~$w@X)+k8?RWE`CR$126T@=819pD)nKI zSxcrcX80lD3DWL1^oNnml6#1y`8up}q0q?NRB@$q& zt?9ljgVT*5loff7$t9FGZq@<7XMSaYINWy_V#VWy%s_uzPiDX|QDoP=q9S;urIpVw z6_z>gpgCY|qT)H}9~^By-l;JVlb@m))o1#!iw2T7mKYf+5F)r*S=jSsV2Mm53r$2k z`+8={u~Ksu0E^`LZ(@o2`k44Hgd}p2__ee`Vz9`742*wf|8#(ut{S1~*LaX9;B?(8 zBxO`rb5|j8RRD)TX=`xSYa*B^JhMiimJwM6-Z>nKZW+S01=spHc(h1_oTUrd4Bsey zl0YYW?q%UJQoS;L3dE%OK2F`&@i~knmGO0mzw$7ZHFYB%}e!u z`ry_o4OlG?)5h?KT}Gaz`v9QEst6g%`lfyu-Lzx@s+!n#7ZCI>iwyT~=98m*5HPL% zwtF&B`vsi!s9$A=+Jul4I5O>r?8K3b;ii8E)<0RXp(4yBDAY8QLIhU<+Uojhd8$@- F{{ymENBsZ* literal 0 HcmV?d00001