From fab702b4a55297b3d2433d959220c24f73ac12cb Mon Sep 17 00:00:00 2001 From: Alexandre Date: Tue, 4 Jun 2024 18:49:37 +0200 Subject: [PATCH] Weighted graphs can now be displayed --- a.out | Bin 317685 -> 320633 bytes graphs.cmi | Bin 3510 -> 3590 bytes graphs.cmo | Bin 48380 -> 52374 bytes graphs.ml | 129 ++++++++++++++++++++++++++++++++++++++++++++++------- 4 files changed, 113 insertions(+), 16 deletions(-) diff --git a/a.out b/a.out index 6f84fb81b05527e2426e7019ebbd86ceb4e0ff29..eb47f976b871b501c02a3ef34204628ad5fe006a 100755 GIT binary patch delta 2895 zcmb_eT})g>6yDi6TXta=c6-6qEG>&A2DJzTqhN}$T@tMi3W|TRwcsvPWZjmg=}$tG zR!oddjGGM}AKGZ+gFfg33A*vYqz}gUAc-UmtuaJJ6O4(9Mjim|^?dYRxUfI9=qBIZ znYlA(&i9=&=gz{ovG|2CGO9-16Pji`x7_M-xiY=SjBNFcKAPk&mz6jB)?P{kcw|}A z{(!tr3bqIi3x=$|N1o+YyF{MOcO?A^!Qh7RsPtjWw4PBO|4|#*Is}IV7%LUPLd-RGg>DFd`+mVrx69Sf zz29piR3lxui@jjsIX=Hf87c%XcC^6;)&~VnyATjQ#01zYB8Up$TeqNtUzpbsk8Iudo|%UY)Z?GWIOLIOZe zIA{xTZPL$J_Cb2UNxA_UVB3P7Vnp}kCF<#yWr0lXu))cMOx9x5+`kf29GE+b7FQSQORf-xu+eJZJkG#pStxz(6yO(==an@2) zSt#wD88GN1-T(tQN_N_VINC_}jj5hL19&~zJNHq&4|xU46+AVk!&c5)jMc9?;>d;c zBh+GZKO;+=2cZK8p{*EqXC<&>wps~T&FXL-Nvco@64qX@fPzO(S!&_Dvl`g8SMz~S zCCKm;DFEwL>0Z=LMO8^Zx+cTRmTPbT1@T_U&`?N*y!D_c^#hiDo4UtIy((`_SfiUi z33AH7wfIUF-2eZC9Yq=8+FaPTIJxJ9-M0Pj!|tg2c_rxTp+TGX^~D(+aX6eGK0i;T zs9=h3jB|;TYtG3B*Xum_Yh(+b`ZwqGPS58{rWwzKerR-mxWuVteVcuacuzLXy+)|l zIsGi%y;3C*R{zzT!|2=YV5Vu9P*tnhJFDx8&zOkI2dOhDf8WLBYg{+xu2dEH+J`xs zAV0sMsNMrvef)`{Mt(IxP3kB&f2&*6)BH<$OeRQaKn@oC2fIJ8bwhM3pfM%_N zNp-bfEA47QiYGsChdG(n-ViG3NdZnW)`U3_7Y`=-#IN}?+V8tv2DM<4zwV>BdNJlz2gJ33gfQniO-p}1s5?fFvI}0F#<6k5DQFClwy(I{@??11Q%<<-~a!U zCksB-XY`n!_<>n?dc$vK3&zFM&pu|>X6**5j+tKgklA?pfj`VS(*+(e%S@L6vDW0V z2rvpvKbXg&KHcFj^AX1K>4x{2jTz&oKg?%wW@MSJTELP&xuH&gBOPeQe;}Cr;G)R% z3A314IJJQyAh*1jZdu5Z%(!p+Tp-1@ouh{304vj~o6}D8#nAdd4CKhSi-@j3{?E><_eugRq1_i_NFaQ7Z18G4du?=tk{}-6P(1uZ% zQ|R{p|7Jj`UDF+#S;VI=X=0I3&N_Uz# diff --git a/graphs.cmi b/graphs.cmi index 441676d08d455fd69082fabc05f4b61dcb4b6e4a..825d4a29f3184c6a8869c60a1922c82a040c6d72 100644 GIT binary patch literal 3590 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 diff --git a/graphs.cmo b/graphs.cmo index f1e8a146e38b6199ba1daa9a744d716cbd17bc40..816da52567851677cf3e03fcfbd9aa3ab082e431 100644 GIT binary patch delta 6613 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 Xv(c$8Ff`jr;*Si?x`H^i5Wjx_ix1oI diff --git a/graphs.ml b/graphs.ml index a8bfb8e..2ae1e0f 100644 --- a/graphs.ml +++ b/graphs.ml @@ -5,7 +5,7 @@ open Graphics ;; - main function : 68 - 120 - type 2 printing: 122 - 270 - DFS : 275 - 530 (yes the function is that big) - +- BFS : 532 - 727 @@ -31,7 +31,7 @@ let draw_integer x0 y n0 r = let n = ref n0 in let size = ln10 n0 in let len = r/3 in - let offset = size*(len/2) in + let offset = (size-1)*(len/2) in for i = 0 to size do let x = x0 - (-(1 - delta size 0)*8 - offset + i * (len+8)) in if Array.mem (!n mod 10) [|0; 4; 5; 6; 7; 8; 9|] then @@ -134,7 +134,12 @@ let generate_type2_graph w h freq inf sup = let weighted_d100 i = let res = Random.int 100 in - if res <= freq then res else (-1) + if res <= freq then + try + (inf + Random.int (sup-inf)) + with + | Invalid_argument _ -> inf + else (-1) in let gr = {width = w ; height = h ; g = Array.make w [||]} in @@ -147,7 +152,7 @@ let generate_type2_graph w h freq inf sup = gr ;; -let another_type_of_graph_printing (gr : type2graph) r d = +let another_type_of_graph_printing (gr : type2graph) r d is_weighted = let colors = Array.make_matrix gr.width gr.height (rgb 0 0 0) in for i = 0 to gr.width -1 do for j = 0 to gr.height -1 do @@ -214,41 +219,133 @@ let another_type_of_graph_printing (gr : type2graph) r d = done done; + let roff = (6*r)/5 in + let roff2 = (7*r)/5 in + let rsize = (3*r)/4 in + let wcolor = rgb 32 255 32 in + set_line_width 8; for i = 0 to gr.width -1 do for j = 0 to gr.height -1 do - set_color colors.(i).(j) ; let node_xy = ((r + (2*r + d)*i), (r + (2*r + d)*j)) in if (i > 0 && j > 0) && gr.g.(i).(j).edges.(0) <> (-1) then begin (* SO *) - draw_poly_line [|node_xy; (2 * (fst node_xy) + r + (2*r + d)*(i-1))/3, (2 * (snd node_xy) + r + (2*r + d)*(j-1))/3|] ; + if is_weighted then begin + set_color white; + fill_circle (fst node_xy - roff) (snd node_xy - roff) (3*rsize/4) ; + set_color wcolor; + set_line_width 3; + draw_integer (fst node_xy - roff) (snd node_xy - roff) gr.g.(i).(j).edges.(0) rsize; + end + else begin + set_line_width 8; + set_color colors.(i).(j) ; + draw_poly_line [|node_xy; (2 * (fst node_xy) + r + (2*r + d)*(i-1))/3, (2 * (snd node_xy) + r + (2*r + d)*(j-1))/3|] ; + end end; if (i > 0) && gr.g.(i).(j).edges.(1) <> (-1) then begin (* O *) - draw_poly_line [|node_xy; (2 * (fst node_xy) + r + (2*r + d)*(i-1))/3, (2 * (snd node_xy) + r + (2*r + d)*j)/3|] ; + if is_weighted then begin + set_color white; + fill_circle (fst node_xy - roff2) (snd node_xy) (3*rsize/4) ; + set_color wcolor; + set_line_width 3; + draw_integer (fst node_xy - roff2) (snd node_xy) gr.g.(i).(j).edges.(1) rsize; + end + else begin + set_line_width 8; + set_color colors.(i).(j) ; + draw_poly_line [|node_xy; (2 * (fst node_xy) + r + (2*r + d)*(i-1))/3, (2 * (snd node_xy) + r + (2*r + d)*j)/3|] ; + end end; if (i > 0 && j < gr.height -1) && gr.g.(i).(j).edges.(2) <> (-1) then begin (* NO *) - draw_poly_line [|node_xy; (2 * (fst node_xy) + r + (2*r + d)*(i-1))/3, (2 * (snd node_xy) + r + (2*r + d)*(j+1))/3|] ; + if is_weighted then begin + set_color white; + fill_circle (fst node_xy - roff) (snd node_xy + roff) (3*rsize/4) ; + set_color wcolor; + set_line_width 3; + draw_integer (fst node_xy - roff) (snd node_xy + roff) gr.g.(i).(j).edges.(2) rsize; + end + else begin + set_line_width 8; + set_color colors.(i).(j) ; + draw_poly_line [|node_xy; (2 * (fst node_xy) + r + (2*r + d)*(i-1))/3, (2 * (snd node_xy) + r + (2*r + d)*(j+1))/3|] ; + end end; if (j < gr.height -1) && gr.g.(i).(j).edges.(3) <> (-1) then begin (* N *) - draw_poly_line [|node_xy; (2 * (fst node_xy) + r + (2*r + d)*i)/3, (2 * (snd node_xy) + r + (2*r + d)*(j+1))/3|] ; + if is_weighted then begin + set_color white; + fill_circle (fst node_xy) (snd node_xy + roff2) (3*rsize/4) ; + set_color wcolor; + set_line_width 3; + draw_integer (fst node_xy) (snd node_xy + roff2) gr.g.(i).(j).edges.(3) rsize; + end + else begin + set_line_width 8; + set_color colors.(i).(j) ; + draw_poly_line [|node_xy; (2 * (fst node_xy) + r + (2*r + d)*i)/3, (2 * (snd node_xy) + r + (2*r + d)*(j+1))/3|] ; + end end; if (i < gr.width-1 && j < gr.height -1) && gr.g.(i).(j).edges.(4) <> (-1) then begin (* NE *) - draw_poly_line [|node_xy; (2 * (fst node_xy) + r + (2*r + d)*(i+1))/3, (2 * (snd node_xy) + r + (2*r + d)*(j+1))/3|] ; + if is_weighted then begin + set_color white; + fill_circle (fst node_xy + roff) (snd node_xy + roff) (3*rsize/4) ; + set_color wcolor; + set_line_width 3; + draw_integer (fst node_xy + roff) (snd node_xy + roff) gr.g.(i).(j).edges.(4) rsize; + end + else begin + set_line_width 8; + set_color colors.(i).(j) ; + draw_poly_line [|node_xy; (2 * (fst node_xy) + r + (2*r + d)*(i+1))/3, (2 * (snd node_xy) + r + (2*r + d)*(j+1))/3|] ; + end end; if (i < gr.width-1) && gr.g.(i).(j).edges.(5) <> (-1) then begin (* E *) - draw_poly_line [|node_xy; (2 * (fst node_xy) + r + (2*r + d)*(i+1))/3, (2 * (snd node_xy) + r + (2*r + d)*j)/3|] ; + if is_weighted then begin + set_color white; + fill_circle (fst node_xy + roff2) (snd node_xy) (3*rsize/4) ; + set_color wcolor; + set_line_width 3; + draw_integer (fst node_xy + roff2) (snd node_xy) gr.g.(i).(j).edges.(5) rsize; + end + else begin + set_line_width 8; + set_color colors.(i).(j) ; + draw_poly_line [|node_xy; (2 * (fst node_xy) + r + (2*r + d)*(i+1))/3, (2 * (snd node_xy) + r + (2*r + d)*j)/3|] ; + end end; if (i < gr.width-1 && j > 0) && gr.g.(i).(j).edges.(6) <> (-1) then begin (* SE *) - draw_poly_line [|node_xy; (2 * (fst node_xy) + r + (2*r + d)*(i+1))/3, (2 * (snd node_xy) + r + (2*r + d)*(j-1))/3|] ; + if is_weighted then begin + set_color white; + fill_circle (fst node_xy + roff) (snd node_xy - roff) (3*rsize/4) ; + set_color wcolor; + set_line_width 3; + draw_integer (fst node_xy + roff) (snd node_xy - roff) gr.g.(i).(j).edges.(6) rsize; + end + else begin + set_line_width 8; + set_color colors.(i).(j) ; + draw_poly_line [|node_xy; (2 * (fst node_xy) + r + (2*r + d)*(i+1))/3, (2 * (snd node_xy) + r + (2*r + d)*(j-1))/3|] ; + end end; if (j > 0) && gr.g.(i).(j).edges.(7) <> (-1) then begin (* S *) - draw_poly_line [|node_xy; (2 * (fst node_xy) + r + (2*r + d)*i)/3, (2 * (snd node_xy) + r + (2*r + d)*(j-1))/3|] ; + if is_weighted then begin + set_color white; + fill_circle (fst node_xy) (snd node_xy - roff2) (3*rsize/4) ; + set_color wcolor; + set_line_width 3; + draw_integer (fst node_xy) (snd node_xy - roff2) gr.g.(i).(j).edges.(7) rsize; + end + else begin + set_line_width 8; + set_color colors.(i).(j) ; + draw_poly_line [|node_xy; (2 * (fst node_xy) + r + (2*r + d)*i)/3, (2 * (snd node_xy) + r + (2*r + d)*(j-1))/3|] ; + end end; done @@ -735,11 +832,11 @@ let another_type_of_bfs (gr : type2graph) r d = open_graph " 1200x800" ;; set_window_title "Graphs" ;; -let type2 = generate_type2_graph 8 6 40 1 1 ;; +let type2 = generate_type2_graph 7 5 40 1 10 ;; -(*another_type_of_graph_printing type2 35 75 ;;*) +another_type_of_graph_printing type2 35 100 true ;; (*another_type_of_dfs type2 35 75 ;;*) -another_type_of_bfs type2 35 75 ;; +(*another_type_of_bfs type2 35 75 ;;*) close_graph () ;;