From 8351fef480f0a98d421d9b464b338e406116b051 Mon Sep 17 00:00:00 2001 From: Alexandre Date: Sat, 25 May 2024 15:53:25 +0200 Subject: [PATCH] Fixed critical bugs + DFS now works on all trees --- a.out | Bin 280542 -> 281326 bytes pretty_printing.cmi | Bin 7428 -> 7771 bytes pretty_printing.cmo | Bin 24918 -> 26010 bytes pretty_printing.ml | 53 +++++++++++++++++++++++++++++--------------- 4 files changed, 35 insertions(+), 18 deletions(-) diff --git a/a.out b/a.out index 65a0cac49ef68d94b677849265aae39338a4c92a..a628ac9496000902870a531becdc966f1c742e74 100755 GIT binary patch delta 1356 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 literal 7428 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 YHsXML+j?_QAxs99LVha!>Etfv|G&LCr~m)} diff --git a/pretty_printing.cmo b/pretty_printing.cmo index 0714f1d527c6d046fe9824cbc49926d81e7dd469..23be77a4f1ae13dac677d4df422b941bde2e2467 100644 GIT binary patch delta 7574 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 X6%5e356PbnY}1-Z{sVo@`ThS5oe0o& delta 6476 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 D0xG~m diff --git a/pretty_printing.ml b/pretty_printing.ml index 5bd08db..f75387c 100644 --- a/pretty_printing.ml +++ b/pretty_printing.ml @@ -399,7 +399,7 @@ let draw_integer x0 y n0 r = let len = r/3 in let offset = size*(len/2) in for i = 0 to size do - let x = -(1 - delta size 0)*4 + x0 - offset + i * (len+8) in + 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 draw_poly_line [|(x-len/2, y+len); (x-len/2, y)|]; @@ -478,25 +478,38 @@ let even_more_pretty_printing t r ystep skip = graphdata ;; -let generate_full_graph d = +let generate_full_tree d = let rec aux n = match n with - | 0 -> Leaf (Random.int 99) + | 0 -> Leaf (Random.int 1000) | k -> begin - Node (Random.int 99, aux (n-1), aux (n-1)) + Node (Random.int 1000, aux (n-1), aux (n-1)) end in aux d ;; +let generate_some_tree maxd nodechance leafchance = + let rec aux n = match n with + | 0 -> if (Random.int 101 < leafchance) then Leaf (Random.int 100) else Empty + | k -> begin + match Random.int 101 with + | k when k <= nodechance -> Node (Random.int 1000, aux (n-1), aux (n-1)) + | k -> if (Random.int 101 < leafchance) then Leaf (Random.int 1000) else Empty + end + in aux maxd ;; + 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 = + let d = depth_of_tree t in + let count_per_depth = Array.make d 0 in + let rec aux tr dpth = match tr with | Empty -> () | Leaf _ -> begin - let data = nth graphdata.(dpth) os in + let data = nth graphdata.(dpth) (List.length graphdata.(dpth) - count_per_depth.(dpth) - 1) in + count_per_depth.(dpth) <- count_per_depth.(dpth) + 1; set_color (rgb rfound gfound bfound); draw_circle (fst (snd data)) (snd (snd data)) r; Unix.sleepf tts; @@ -504,17 +517,18 @@ let even_more_fancy_dfs_prefixe t graphdata r tts rfound gfound bfound rmark gma draw_circle (fst (snd data)) (snd (snd data)) r; end | Node (_, g, d) -> begin - let data = nth graphdata.(dpth) os in + let data = nth graphdata.(dpth) (List.length graphdata.(dpth) - count_per_depth.(dpth) - 1) in + count_per_depth.(dpth) <- count_per_depth.(dpth) + 1; 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); + aux g (dpth+1); + aux d (dpth+1); end - in aux t 0 0 ;; + in aux t 0 ;; let even_more_fancy_dfs_infixe t graphdata r tts rfound gfound bfound rmark gmark bmark = @@ -522,7 +536,7 @@ let even_more_fancy_dfs_infixe t graphdata r tts rfound gfound bfound rmark gmar match tr with | Empty -> () | Leaf _ -> begin - let data = nth graphdata.(dpth) os in + let data = nth graphdata.(dpth) (List.length graphdata.(dpth) - os - 1) in set_color (rgb rfound gfound bfound); draw_circle (fst (snd data)) (snd (snd data)) r; Unix.sleepf tts; @@ -532,13 +546,14 @@ let even_more_fancy_dfs_infixe t graphdata r tts rfound gfound bfound rmark gmar | Node (_, g, d) -> begin aux g (dpth+1) (2*os); - let data = nth graphdata.(dpth) os in + let data = nth graphdata.(dpth) (List.length graphdata.(dpth) - os - 1) 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); + + aux d (dpth+1) (2*os + 1); end in aux t 0 0 ;; @@ -548,7 +563,7 @@ let even_more_fancy_dfs_postfixe t graphdata r tts rfound gfound bfound rmark gm match tr with | Empty -> () | Leaf _ -> begin - let data = nth graphdata.(dpth) os in + let data = nth graphdata.(dpth) (List.length graphdata.(dpth) - os - 1) in set_color (rgb rfound gfound bfound); draw_circle (fst (snd data)) (snd (snd data)) r; Unix.sleepf tts; @@ -557,9 +572,9 @@ let even_more_fancy_dfs_postfixe t graphdata r tts rfound gfound bfound rmark gm end | Node (_, g, d) -> begin aux g (dpth+1) (2*os); - aux g (dpth+1) (2*os + 1); + aux d (dpth+1) (2*os + 1); - let data = nth graphdata.(dpth) os in + let data = nth graphdata.(dpth) (List.length graphdata.(dpth) - os - 1) in set_color (rgb rfound gfound bfound); draw_circle (fst (snd data)) (snd (snd data)) r; Unix.sleepf tts; @@ -574,9 +589,11 @@ Random.self_init ;; open_graph " 1800x800" ;; set_window_title "Trees" ;; -let gdata = even_more_pretty_printing (generate_full_graph 4) 40 150 false ;; +let tt = generate_some_tree 4 100 75 ;; -even_more_fancy_dfs_prefixe (generate_full_graph 4) gdata 40 0.2 255 255 32 32 32 255 ;; +let gdata = even_more_pretty_printing tt 40 150 false ;; + +even_more_fancy_dfs_prefixe tt gdata 40 0.2 255 255 32 32 32 255 ;; close_graph () ;;