From 3e71a8e07d49cb40937013325920787ca3d1104e Mon Sep 17 00:00:00 2001 From: Alexandre Date: Fri, 24 May 2024 23:13:09 +0200 Subject: [PATCH] Tree display incoming... --- a.out | Bin 267475 -> 274798 bytes pretty_printing.cmi | Bin 3836 -> 4337 bytes pretty_printing.cmo | Bin 16501 -> 17925 bytes pretty_printing.ml | 67 +++++++++++++++++++++++++++++++++++++++++++- 4 files changed, 66 insertions(+), 1 deletion(-) diff --git a/a.out b/a.out index 6eb3c481c9fc0c6fec89fda61a8a86216145fd8f..4711fa8d37562fa6ee596f745c15d5f3a01da1c5 100755 GIT binary patch delta 6271 zcmcIodvH|M8Q*iyLN<`VhD}IFz-$s?5}rZO05&BraF|LHUR7)9X4x#s;%1X<76^#0 z(TECGLauVE@<@DuL2U^Y7gR8`b;gbzE49-~Wt3E>V>{E1)}r{Nzu)fO&1MVQe|l$r zIp_P%_d4JAopbNz&3@}Y|6;wPOLS?^N$bwkSEVWZtij(5HMCe3Oqr;eOvNBEgdZ+t zMtMTtB{J3I7e$Ib=*yaPHI}wuX)MMc12jhQAvLE=*z`RjC5_}JfFj|!o_5Zr*QccD zbs1(=|B+_ZyEbK&zkTuI#W4_>4hY~kpp!A?0-1mX;JOva113c2G}7wSAz@PuON2E@ zKJ_Rw8L$IpfVwHbd|(AYx%?=7A4Y~pohty!b3O_f4{&E$(FD+T2`~+y9OGkbNdRKW z=ASU)o&SIWdfv@8HMmij)nI|Jq%xQsfI*DYJL_$0;yH#DLxSO_#%UzdMmi{CfT1!x z(n)Gyo5<8lUr#B#3Zxz2?l_+soinq>&ZNGqH8bNVYQQ~?i$jw>RBuzSmWcFG;m%>? z&iJG;GDE?Lo)It~+$)p$SAaQT()lpS)VZv@s$42_OPC<4PZSZ=c$$2p`&O&G?@F6~ zF2%C@14*mD)Nn+)0yH0u`S#_P#tm->Uge3!fQxE^(@d7O97CkQ|M?d^d zdT<3On#l*^dy2=9>3jw5cw}gvZVLfg;K9EQ(Z!+!y#$~wu*2)OC#+uwK6T?{7Mg+y zLW@TVnC?heufaOordsWqr`dV}7QJqqMZGain6sJjY=|@41{|2@XzKePi|mX>%$ty} zCXB2nyKcN1s+YD&@u!;Gj)|&MSXLj@%M>-wDJN(1&`@9-z=w*=MW?3T>D02-6HaMQ zo{S*4$B zcu8!xh%A-24kydv_7cy6Iw`K|QZm|H=+X#?m zfee~^A{Y$&fe*9IlgffIutGR6=2v3Qx|3goIrW%wgO?y1j0r#{tW+GQWbjHZ!TUBj z24rMw8uWP`Rsp<1@_|S|xUw&0e7dIZJ2SC)5#;!MlO3*ev+?m5o9zPs8ekjzS75vl zrSAdFMj?+6W$sl2K4}Y14>L?AepvCAGHBlD41+MXA~C1xeNl7lGbfVG`m6+a!)?FB znmxL<V1M?Xn@xe-Yu2V~3H6UN*fACIjHllCc2icEC`o!#c~(^3PD>9<2z!mf9B0RcCM0 zQj#rE?OeTbYguwBWT>B^I?M5We(ZIt{?^t~^+CC?rd3DRc#tSls|IeCf2l`r9Qf!7H)K z#=0vy=3;aM%!?o3J;aB!!EeKyX}Ai=2bf3Ftw1qA@0XLM96@`KA2Y0^M32nT?|9R! zW^55Ds@o;as;L>L`S8EYbC?mjGy1$Hj^>><3*ftl;qXlO^tOLz>a7hHeewp&Qs$MX zh>odAFaVBRqXnjlzeWlGZh-QH;i(AoBt5Mr)6FYxC!`H6rjK#C0AA-au*NgW`Ap1N zKBkr4M+1C~FjiKWspCi)dbb0kfLqk*ozf;EHPg>NVwpls#>|-5u)MK3=dY{+eAARE zYriz-b;BVY--)OgkP#%sGxNX`4>*D$-FF%gQEwau`BiBi@YK(<`*%t<%a^xHJr$;-$G%#IEE7BFp>5=6^ z>{5OEWTxm*ZMytey>$S;PoCL_w^$aW_$Gfa)cK(NR7`pZm1far0ko0_uw!?tUAyJ2 zLa9_G=Zc@IN+oBDhgF-BW#SRlPwLUo86`h8r|pUBA*$|GLwlgJj}h2Z@m_q!?pN?u zpz8O^6w#}i_sTCspYrU3t;Zs9KCX`MlQ)PbBGi+rWWQV_4k*uldGnNmu+PmiFh1E%g4pfRLLQ! z#Lq*g4#{dw9LB$fWV;$XBF&+#&&p#Wc>wO1p(9EhkvZza0c7nLQQmXpy&Nh&ET0g` zN2AQ=;{-!d-mwq_3#2%%3XjU^;sv$*sQg}G4t|^)$DTW(n-`%`f$>6=eo37=Di3Pi z=hgb><@z9dZ3e*F@VOr*;_2r>lh5Q#2Vl*le-e4W#LK;M3AwZ2c_H5baGV4%q!Td0 zlTbi&uJF~Oiu+}j{_Eg8{D;V*?ETuRQGA)C>z&uy#7QNN%iO$|p|%su2CsL6&(p!N z(eG?+^0?X^?STzz+e5RD%eM-HE@!jX(dc)yy916*9$!PtCP%;%@VZULg5TZl+2W3_ z#kdp?xH|$4F2=acEgRi|mKeFo=?OU88{NJ@jOFsXodLJQ)9h>vs|CZ(*Loos3796!wkRMHEfG9cs)MG)(~il2{!nhn?`6-CN8S*x?w2d-?hQ-N0g4uF(U@2 zBgSdEMk=*vpK39{!#TTEamR7e9Nk=(?G5aoW zOS?P5jPcq%jh+^yxY6hICNP_vz6P(`AIC+JhNBJFY_qBBp#vw;ioe3egkDO27x%W; z!t;x}$#P+4?S@eCyE3Ub$cDvpZc%h%s)$W`YbtuHD)_giqRgnuY`53zX>E7Uc6t0R zue&5xoLM7_Qf3q*Q6W}@`PU&0LAK>A&M`7PWib?pFJp zJclvUlJnHUBy)C>y=KWu`$BtYRg!t5Ryt5MP~BbGy<}i%cf~*rP}RM-yQ-ohl2sW( z#&+OTt_3Fa3T-g-w`B8Tp=ORXXU?mr>?tmWhqkFBH{a(gy8X;X^>>^3VAb#Mt+~FAUy!Dn>#yez!|b{hOPAqy q$dQ`LRh4LqKdroJSrvS|R=uJc>q-1(NUFw#FlWJn1vi$?E&UH!3X;(P delta 1097 zcmZXTYix^Q6oB9Jp0C@=Y^5SDiEXJF6E+c-jnLU7WEEqW5te3aC{;`+bKj`D8Jjuo zHby5wRLrYnL`K9dD}L~UKO+1f5)qdm=De&SoaD*5U;2Gt-@ULrK5eP+gI``mOSP%q zEJQKEGHFxgjrdZk1!r&!z$yx!L+ic}8nBvL&f*7Hqa%G_t$J_{KSQr|QixGPh#?Fx zNz8C&Jv~2~0$Yg}+31YISlC7(h2LO1HDBg2JO13ZlT0BjfT}-{T~rpraZpXoA)Eudsp}O! zdXE}>1yf8=qh?&kHh@}kw&E1>-M~cHtLkpxJ%BnLTLSy&VJn^hqOzMvu%D*h#^tKw z7KQ;1D0b4M`5@mtg6};I}V`p2-B8F>6{8y}(=|OfzOJqsp z0KFiKl3Kx97zt@@V)V?&ZDZMvWwhwul)!Xm^p|pqABnEjefk5mFx?nkm&h2@;FVVT z;(%B%*H*r=LVRtoi`D!q$9YK&rP6AOV>6E4H_06)y{$)WrP!0BJ~ol=pjURhY;}}V??J$Rq+)q13D)ar7ZWjTuT#&X3}n( z(OU&=#tNCxFMr~c0=xZpGX{9-R=!~-6I~DTv?}OtOn}k$n)GbvVvpPFbCr6X9*1+) zN)Ttm_L{W3QkT!SvS?{3=iJ`;AOjp7knbxga+SM%Ae+?d6l0)_i+aQV#ZE%tTV{yr zn`&f6S+ZI(atn6OepdXWS6bEUdEaSMx)B&3>Yn4so6eVr9ET&HRZQNrNt1<0ev*?l konJxf-TcDI<9W>0>}lDYk80BG{00>{7&5dZ)H diff --git a/pretty_printing.cmi b/pretty_printing.cmi index e77d35563b8d9376bd2bb545af4b1abd6bce82d8..ac021a18e4208d3111e460e03366f5ad0bf9309e 100644 GIT binary patch literal 4337 zcmZu#4RjR69iRU)C#doD`6xUf5DSDP5D1rCN|N?rHwmAqws}Mp4DqtL+e=O^cgNj9 z5|l3iKZ?}_6H!xjAQ;60Mya(Th68O71p%WV6jZR5R>gvfh7_94%=a# zz4clGl*~iP-D+~X(Kbel#k8gwgkpRZ8{0-xgJRWC71xDRNQJ&x4qV~Dw=m`Oh2dag znu9yrw!2mBNajVa%p#{gR9aD)#7b#}UsX5YF{(=Tka4s0#KKs(BoYaMk~ILKpCOut z-WZ;)8a$=+8Y-IVh;o~%7I!2wyx~Y#_o^!D!%8uAS2VRmrG<`)20l_9V_X z(Prl7w&~1II`tC(CEM=wk5Z|`SK037F?Um{K{*IYcM?xE(NX5EZYFb=6O4OfdVN&$ z=~_)l2W32WEa$0;&nTWxaDPY2cOy z7T73eqqvO{tj}!`z{3EiCGjQ`<+48SEoXhs^atb7kk$lBj@8>P)}MX1Atb+z)TpJoy6}7oX3hd?_)){ zts=bfsO}2}f<90tTGgCmDSg9+agIn!9eA0I(Q>nl%T(P3h#6%{;YtZtNO%vM+5S|s zNAgx#*`w70+$+F+tegvgT3}EQ47!xW-&uHY3N6P4LxZfI481X-hy9?qttu8v=lAm* zT`+>BN7(SR6h0u~?<8DfnT%uFTj^l9AVZ2Dl<@ZwKE#cvW{%`N%z1PR5nBK5mA|EI^9@j|#9}fX8T`T#yT>9fq8QA*U#jCx|n=Q?sM2Q&~a3P7j*| zUB9`!SNN=Xh@i(Y2xm`lXOjW#fYe(cbq;lQqadoeGwm+!%om9^dFkl{N}kzx7gW=B zxxhz~xX*I@q^zw~!awk?23d3M0}fv&wDB-8K<~itZ((>34HFkc9}n{= z;>Xa9blK7UUJo^S16tVE@#f0jzGFzb12sANN*l)Nb6OA>Bp zT6JuwB{)U$Uy!haNf)poN(UEUDcU08RtdK;U3OyOyRYym&jIvDk@{Z*cvXNM0=y=` zPClPU0G))i=OJwyozJ6!*w5#)7x6Q6tT~JR0KHuNTuj|Xp7bS_j$h{Zx`dq)?&9;| zQs^y>O@j;Sq--~5$Wsy}MSgpv(i@h8!Aw~h%1z3p_)Q7_Dq)vpG@2V_aHE^0c&~(S zNw|*%7%u6zMKi3}d8bZ3c(c;tk{zl75q}1pqD@1YfIiuQ>od$m@W-UDWGDLG0sRXQ6s#^P7lY z2k50XgJ_Kg9zpOhS->I6qt|16gJc~vU6%@PZ&TM(1o1g{U5mo>o~n|$DpBblt8b>z z=%5=n{i9`tP>AZVTWbR-1!7N8G#RSfd=t-0&U^T3(YN;n_<#qP2M`3$Q1FbT(W(S7 znnzlWA}r7ZzaCB0c_RU@*~vmPCe9($B-QHW5gF_#+f5b6srR7>d5njQ0z|;m37#%$ zzd#V(JY+Lk#6pe@1VbUOUrW$!v&afp!op3o!kw1kj+@n+@Ti1$Xi}_fTcuIgzrS{(?{7i`dA;1{{ z{wct}1o)h{Yb($lKmS*dUrOuWCWxDOyAGqpyj|9PJ5ImUeqpt1Bv0F=M68Z|WtQ>7 z?=|!#U%v7a0DU3CpB3QWGXHa|X)fg+%jtRELjzwgHNNJv|B+;TBiwu|zy$%m;{~1o zSOJqBfk~~@^GQK$Vg>d?fYz`Ii}Xc$*jpco>GVXq;zJdbUs@H@t=gruTA6(>6X-D~ z+VOf`FjnA^wIjxRdudQX}Nd(OO+3VGnXD)L`Y#N{k4Mrs-VZhT4-7%Mt^}Q(c)bB j&6ig`oB3tdg`KT!cb@Pc+-r3iVcK1VJ}&kULskC=PGMar literal 3836 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 diff --git a/pretty_printing.cmo b/pretty_printing.cmo index 0d4d9bee002a6ce832d024c0cfda5f5e06c85bde..805df6bed16acc8b7219937b45fdebff65638a16 100644 GIT binary patch literal 17925 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 x6JNXbvz4z^{qC{5K7H|v&EJ2jK@P?X&P?u#%}B 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 diff --git a/pretty_printing.ml b/pretty_printing.ml index 47ed0ae..863cc86 100644 --- a/pretty_printing.ml +++ b/pretty_printing.ml @@ -337,10 +337,75 @@ let fancy_dfs gr coords px bcls = (* --------------------------------------| TESTS |-------------------------------------- *) + +(* let gr = [|[|3; 5; 7|]; [|0|]; [|1; 7; 8|]; [|2; 6|]; [|0; 1; 3|]; [|6; 7|]; [|0; 1; 2|]; [|8|]; [|0; 7; 6|]; [||]; [||]; [|9|]|] ;; let (coords, map, blank_map, color_map, blank_color_map) = extremely_fancy_graph_printing gr 46 3 "SHOW" ;; fancy_dfs gr coords map blank_color_map ;; +*) -(* compilation command : ocamlfind ocamlc -linkpkg -package unix pretty_printing.ml *) \ No newline at end of file +(* --------------------------------------------------------------------------------------------------------- *) +(* --------------------------------------------------------------------------------------------------------- *) +(* --------------------------------------------------------------------------------------------------------- *) +(* --------------------------------------------------------------------------------------------------------- *) +open Graphics ;; + +type 'a tree = Leaf of 'a | Node of 'a * 'a tree * 'a tree ;; + +(* +STRUCT : (digit, xcoord, ycoord) +*) + +let rec pw x n = match n with + | 0 -> 1 + | 1 -> x + | k when k mod 2 = 0 -> let res = pw x (n/2) in res*res + | k -> let res = pw x (n/2) in res*res*x ;; + +let rec depth_of_tree t = match t with + | Leaf _ -> 1 + | Node (_, g, d) -> 1 + max (depth_of_tree g) (depth_of_tree d) ;; + +let fill_data te ystep sx sy r = + let depth = depth_of_tree te in + let res = Array.make (depth+1) [] in + let rec aux t cur_x cur_d spacing = match t with + | Node (x, g, d) -> begin + aux g (cur_x - spacing) (cur_d+1) (spacing/2); + res.(cur_d) <- ((x, (cur_x, sy - r - ystep * cur_d)))::(res.(cur_d)); + aux d (cur_x + spacing) (cur_d+1) (spacing/2); + end + | Leaf x -> begin + res.(cur_d) <- ((x, (cur_x, sy - r - ystep * cur_d)))::(res.(cur_d)); + end + in aux te (sx/2) 0 (r/2 + r * ((pw 2 (depth-1)) - 1)); res ;; + +let rec draw_list l d r = match l with + | [] -> () + | h::t -> draw_circle (fst (snd h)) (snd (snd h)) r; draw_list t d r ;; + +let even_more_pretty_printing t r ystep = + open_graph " 1600x800" ; + let sx = Graphics.size_x () in + let sy = Graphics.size_y () in + + let graphdata = fill_data t ystep sx sy r in + + print_int 3; + + for dpth = 0 to (Array.length graphdata -1) do + draw_list graphdata.(dpth) dpth r + done; + + ignore (Sys.command "sleep 1"); + + close_graph () ; + () ;; + +even_more_pretty_printing (Node (2, Node (3, Leaf 1, Leaf 6), Node (9, Leaf 0, Node (4, Leaf 0, Node (2, Leaf 5, Leaf 2))))) 25 100 ; + +(* compilation command : ocamlfind ocamlc -linkpkg -package unix -linkpkg -package graphics pretty_printing.ml *) +print_int 0 ;; +print_char '\n' ;; \ No newline at end of file