let trace_surface f haut larg =
for y = 1 to haut do
for x = 1 to larg do
print_string (if f x y then "#" else " ")
done ;
print_endline ""
done
let tracer_ligne long = trace_surface (fun _ _ -> true) 1 long
let tracer_rectangle haut larg = trace_surface (fun x y -> x = 1 || y = 1 || x = larg || y = haut) haut larg
let tracer_quadrillage = trace_surface (fun x y -> x mod 2 = 1 || y mod 2 = 1)
let tracer_damier = trace_surface (fun x y -> (x + y) mod 2 = 0)
let tracer_gros_damier = trace_surface (fun x y -> ((x-1) / 2 + (y-1) / 2) mod 2 = 0)
let rec space n = if n = 0 then () else (print_endline "" ; space (n-1))
let () =
tracer_ligne 5 ;
space 3 ;
tracer_rectangle 12 8 ;
space 3 ;
tracer_quadrillage 11 15 ;
space 3 ;
tracer_damier 9 11 ;
space 3 ;
tracer_gros_damier 12 18 ;
()