(* Afficher la fenêtre graphique *) let _ = Graphics.open_graph " 512x512" ;; (**************************************) (* Déclarations des types de l'énoncé *) (**************************************) type couleur = Blanc | Noir ;; type arbre = | Feuille of couleur | Noeud of arbre * arbre * arbre * arbre ;; type image = couleur array array ;; (**************) (* Question 1 *) (**************) let rec compte_feuilles a = 0 (* A COMPLETER *) ;; (**************) (* Question 2 *) (**************) let image_vers_arbre k img = Feuille Blanc (* A COMPLETER *) ;; (* Test de image_vers_arbre *) let img = [| [| Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ; Noir ;Noir ;Noir ;Noir ;Blanc ;Blanc ;Blanc ;Blanc ; |] ; [| Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ; Noir ;Noir ;Noir ;Noir ;Blanc ;Blanc ;Blanc ;Blanc ; |] ; [| Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ; Noir ;Noir ;Noir ;Noir; Blanc ;Blanc ;Blanc ;Blanc ; |] ; [| Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ; Noir ;Noir ;Noir ;Noir;Blanc ;Blanc ;Blanc ;Blanc ; |] ; [| Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ; Blanc ;Blanc ;Blanc ;Blanc ;Blanc ;Blanc ;Blanc ;Blanc ; |] ; [| Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ; Blanc ;Blanc ;Blanc ;Blanc ;Blanc ;Blanc ;Blanc ;Blanc ; |] ; [| Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ; Blanc ;Blanc ;Blanc ;Blanc ;Blanc ;Blanc ;Blanc ;Blanc ; |] ; [| Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ; Blanc ;Blanc ;Blanc ;Blanc ;Blanc ;Blanc ;Blanc ;Blanc ; |] ; [| Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ; Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ; |] ; [| Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ; Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ; |] ; [| Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ; Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ; |] ; [| Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ; Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ; |] ; [| Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ; Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ; |] ; [| Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ; Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ; |] ; [| Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ; Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ; |] ; [| Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ; Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ;Noir ; |] ; |] ;; let a = image_vers_arbre (Array.length img) img ;; let _ = Printf.printf "Devrait être 7: %d\n" (compte_feuilles a) ; flush stdout ;; let dessine_arbre k a = () ;; (**************) (* Question 3 *) (**************) (* TROIS FONCTIONS A COMPLETER *) let rec inverse a = a ;; let rec rotate a = a ;; let rec antirotate a = a ;; (* Test des rotations *) let rec zyva a = Graphics.clear_graph () ; dessine_arbre 512 a ; let rec do_rec () = let c = Graphics.read_key () in if c = 'n' then zyva (rotate a) else if c = 'p' then zyva (antirotate a) else if c = 'i' then zyva (inverse a) else if c = 'q' then () else do_rec () in do_rec () ;; let _ = zyva a ;; (**************) (* Question 4 *) (**************) let rec fractale n = Feuille Blanc (* ICI !!!!!! *) ;; let rec zyva i = dessine_arbre 512 (fractale i) ; let rec do_rec () = let c = Graphics.read_key () in if c = 'n' && i < 4 then begin Graphics.clear_graph () ; zyva (i+1) end else if c = 'p' && i > 0 then begin Graphics.clear_graph () ; zyva (i-1) end else if c = 'q' then () else do_rec () in do_rec () ;; let _ = zyva 0 ;; (**************) (* Question 5 *) (**************) type bit = Zero | Un ;; (* QUATRE FONCTIONS GROSSIEREMENT FAUSSES *) let arbre_vers_liste a = [] ;; let list_vers_arbre bits = Feuille Blanc ;; let ecrire_arbre name a = () ;; let lire_arbre name = Feuille Blanc ;; let zyva5 a = ecrire_arbre "f4.quad" a ; let aa = lire_arbre "f4.quad" in if a <> aa then begin Printf.eprintf "Malaise dans sauvegarde et lecture\n" ; exit 1 end ;; let _ = zyva5 (fractale 4) ;; let _ = exit 0 ;;