From 0420af289e5f5466bd12fff40c11115a614f3a05 Mon Sep 17 00:00:00 2001 From: Alexandre Date: Sat, 25 May 2024 15:32:01 +0200 Subject: [PATCH] Tree DFS implem --- a.out | Bin 277876 -> 280542 bytes pretty_printing.cmi | Bin 5448 -> 7428 bytes pretty_printing.cmo | Bin 21810 -> 24918 bytes pretty_printing.ml | 140 ++++++++++++++++++++++++++++++++++++-------- 4 files changed, 114 insertions(+), 26 deletions(-) diff --git a/a.out b/a.out index eb7637b31bdc1efc7d12b8d354067390298a2ba5..65a0cac49ef68d94b677849265aae39338a4c92a 100755 GIT binary patch delta 2266 zcmdT_eN2^Q6u;*^?=@}$-OI;-__~1OBWO1vv!?Q4u+<`E%Bs~&NepSGP{6?21f?0J zrQYQ9VFh_HlrEp@ivmJ$DG&s5I-3H2+rsUdv07TUbAa1$tN&=Ncl*8PInVi>=Q+=L zp7T6E|7M(g-&9@+mC8xXvgxPp)9E%76e>|#sST&})_r>8A#c^1wN9m?KNLTB+*%vz z8|LC~u}-H;XCyMB87gBLp6vCVr8D5NF zMkG}XK`^O}7zlw>bsXb^g1B4Hc$879=yb2Jj9>&2tX2Z%QDZ`5xceT4d=ia}D)a(r zQ%*Ga21Rib=XLMmHvDA{b(_U=L1QyXY#xj_#sdrk-5i4DWE=*+I9YiDLjt*%v4%6c zndMf7L?RG>Z);Aj?|+`de=SMz{&H;G8|K~_Z;I%K0I&Z+?&ALL{4MlJiuanIq?zQ* zp6dDC3!OX4Ie~3-U=tVb6AftgH}O8@G32mHdmCdBl{KKn-^filw`GiH7{!b{x?x9) z_I(3pg6SaF@Ljb`p>_Z^>S@B2@PTwR(48jk z;NB2A(t@6}sTs|*qy=NCzF7<{xRo+n?xHwb-IVKW(0W?&jvhXuu67K7kLhwd-hxkP z@C*jS5vuLQD9z(6UIO@(COVk$8BKTK8}K<5c489LP+ccl$kxg8JNXA+kXIL4;Hb8$ z3x82fHeTTdUc_!*id=$ql+nv>$Ed6qW8g~}-vagYT`%5-<8+}9m&1wKNE#^AfzQHM zvznduJ1_+r>4F1afF_FT=kS`fjDC#KLyPw6c^n03rB%bY1KKqEFb)Bn6m=~PjG!4# z(GMed6i(CrQ6$hP|02Fl`!1u0Rx^eJKugB3NE^S1onSb_AwR;Qo~7DL7-i^~Q#(Zs zrt&Lj)7a4lhORlwxmjZOoZ2%()R^dj@HJIk#dzqYQ&;h+SRd!?WhNP^WXLpq?3T*% z*E!w6Iz4295K6y>Z!3G9G;$4h`s`s>_r1tWo!v>#k7Kmb?WEn~n5c|8>GU{8=2zcx zxeRQN7ZQI}bNYPWz?&|Y*n}fTEQLApYPt1_pIk1_d3qo7<(RfJnWLN8$bJfKz<{OS zur8+eSjt-x!3byYbE%VSTdJXYPR5F)!XFjiT|V5D8O#hRR*6{LzbOg_135K*(T9YHH=-W9K+=8V~m_=k_IrPYo#NwGD}CIT#1V zQV+$hFUsAxr8K_?ltJxAl3M6t%qlK;Cp=^4(iM%jOQu)souut6RY&CYH`6n-vUwz3 edS>Q&7WZeZd-7?1Egk7;*=hW$rcw4P)%+(B?D!A> delta 972 zcmYk4Sx8i26oBu!=Nb;0+$qD%L~E!Nr5TqN!AxI@h)Ah0h)OV9NJvw{Hj1(!3bVA1 zwwKdxtKj zyNl5nBeRzd+R#i*Hq=Fn4YPq#?HD-OsD#q&7)S9xF;EoS@e7cz1LNu3EB>_9U?SP1 zndra*+FUyom`fQBj3!GhM$qV_uNHSxS>3Si(id64#79Pds)mrVCFG$t2YUpco=TcQ76X1ZF=EEGu)vbCoY2u3U;w& z6>D5Lt{Lxgi>+L8g6n1JJxX(P&Hc%NROZG&ctAYOL~U;Lr_L7s47hO!9+9Vo+dZCI zXC+0pVmdsTvYt|TE3SlRc?1h z#t1d`5;TbvHwnE9A|=FSlYL1RHoNO)1B9jssHlf4 zML9XohtVjY5b-<_5tbrFIw(jBy(%3fgt9j?@6Egc&F{A_|L>b`zB+H(%W@TYlhV`E zyW3OjQ)ZX1K&atpgwzCt>aHfgSM@gif?6n4>I?)uzL3XPpjYV48Fm)ALZIy59$Dpx zd>t-}bp?a2(r!AzxCVWeH6tA|9ASr|UOR#uaA&oI*GPCR6^<$Kc|u(z?vJA1I!8q$ zIdHcZiACP50of6(WDRgT9P@Cj!=bO%TlCjLB|%@N-|q$GKrMutAmWBL#@E#mW-i6# zlBUj*mGursMnxpf>GS(Er^A7wSjiyj(mQ85NT5vv9#9T$XW`|0{jN|asp|&f7LLgV zWfCY;BRJMTuTyWjb)mhRxpIp^sWcOWJ4k&uVl2Y@iRwwo0p(**$|Ja~f#y>^gSt{Z zF+@*3D2GI*|K!RhTtleaOx1N74$3xAc13V!1MQ*e3cFKviJoF-P%8?!@-$bjR|DlR zQ*6~~3#%v|spFcG%UdH~<8BhYO<3G6&<<*QXdc)w*lI;^wt?zV+Y@_I+bQm#YqZnr zA<51SYQ>tb&{YJ=5hF4@feoHlj7sGdx`LUKy`2)?CE=e9Z>N)9_#xKy-f{PfB)wb0 zdyJ8bXGy$YP2L9*Z?DPICEh;5!*%GRmf5;MYTZwKDVOL2B0~oSsubvuK!*i7BG6HR zjtO*}=DExdxFO)i5&VgPl4zdS_oI1^cYBHhURNn7N6p->qxsqR*Qq@rxq4EFB);&Ch{sE+ACgay&~aD6245UTayS^NzAJv zglhu*A<%Ui)-^!0;n6C1^i~A_Vd8pqNLVT~@X)y8v@s#g=LY4t8O>P9Ko#>7YP})hY6;&od$ph)z9f&Z3UN~VEeYS2@Ez8V2q#L+C}WZ-MNA1%WU&4vv4AGC zt;A4x8lpCV#4Hz81y4*>(VBu+izH5kBtYd*{~**qLWpEeoMNdP7@(<3@VGUy3WdnP zKEaZQ&zY-Bv^EBz?r%(82SCf9(euz~Fj3c$6T_K0*Epsw&mSmtl7$PDlSVC67*4XM zLY^MMQLg%aDa!jKT!-b^L(?smKP(IXT@rpkc=sUlE(g$ZXfzTU`H6Qga$+>|Zqfwm zU3|#zEY!xhKsjYNN9r_6()bXy8&@163v)qViT|*$RF_!_0@?(RUxml3h^1mqM46@c z5L>D`k|9af1kGFO%y;?nN}UBkSD;X=`JkNU>3N5xXAX<`o{2X4h~&hh60T>Ao)U@m z7$11jq#CVn$hDH>8boFgQ@FRz{;QB6wZ$@5Wa$_Yxit8r@l?Yw`pBk_sHEaa2{)B+ zGb&g}9|bzDBQ-oB;U={GCHe@EhYDC~dtAc*kZ@xvPS-g+{%*w$C80(lj0Az23)DiO zmIAe6h29P5AT(Y8jTezZ@8QH|R_JQP7U1SadENPBXL5$u^agYP7WK+4xzSp}()o|FqeUR!CLiSijy< zd#Z%fB%Dsg<*Ga*+-fIKdx1I#)RCrEX#kK0Ew@0+9fWAeiG4J+N(Yqd&{yd(|lMek&pK2<9BNSH%T8l+QK+a$IYZnI0%#M(6Rg~ zJ!>fM#r5qZ%6oI-GE*KvezI3~=tCU3gZ$B?^yd;4WU(NBBo`&fOJwNIc{C`$@o7sL zA=%F|-g0UAie}>4BHx_^>dcIgP&|3Z4FZr%{66 z4ZAo|CtYHA5xPh|bfq)5GFjqu6K1FIeuzfX7@OyNyk4i< z6(TeAIn!h&HJQduJ}(*QVT3KM;L)DOSiWmg>t*uf$+EY}t0k%HLtngJw7z9AUQcnT zJ9`;t=$Ook?5$L!ol&$ueNUA7Qvc^fyaNOpNW0?um~0bCwy%)rC(sL0`ydGq77{}Q z8Y)n>K*I#eVfkJK5Q4UYq3tk|z}1}4SiVmnwpzz{eMxpu&hu$Yo~vFYV|u9MhEu2? z&eZP&m<*{MAhk15zl#&ynR>EGn@;N)>(;!qmKT@-RhiDq=py;YHkv`%WUergCy<*N zI|lFuq;7>&`WhYQ1U-VOwwi!uQe&;yNr;?~wE~T7KQ5Z%r&NkTV`cx-IXaqe4u_eN zY=Oy}Bk>A}$F|xM!z270A<#&HyaE-`C~P$V-h$NIWZol0O-|g;qG$o=J@yKi=ec5X z6L854fvkvR02(X963Kdyz8c$jPG1t%iVb1BNRsu_IZ9pvd_p`RP)O=fLgQDJO0IsC znU4*U%xL=3+tMY@7@@0Fps@mtV`(50?m}oEhW2wv8pwoe5c60XvH{JbX^7AB`+Qm+ zNy23_2_N$$sLCzFC-jODXBg*59!#Wx=1PnS!u-o7LX&7mTt~;XMB8}Y_NwTLCew0T z0~Af+GE-R`E`X)b@hRw-PU6Vr1e>*OQvrQO<4D&=X+CF>Kd6zd-(9yppja)K<`*Syk?|bu{Oczb+ZzuEvYvci_{`u@upFw$ut`$&D3GCzha}vCTaU8Gk(+R z_co7mItS#YhtFa*nNOR_wki~*+t3kPH=2DSTH-{tu=tlD17am!sF7yHSU@r4u zIlvLfTnU+LhzCD#VmI^PFre?L2hDt;LQt;p>XFT`Y8z(`$^Tek|J$sb^%kNJF+ZT8 zkGNf(+1&wf2C~LO))bEH{Qm7~ipad_r@lf>iP{?)9e}d}fJ%Zo&EHcm(TkhZY#T zveka}f;lX^( z!GAgUhJ*ic@GS>RIrxr)WgL9Z!E#z$Og5tDA*%|qZV{r5NpyOQ4l3Lq(0W?jXa1_V z9-mR$>%6wtX>H8|I{Lv1Xax&V#e-RG%gowVo3&kS)K;1%QG^KMVU~iG+~ZXotg#x` zTJT3Bm)RC)ox!oT3TVB-vGy=%gTb+OIB2868EEPG$>3P$9JI;cXqL=ogCkAJTj*Hs zWl3!1?(@r3w4HNyaIlkuT^#((!7m)_=3oy8zp_%k3Q8^LS`J+okWx5DFgoEkWtJkvzSUxQcRp-)@ZL41HB0)Vc{=WF-ghEoUP(MreLL6%&)8t2WT-X zEP6lpnct0~LssKq3m!4jx!B?yH8|3gb)^Nb1GyRTb2W8SpNv*)s} zk1d#as#@1u4hXruo?NGMKxuKjgPdfB_aU`l%E-9x&b(3M_Bdh$rs zF6OM5QD^pR?=Q)o=8K=Wca*NDWswh<^cWTNxx8KcLGn>D(^brb*M2kkv-sZ=t}UNi YHsXML+j?_QAxs99LVha!>Etfv|G&LCr~m)} delta 2727 zcmZ8jc~DhV7(eH}b9p?0Cxj@=dx_wnQOK?=IXnp zYT)`1#2qxs%Jo?@X=TZnHDfiFmT8OCOj&Bn?cC+u?@WJi=XZYR`+etI=drxtRBGag zig|N0^Yin|GO{z4uj@EQ$ZdxSaU3PYUBv&wni3P~`ljML3bb^e->0b8FA^WsG9;WC z?Dn?}TvT0EJ4#}+Y}@Rn_M!CErZ18eEoTi)Qkr|9i^eEgE)>#~q?VrG2_N^shD+k1 zjM?&G&`1Z-4X}sCxwSkNVqfILS(=%)(a>XL1%^8|C%~MN!@^)U8}0K03mX9Am2A2R zRw&60T9IVplW?)=WOabcqWH((mRwa`TP#_WNO**VORa3yO58|`+aPhHI2Wa-9gxU- zAkX0`)kgDIJ0!ZyPI-)t#@c9{jqbJ4eURYx((!Q6kxDniMMqM+_JHK@K?y$uUglxi z1YVqUcVEVz?tzi+0Z`9|(k;-%JTtV(lKB(~Pc^Ib4=<2PiC(Kg((R)Xo+jZ(xQaQs z@ePTrfXv>!GwPi&Tg`c3PfE8lph@+_YcnNkmV_(eqd{^HHvJ#o+ zAtBlmWj2X4i#S{0q$`KE!{09N!vy!4Y((KEBYRZ|2?Wi2EAeg%4@9Ln$7Hi`ycLZC zu(+2umb43z0`5|YPP*zX@u zVddNjGs9NJkbQdXLIP|sy4?%T@CkQ!h$&NW*~osg^|#Qti@C&82LyNxHihRE?l2v& zA%UQ(476VDM&;{#U{$3Ni8qA)AVf#xH0-qWCAvP((w{){H_cdXBJ-Bn8Y<=Twna%J zeaNChQFvHy+c;hc{zEsns;0J#_ZCh^#EvA#^^PjBXnITp85H0heGpifVVH=9N5uV6 zINrB^nmD~Dz)1m43GluEA3&o!J#Cknze=a0(+_#GCgJh4P<#ZJ+?n3phC)?VTgCdA zXUZIU0^9{G>F0s+-oqyDvFf@Q{hT#Q^8a5!@`+U`X?xFER5OY{Iz?Yojgi5BW5{o)`rS-Ui9qVQmG4!g{@@{w!Q-Fe z`5OY<6yTO`e^7NSrS#o6S~Qy$RrAv_eliX#eZE%J(GC-%y(wK*bjlp``xj5aS`X|0 zBp4qblVhV?Pe`ZT JXX0~}{{Se@2n_%L diff --git a/pretty_printing.cmo b/pretty_printing.cmo index 9cf902d263216e143d283b870bbc476bf5d626ea..0714f1d527c6d046fe9824cbc49926d81e7dd469 100644 GIT binary patch delta 7918 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μ6rsMs{e(& zT9q)yUQJTWvnW|DUKOjGSFYkNKLCVK{XeL_GMTO0VoLfm`-~d@ur5DdGA14+%-#;m z6pAzyIW;hY=9Q+alzxlowjo%4iJ~ zexP(jihCKQ)N`8YY?Q{Q8QFf0GAexTPMcqMe3{Cq31mHkGAYnnjItK-^r4Ifg-mat zY(T)9C_79*%R$)@QCvjXDFWteBKZx9vMI6t4&~w(x4nz<307HGqWpl^W>E2rXzoPC zanW2srC&5_QEA@2Yp4{m^8*RT=Iv%QbmC&8^ ztP{@}W#}c=he{Yuvg(C(RT)Nz^^x(LR%gBK6Q$cty1yu4uXwr(Him*yy9Q+$o76R{ z;cv^|l%`bQCDj5Y{BYhg%t5sqmE~y?>`FK`Pm|iUJY{)-XinqFw*0yxr8-5bVkOYE zrG86lQoB~6Ea!+;Y5cJ*KkieiUz5tO1bV9|&zmH*u(JGtXb~lR#J^kIB{Cuh;N}U| zwViNx3mAc$CsNn`7H%0y?eF2H=^NLzufTm?O!3|DXo9{9PlnjO0Z*Z5z6MWFG>^m6 zAQ}UnHUUq-L*q{yeGeYGQxxL>JTi~k_u-*=B-6jbLsLxmS4}1TmbDy&>sxR=OGWgH zu!N-NsR+-k_#A_WFSD*ak19Jke_^V%I4u8+oLi8yj{HZBrhA=ns$@>LiF998LZ|eP zC*3^RuPH+}vA(W^fh5a3*a>AACf4Ih*p*~OUed>!=c*5!UDC`~_v<(LG^2e4neHe%Q}t^Hb8j zq=Z-JUCnm9qAX{K_Nws`yG|+HTcmqk376(w&FbG!mdivtZ)9$8#kF54-JeMJ-%9vo z-c|0j_FHB7jA-x7369ixnpys|vZNF3eI+<})T_40tgT0tOt|ht)!{^(#!nBR>N4B( z5UOSbMBz>2QPP*fOQS@lCGg5yT&M5j)nZx&?*=igfVWpPYv3IgO*6b>0$SkRFQztl zkBeqKycY!A1Mj6oB2FF z(*iQ!JDZH;;~LC8x*k?rNDpl{!S|^+=0HS88MZhrb0~rftm&enhP~@DmE`_Hi_xys2LDbDQZR-*tVf& zTEIgHSOnaUK!$+zhzBUgx%LGLNvYkAfMjdig@C#Dod|4Tx_%jfUIFhRFf1FiB48%_ zAp(-DK8t{v>?YKj<^LJAvZ2<7TC@Bv)OO20*AcJX#Yo$X+TF5aA8Mr`DQT!ZE~c%h zJt?MV5L_wA(w`}U2)39w#JEieFCfTGFn=`kB@ZS@!RAT~QcDPy*U%gUM~NHfZ}{LI zLiF1sI3e4dNAQS%w-B5Z@G62+1m^zJvh%^Y6Azvj>u(Xfq-fIueuvA@60}S*kM9mnDh?@Jnf#@kQg%F*R4R1qq zM!YT}`l*m_s()eU^`QN0Rz8}^t^lws6dCi3M#fbXTvQs1y2t`A6jp6#bNL@qY zO^uOg1oapA{g(10G*DXOdTJgT&I`y#0~N7vpPpKZ#?!~HJ@6(RsXb#s`{F0U|MWoC yJBf+zN8T=|h4IdoyWHM{o;sA!Qyx#~wx1HtO6Yns;h!Y-Y4?);4f ((value, (parent_x, parent_y)), (this_x, this_y)) *) + if skip = false then begin + set_color (rgb 192 192 192); + set_line_width 15 ; + for dpth = 1 to (Array.length graphdata -1) do + connect graphdata.(dpth-1); + done; - set_color (rgb 192 192 192); - set_line_width 15 ; - for dpth = 1 to (Array.length graphdata -1) do - connect graphdata.(dpth-1); - done; + set_line_width 5 ; + for dpth = 0 to (Array.length graphdata -1) do + draw_list graphdata.(dpth) dpth r + done; - set_line_width 5 ; - for dpth = 0 to (Array.length graphdata -1) do - draw_list graphdata.(dpth) dpth r - done; + let halt = ref false in + while !halt = false do + Unix.sleepf 0.1 ; + Unix.sleepf 2.0 ; + halt := true; + done; + end; + graphdata ;; - let halt = ref false in - while !halt = false do - Unix.sleepf 0.1 ; - Unix.sleepf 2.0 ; - halt := true; - done; - - close_graph () ; - () ;; - -(* --------------------------------------| TESTS |-------------------------------------- *) -Random.self_init ;; let generate_full_graph d = let rec aux n = match n with @@ -490,7 +486,99 @@ let generate_full_graph d = end in aux d ;; -even_more_pretty_printing (generate_full_graph 3) 40 100 ; +let rec nth l n = match l with + | [] -> failwith "Out of range" + | h::t when n = 0 -> h + | h::t -> nth t (n-1) ;; + +let even_more_fancy_dfs_prefixe t graphdata r tts rfound gfound bfound rmark gmark bmark = + let rec aux tr dpth os = + match tr with + | Empty -> () + | Leaf _ -> begin + let data = nth graphdata.(dpth) os in + set_color (rgb rfound gfound bfound); + draw_circle (fst (snd data)) (snd (snd data)) r; + Unix.sleepf tts; + set_color (rgb rmark gmark bmark); + draw_circle (fst (snd data)) (snd (snd data)) r; + end + | Node (_, g, d) -> begin + let data = nth graphdata.(dpth) os in + set_color (rgb rfound gfound bfound); + draw_circle (fst (snd data)) (snd (snd data)) r; + Unix.sleepf tts; + set_color (rgb rmark gmark bmark); + draw_circle (fst (snd data)) (snd (snd data)) r; + + aux g (dpth+1) (2*os); + aux g (dpth+1) (2*os + 1); + end + in aux t 0 0 ;; + + +let even_more_fancy_dfs_infixe t graphdata r tts rfound gfound bfound rmark gmark bmark = + let rec aux tr dpth os = + match tr with + | Empty -> () + | Leaf _ -> begin + let data = nth graphdata.(dpth) os in + set_color (rgb rfound gfound bfound); + draw_circle (fst (snd data)) (snd (snd data)) r; + Unix.sleepf tts; + set_color (rgb rmark gmark bmark); + draw_circle (fst (snd data)) (snd (snd data)) r; + end + | Node (_, g, d) -> begin + aux g (dpth+1) (2*os); + + let data = nth graphdata.(dpth) os in + set_color (rgb rfound gfound bfound); + draw_circle (fst (snd data)) (snd (snd data)) r; + Unix.sleepf tts; + set_color (rgb rmark gmark bmark); + draw_circle (fst (snd data)) (snd (snd data)) r; + aux g (dpth+1) (2*os + 1); + end + in aux t 0 0 ;; + + +let even_more_fancy_dfs_postfixe t graphdata r tts rfound gfound bfound rmark gmark bmark = + let rec aux tr dpth os = + match tr with + | Empty -> () + | Leaf _ -> begin + let data = nth graphdata.(dpth) os in + set_color (rgb rfound gfound bfound); + draw_circle (fst (snd data)) (snd (snd data)) r; + Unix.sleepf tts; + set_color (rgb rmark gmark bmark); + draw_circle (fst (snd data)) (snd (snd data)) r; + end + | Node (_, g, d) -> begin + aux g (dpth+1) (2*os); + aux g (dpth+1) (2*os + 1); + + let data = nth graphdata.(dpth) os in + set_color (rgb rfound gfound bfound); + draw_circle (fst (snd data)) (snd (snd data)) r; + Unix.sleepf tts; + set_color (rgb rmark gmark bmark); + draw_circle (fst (snd data)) (snd (snd data)) r; + end + in aux t 0 0 ;; + +(* --------------------------------------| TESTS |-------------------------------------- *) +Random.self_init ;; + +open_graph " 1800x800" ;; +set_window_title "Trees" ;; + +let gdata = even_more_pretty_printing (generate_full_graph 4) 40 150 false ;; + +even_more_fancy_dfs_prefixe (generate_full_graph 4) gdata 40 0.2 255 255 32 32 32 255 ;; + +close_graph () ;; (* compilation command : ocamlfind ocamlc -linkpkg -package unix -linkpkg -package graphics pretty_printing.ml *) print_int 0 ;;