exception Tuile_inexistante let print_tuile (x,y) n =let (x,y) = (x*4,y*4) in match n with | 1 -> Printf.printf "\\begin{scope}[shift={(%d,%d)}] \\fill[bGcarreUpRight] (0,0) rectangle (4,4);\\fill[carreUpRight] (0,0) rectangle (4,4); \\draw (0,0) rectangle (4,4); \\end{scope} " x y | 2 -> Printf.printf "\\begin{scope}[shift={(%d,%d)}] \\fill[bGcarreUpLeft] (0,0) rectangle (4,4);\\fill[carreUpLeft] (0,0) rectangle (4,4); \\draw (0,0) rectangle (4,4); \\end{scope} " x y | 3 -> Printf.printf "\\begin{scope}[shift={(%d,%d)}] \\fill[bGcarreUpLeft] (0,0) rectangle (2,4);\\fill[carreUpLeft] (0,0) rectangle (2,4); \\fill[bGcarreUpRight] (2,0) rectangle (4,4);\\fill[carreUpRight] (2,0) rectangle (4,4); \\fill[bGsignalCarres] (1.8,0) rectangle (2.2,4);\\fill[signalCarres] (1.8,0) rectangle (2.2,4); \\draw (0,0) rectangle (4,4); \\end{scope} " x y | 4 -> Printf.printf "\\begin{scope}[shift={(%d,%d)}] \\fill[bGcarreDownRight] (0,0) -- (4,0) -- (4,4) -- cycle;\\fill[carreDownRight] (0,0) -- (4,0) -- (4,4) -- cycle; \\fill[bGcarreUpRight] (0,0) -- (0,4) -- (4,4) -- cycle;\\fill[carreUpRight] (0,0) -- (0,4) -- (4,4) -- cycle; \\draw (0,0) rectangle (4,4); \\end{scope} " x y | 5 -> Printf.printf "\\begin{scope}[shift={(%d,%d)}] \\fill[bGcarreDownRight] (0,0) -- (2,0) -- (2,4) -- (0,4) -- cycle;\\fill[carreDownRight] (0,0) -- (2,0) -- (2,4) -- (0,4) -- cycle; \\fill[bGcarreUpRight] (0,0) -- (2,2) -- (0,2) -- cycle;\\fill[carreUpRight] (0,0) -- (2,2) -- (0,2) -- cycle; \\fill[bGcarreUpLeft] (2,0) rectangle (4,4);\\fill[carreUpLeft] (2,0) rectangle (4,4); \\fill[bGcarreBorder] (1.8,0) rectangle (2.2,4) (0,1.8) rectangle (2,2.2);\\fill[carreBorder] (1.8,0) rectangle (2.2,4) (0,1.8) rectangle (2,2.2); \\draw (0,0) rectangle (4,4); \\end{scope} " x y | 6 -> Printf.printf "\\begin{scope}[shift={(%d,%d)}] \\fill[bGcarreDownRight] (0,0) -- (2,0) -- (2,4) -- (0,4) -- cycle;\\fill[carreDownRight] (0,0) -- (2,0) -- (2,4) -- (0,4) -- cycle; \\fill[bGcarreUpLeft] (2,0) rectangle (4,4);\\fill[carreUpLeft] (2,0) rectangle (4,4); \\fill[bGcarreDownLeft] (2,2) -- (4,4) -- (4,2) -- cycle;\\fill[carreDownLeft] (2,2) -- (4,4) -- (4,2) -- cycle; \\fill[bGcarreBorder] (1.8,0) rectangle (2.2,4) (4,2.2) rectangle (2,1.8);\\fill[carreBorder] (1.8,0) rectangle (2.2,4) (4,2.2) rectangle (2,1.8); \\draw (0,0) rectangle (4,4); \\end{scope} " x y | 7 -> Printf.printf "\\begin{scope}[shift={(%d,%d)}] \\fill[bGcarreDownRight] (0,0) rectangle (2,2);\\fill[carreDownRight] (0,0) rectangle (2,2); \\fill[bGcarreUpLeft] (2,0) rectangle (4,4);\\fill[carreUpLeft] (2,0) rectangle (4,4); \\fill[bGcarreUpRight] (0,0) -- (2,2) -- (0,2) -- cycle;\\fill[carreUpRight] (0,0) -- (2,2) -- (0,2) -- cycle; \\fill[bGsignalCarres] (0,2.8) rectangle (2,3.2);\\fill[signalCarres] (0,2.8) rectangle (2,3.2); \\fill[bGcarreBorder] (0,1.8) rectangle (2.2,2.2);\\fill[carreBorder] (0,1.8) rectangle (2.2,2.2); \\fill[bGcarreBorder] (1.8,0) rectangle (2.2,4);\\fill[carreBorder] (1.8,0) rectangle (2.2,4); \\fill[bGsignalBas] (0.8,2) rectangle (1.2,0);\\fill[signalBas] (0.8,2) rectangle (1.2,0); \\fill[bGsignalBas] (0,1.8) rectangle (3.2,2.2) rectangle (2.8,4);\\fill[signalBas] (0,1.8) rectangle (3.2,2.2) rectangle (2.8,4); \\draw (0,0) rectangle (4,4); \\end{scope} " x y | 8 -> Printf.printf "\\begin{scope}[shift={(%d,%d)}] \\fill[bGcarreDownRight] (0,0) rectangle (4,4);\\fill[carreDownRight] (0,0) rectangle (4,4); \\draw (0,0) rectangle (4,4); \\end{scope} " x y | 9 -> Printf.printf "\\begin{scope}[shift={(%d,%d)}] \\fill[bGcarreDownLeft] (0,0) rectangle (4,4);\\fill[carreDownLeft] (0,0) rectangle (4,4); \\draw (0,0) rectangle (4,4); \\end{scope} " x y | 10 -> Printf.printf "\\begin{scope}[shift={(%d,%d)}] \\fill[bGcarreDownLeft] (0,0) rectangle (2,4);\\fill[carreDownLeft] (0,0) rectangle (2,4); \\fill[bGcarreDownRight] (2,0) rectangle (4,4);\\fill[carreDownRight] (2,0) rectangle (4,4); \\fill[bGsignalCarres] (1.8,0) rectangle (2.2,4);\\fill[signalCarres] (1.8,0) rectangle (2.2,4); \\draw (0,0) rectangle (4,4); \\end{scope} " x y | 11 -> Printf.printf "\\begin{scope}[shift={(%d,%d)}] \\fill[bGcarreDownLeft] (0,0) -- (4,0) -- (4,4) -- cycle;\\fill[carreDownLeft] (0,0) -- (4,0) -- (4,4) -- cycle; \\fill[bGcarreUpLeft] (0,0) -- (0,4) -- (4,4) -- cycle;\\fill[carreUpLeft] (0,0) -- (0,4) -- (4,4) -- cycle; \\draw (0,0) rectangle (4,4); \\end{scope} " x y | 12 -> Printf.printf "\\begin{scope}[shift={(%d,%d)}] \\fill[bGcarreDownLeft] (0,0) -- (2,0) -- (2,2) -- cycle;\\fill[carreDownLeft] (0,0) -- (2,0) -- (2,2) -- cycle; \\fill[bGcarreDownRight] (2,0) -- (4,0) -- (4,4) -- (2,2) -- cycle;\\fill[carreDownRight] (2,0) -- (4,0) -- (4,4) -- (2,2) -- cycle; \\fill[bGcarreUpLeft] (0,0) -- (2,2) -- (2,4) -- (0,4) -- cycle;\\fill[carreUpLeft] (0,0) -- (2,2) -- (2,4) -- (0,4) -- cycle; \\fill[bGcarreUpRight] (2,2) -- (4,4) -- (2,4) -- cycle;\\fill[carreUpRight] (2,2) -- (4,4) -- (2,4) -- cycle; \\fill[bGsignalCarres] (1.8,0) rectangle (2.2,4);\\fill[signalCarres] (1.8,0) rectangle (2.2,4); \\draw (0,0) rectangle (4,4); \\end{scope} " x y | 13 -> Printf.printf "\\begin{scope}[shift={(%d,%d)}] \\fill[bGcarreUpLeft] (0,0) rectangle (4,2);\\fill[carreUpLeft] (0,0) rectangle (4,2); \\fill[bGcarreBorder] (0,1.8) rectangle (4,2.2);\\fill[carreBorder] (0,1.8) rectangle (4,2.2); \\draw (0,0) rectangle (4,4); \\end{scope} " x y | 14 -> Printf.printf "\\begin{scope}[shift={(%d,%d)}] \\fill[bGcarreUpLeft] (0,0) rectangle (2,2);\\fill[carreUpLeft] (0,0) rectangle (2,2); \\fill[bGcarreUpRight] (2,0) rectangle (4,2);\\fill[carreUpRight] (2,0) rectangle (4,2); \\fill[bGsignalBas] (0,1.8) rectangle (4,2.2);\\fill[signalBas] (0,1.8) rectangle (4,2.2); \\fill[bGsignalCarres] (1.8,0) rectangle (2.2,3.2) rectangle (4,2.8);\\fill[signalCarres] (1.8,0) rectangle (2.2,3.2) rectangle (4,2.8); \\draw (0,0) rectangle (4,4); \\end{scope} " x y | 15 -> Printf.printf "\\begin{scope}[shift={(%d,%d)}] \\fill[bGcarreDownLeft] (0,2) rectangle (4,4);\\fill[carreDownLeft] (0,2) rectangle (4,4); \\fill[bGcarreUpLeft] (0,0) rectangle (4,2);\\fill[carreUpLeft] (0,0) rectangle (4,2); \\fill[bGcarreBorder] (0,1.8) rectangle (4,2.2);\\fill[carreBorder] (0,1.8) rectangle (4,2.2); \\draw (0,0) rectangle (4,4); \\end{scope} " x y | 16 -> Printf.printf "\\begin{scope}[shift={(%d,%d)}] \\fill[bGcarreDownRight] (0,2) rectangle (4,4);\\fill[carreDownRight] (0,2) rectangle (4,4); \\fill[bGcarreUpRight] (0,0) rectangle (4,2);\\fill[carreUpRight] (0,0) rectangle (4,2); \\fill[bGcarreBorder] (0,1.8) rectangle (4,2.2);\\fill[carreBorder] (0,1.8) rectangle (4,2.2); \\draw (0,0) rectangle (4,4); \\end{scope} " x y | 17 -> Printf.printf "\\begin{scope}[shift={(%d,%d)}] \\fill[bGcarreDownRight] (0,0) rectangle (2,4);\\fill[carreDownRight] (0,0) rectangle (2,4); \\fill[bGcarreUpLeft] (2,0) rectangle (4,4);\\fill[carreUpLeft] (2,0) rectangle (4,4); \\fill[bGcarreBorder] (1.8,0) rectangle (2.2,4);\\fill[carreBorder] (1.8,0) rectangle (2.2,4); \\draw (0,0) rectangle (4,4); \\end{scope} " x y | 18 -> Printf.printf "\\begin{scope}[shift={(%d,%d)}] \\fill[bGcarreDownLeft] (0,2) rectangle (4,4);\\fill[carreDownLeft] (0,2) rectangle (4,4); \\fill[bGcarreDownRight] (2,2) rectangle (4,3);\\fill[carreDownRight] (2,2) rectangle (4,3); \\fill[bGcarreUpLeft] (0,0) rectangle (2,2);\\fill[carreUpLeft] (0,0) rectangle (2,2); \\fill[bGcarreUpRight] (2,0) rectangle (4,2);\\fill[carreUpRight] (2,0) rectangle (4,2); \\fill[bGcarreBorder] (0,1.8) rectangle (4,2.2);\\fill[carreBorder] (0,1.8) rectangle (4,2.2); \\fill[bGsignalCarres] (1.8,0) rectangle (2.2,3.2) rectangle (4,2.8) ;\\fill[signalCarres] (1.8,0) rectangle (2.2,3.2) rectangle (4,2.8) ; \\draw (0,0) rectangle (4,4); \\end{scope} " x y | 19 -> Printf.printf "\\begin{scope}[shift={(%d,%d)}] \\fill[bGcarreDownRight] (0,2) rectangle (4,4);\\fill[carreDownRight] (0,2) rectangle (4,4); \\fill[bGcarreDownLeft] (0,3) rectangle (2,4);\\fill[carreDownLeft] (0,3) rectangle (2,4); \\fill[bGcarreUpRight] (0,0) rectangle (4,2);\\fill[carreUpRight] (0,0) rectangle (4,2); \\fill[bGcarreBorder] (0,1.8) rectangle (4,2.2);\\fill[carreBorder] (0,1.8) rectangle (4,2.2); \\fill[bGsignalCarres] (0,2.8) rectangle (2.2,3.2) rectangle (1.8,4);\\fill[signalCarres] (0,2.8) rectangle (2.2,3.2) rectangle (1.8,4); \\draw (0,0) rectangle (4,4); \\end{scope} " x y | 20 -> Printf.printf "\\begin{scope}[shift={(%d,%d)}] \\fill[bGcarreUpLeft] (2,0) rectangle (4,2);\\fill[carreUpLeft] (2,0) rectangle (4,2); \\fill[bGcarreBorder] (1.8,0) rectangle (2.2,2.2) rectangle (4,1.8);\\fill[carreBorder] (1.8,0) rectangle (2.2,2.2) rectangle (4,1.8); \\draw (0,0) rectangle (4,4); \\end{scope} " x y | 21 -> Printf.printf "\\begin{scope}[shift={(%d,%d)}] \\fill[bGcarreDownRight] (0,0) rectangle (2,2);\\fill[carreDownRight] (0,0) rectangle (2,2); \\fill[bGcarreUpLeft] (2,0) rectangle (4,4);\\fill[carreUpLeft] (2,0) rectangle (4,4); \\fill[bGcarreUpRight] (0,0) -- (2,2) -- (0,2) -- cycle;\\fill[carreUpRight] (0,0) -- (2,2) -- (0,2) -- cycle; \\fill[bGsignalCarres] (0,2.8) rectangle (2,3.2);\\fill[signalCarres] (0,2.8) rectangle (2,3.2); \\fill[bGcarreBorder] (0,1.8) rectangle (2.2,2.2);\\fill[carreBorder] (0,1.8) rectangle (2.2,2.2); \\fill[bGcarreBorder] (1.8,0) rectangle (2.2,4);\\fill[carreBorder] (1.8,0) rectangle (2.2,4); \\draw (0,0) rectangle (4,4); \\end{scope} " x y | 22 -> Printf.printf "\\begin{scope}[shift={(%d,%d)}] \\fill[bGcarreDownLeft] (0,2) rectangle (4,4);\\fill[carreDownLeft] (0,2) rectangle (4,4); \\fill[bGcarreUpLeft] (0,0) rectangle (4,2);\\fill[carreUpLeft] (0,0) rectangle (4,2); \\fill[bGsignalBas] (0,1.8) rectangle (4,2.2);\\fill[signalBas] (0,1.8) rectangle (4,2.2); \\draw (0,0) rectangle (4,4); \\end{scope} " x y | 23 -> Printf.printf "\\begin{scope}[shift={(%d,%d)}] \\fill[bGcarreDownRight] (0,2) rectangle (4,4);\\fill[carreDownRight] (0,2) rectangle (4,4); \\fill[bGcarreUpRight] (0,0) rectangle (4,2);\\fill[carreUpRight] (0,0) rectangle (4,2); \\fill[bGsignalBas] (0,1.8) rectangle (4,2.2);\\fill[signalBas] (0,1.8) rectangle (4,2.2); \\draw (0,0) rectangle (4,4); \\end{scope} " x y | 24 -> Printf.printf "\\begin{scope}[shift={(%d,%d)}] \\fill[bGcarreDownRight] (0,0) rectangle (2,4);\\fill[carreDownRight] (0,0) rectangle (2,4); \\fill[bGcarreUpLeft] (2,0) rectangle (4,4);\\fill[carreUpLeft] (2,0) rectangle (4,4); \\fill[bGcarreBorder] (1.8,0) rectangle (2.2,4);\\fill[carreBorder] (1.8,0) rectangle (2.2,4); \\fill[bGsignalBas] (0.8,0) rectangle (1.2,4);\\fill[signalBas] (0.8,0) rectangle (1.2,4); \\draw (0,0) rectangle (4,4); \\end{scope} " x y | 25 -> Printf.printf "\\begin{scope}[shift={(%d,%d)}] \\fill[bGcarreDownRight] (0,0) rectangle (2,4);\\fill[carreDownRight] (0,0) rectangle (2,4); \\fill[bGcarreUpLeft] (2,0) rectangle (4,4);\\fill[carreUpLeft] (2,0) rectangle (4,4); \\fill[bGcarreDownLeft] (4,4) -- (2,2) -- (4,2) -- cycle;\\fill[carreDownLeft] (4,4) -- (2,2) -- (4,2) -- cycle; \\fill[bGcarreBorder] (1.8,0) rectangle (2.2,4);\\fill[carreBorder] (1.8,0) rectangle (2.2,4); \\fill[bGcarreBorder] (2,1.8) rectangle (4,2.2);\\fill[carreBorder] (2,1.8) rectangle (4,2.2); \\fill[bGsignalBas] (2.8,0) rectangle (3.2,2.2) rectangle (4,1.8);\\fill[signalBas] (2.8,0) rectangle (3.2,2.2) rectangle (4,1.8); \\draw (0,0) rectangle (4,4); \\end{scope} " x y | 26 -> Printf.printf "\\begin{scope}[shift={(%d,%d)}] \\fill[bGcarreDownRight] (0,0) rectangle (2,4);\\fill[carreDownRight] (0,0) rectangle (2,4); \\fill[bGcarreUpLeft] (2,0) rectangle (4,4);\\fill[carreUpLeft] (2,0) rectangle (4,4); \\fill[bGcarreUpRight] (0,0) -- (2,2) -- (0,2) -- cycle;\\fill[carreUpRight] (0,0) -- (2,2) -- (0,2) -- cycle; \\fill[bGcarreBorder] (0,1.8) rectangle (2.2,2.2);\\fill[carreBorder] (0,1.8) rectangle (2.2,2.2); \\fill[bGcarreBorder] (1.8,0) rectangle (2.2,4);\\fill[carreBorder] (1.8,0) rectangle (2.2,4); \\fill[bGsignalBas] (0.8,2) rectangle (1.2,0);\\fill[signalBas] (0.8,2) rectangle (1.2,0); \\fill[bGsignalBas] (0,1.8) rectangle (3.2,2.2) rectangle (2.8,4);\\fill[signalBas] (0,1.8) rectangle (3.2,2.2) rectangle (2.8,4); \\draw (0,0) rectangle (4,4); \\end{scope} " x y | 27 -> Printf.printf "\\begin{scope}[shift={(%d,%d)}] \\fill[bGcarreUpLeft] (2,0) rectangle (4,2);\\fill[carreUpLeft] (2,0) rectangle (4,2); \\fill[bGcarreBorder] (1.8,0) rectangle (2.2,2.2) rectangle (4,1.8);\\fill[carreBorder] (1.8,0) rectangle (2.2,2.2) rectangle (4,1.8); \\fill[bGsignalBas] (2.8,0) rectangle (3.2,2.2) rectangle (4,1.8);\\fill[signalBas] (2.8,0) rectangle (3.2,2.2) rectangle (4,1.8); \\draw (0,0) rectangle (4,4); \\end{scope} " x y | 28 -> Printf.printf "\\begin{scope}[shift={(%d,%d)}] \\fill[bGcarreUpLeft] (0,0) rectangle (2,2);\\fill[carreUpLeft] (0,0) rectangle (2,2); \\fill[bGcarreUpRight] (2,0) rectangle (4,2);\\fill[carreUpRight] (2,0) rectangle (4,2); \\fill[bGcarreBorder] (0,1.8) rectangle (4,2.2);\\fill[carreBorder] (0,1.8) rectangle (4,2.2); \\fill[bGsignalCarres] (1.8,0) rectangle (2.2,3.2) rectangle (4,2.8);\\fill[signalCarres] (1.8,0) rectangle (2.2,3.2) rectangle (4,2.8); \\draw (0,0) rectangle (4,4); \\end{scope} " x y | 29 -> Printf.printf "\\begin{scope}[shift={(%d,%d)}] \\fill[bGtroisQuart] (0,0) rectangle (4,4);\\fill[troisQuart] (0,0) rectangle (4,4); \\draw (0,0) rectangle (4,4); \\end{scope} " x y | 30 -> Printf.printf "\\begin{scope}[shift={(%d,%d)}] \\fill[bGcarreUpLeft] (2,2) -- (4,4) -- (2,4) -- cycle;\\fill[carreUpLeft] (2,2) -- (4,4) -- (2,4) -- cycle; \\fill[bGcarreDownLeft] (3,3) -- (4,4) -- (4,3) -- cycle;\\fill[carreDownLeft] (3,3) -- (4,4) -- (4,3) -- cycle; \\fill[bGcarreDownRight] (2,2) -- (3,3) -- (4,3) -- (4,2) -- cycle;\\fill[carreDownRight] (2,2) -- (3,3) -- (4,3) -- (4,2) -- cycle; \\fill[bGsignalBas] (0.8,4) rectangle (1.2,2);\\fill[signalBas] (0.8,4) rectangle (1.2,2); \\fill[bGsignalCarres] (2,2.8) rectangle (4,3.2);\\fill[signalCarres] (2,2.8) rectangle (4,3.2); \\fill[bGcarreBorder] (0.8,1.8) rectangle (4,2.2) (1.8,2) rectangle (2.2,4);\\fill[carreBorder] (0.8,1.8) rectangle (4,2.2) (1.8,2) rectangle (2.2,4); \\draw (0,0) rectangle (4,4); \\end{scope} " x y | 31 -> Printf.printf "\\begin{scope}[shift={(%d,%d)}] \\fill[bGcarreUpLeft] (2,0) rectangle (4,4);\\fill[carreUpLeft] (2,0) rectangle (4,4); \\fill[bGcarreBorder] (1.8,0) rectangle (2.2,4);\\fill[carreBorder] (1.8,0) rectangle (2.2,4); \\fill[bGsignalBas] (0.8,0) rectangle (1.2,2.2) rectangle (3.2,1.8) rectangle (2.8,4);\\fill[signalBas] (0.8,0) rectangle (1.2,2.2) rectangle (3.2,1.8) rectangle (2.8,4); \\draw (0,0) rectangle (4,4); \\end{scope} " x y | 32 -> Printf.printf "\\begin{scope}[shift={(%d,%d)}] \\fill[bGcarreDownRight] (0,2) rectangle (2,4);\\fill[carreDownRight] (0,2) rectangle (2,4); \\fill[bGcarreUpLeft] (2,2) -- (4,4) -- (2,4) -- cycle;\\fill[carreUpLeft] (2,2) -- (4,4) -- (2,4) -- cycle; \\fill[bGcarreDownLeft] (3,3) -- (4,4) -- (4,3) -- cycle;\\fill[carreDownLeft] (3,3) -- (4,4) -- (4,3) -- cycle; \\fill[bGcarreDownRight] (2,2) -- (3,3) -- (4,3) -- (4,2) -- cycle;\\fill[carreDownRight] (2,2) -- (3,3) -- (4,3) -- (4,2) -- cycle; \\fill[bGsignalBas] (0.8,4) rectangle (1.2,2);\\fill[signalBas] (0.8,4) rectangle (1.2,2); \\fill[bGsignalCarres] (2,2.8) rectangle (4,3.2);\\fill[signalCarres] (2,2.8) rectangle (4,3.2); \\fill[bGcarreBorder] (0,1.8) rectangle (4,2.2) (1.8,2) rectangle (2.2,4);\\fill[carreBorder] (0,1.8) rectangle (4,2.2) (1.8,2) rectangle (2.2,4); \\draw (0,0) rectangle (4,4); \\end{scope} " x y | 33 -> Printf.printf "\\begin{scope}[shift={(%d,%d)}] \\fill[bGcarreDownRight] (0,2) rectangle (4,4);\\fill[carreDownRight] (0,2) rectangle (4,4); \\fill[bGcarreDownLeft] (0,3) rectangle (2,4);\\fill[carreDownLeft] (0,3) rectangle (2,4); \\fill[bGtroisQuart] (0,0) rectangle (4,2);\\fill[troisQuart] (0,0) rectangle (4,2); \\fill[bGcarreBorder] (0,1.8) rectangle (4,2.2);\\fill[carreBorder] (0,1.8) rectangle (4,2.2); \\fill[bGsignalCarres] (0,2.8) rectangle (2.2,3.2) rectangle (1.8,4);\\fill[signalCarres] (0,2.8) rectangle (2.2,3.2) rectangle (1.8,4); \\draw (0,0) rectangle (4,4); \\end{scope} " x y | 34 -> Printf.printf "\\begin{scope}[shift={(%d,%d)}] \\fill[bGcarreDownRight] (0,2) rectangle (4,4);\\fill[carreDownRight] (0,2) rectangle (4,4); \\fill[bGtroisQuart] (0,0) rectangle (4,2);\\fill[troisQuart] (0,0) rectangle (4,2); \\fill[bGcarreBorder] (0,1.8) rectangle (4,2.2);\\fill[carreBorder] (0,1.8) rectangle (4,2.2); \\draw (0,0) rectangle (4,4); \\end{scope} " x y | 35 -> Printf.printf "\\begin{scope}[shift={(%d,%d)}] \\fill[bGcarreUpLeft] (2,0) rectangle (4,4);\\fill[carreUpLeft] (2,0) rectangle (4,4); \\fill[bGcarreBorder] (1.8,0) rectangle (2.2,4);\\fill[carreBorder] (1.8,0) rectangle (2.2,4); \\draw (0,0) rectangle (4,4); \\end{scope} " x y | 36 -> Printf.printf "\\begin{scope}[shift={(%d,%d)}] \\fill[bGcarreUpLeft] (2,0) rectangle (4,4);\\fill[carreUpLeft] (2,0) rectangle (4,4); \\fill[bGcarreDownLeft] (4,4) -- (2,2) -- (4,2) -- cycle;\\fill[carreDownLeft] (4,4) -- (2,2) -- (4,2) -- cycle; \\fill[bGcarreBorder] (1.8,0) rectangle (2.2,4);\\fill[carreBorder] (1.8,0) rectangle (2.2,4); \\fill[bGcarreBorder] (2,1.8) rectangle (4,2.2);\\fill[carreBorder] (2,1.8) rectangle (4,2.2); \\fill[bGsignalBas] (2.8,0) rectangle (3.2,2.2) rectangle (4,1.8);\\fill[signalBas] (2.8,0) rectangle (3.2,2.2) rectangle (4,1.8); \\draw (0,0) rectangle (4,4); \\end{scope} " x y | 37 -> Printf.printf "\\begin{scope}[shift={(%d,%d)}] \\fill[bGcarreUpLeft] (2,0) rectangle (4,4);\\fill[carreUpLeft] (2,0) rectangle (4,4); \\fill[bGcarreDownLeft] (4,4) -- (2,2) -- (4,2) -- cycle;\\fill[carreDownLeft] (4,4) -- (2,2) -- (4,2) -- cycle; \\fill[bGcarreBorder] (1.8,0) rectangle (2.2,4);\\fill[carreBorder] (1.8,0) rectangle (2.2,4); \\fill[bGcarreBorder] (2,1.8) rectangle (4,2.2);\\fill[carreBorder] (2,1.8) rectangle (4,2.2); \\draw (0,0) rectangle (4,4); \\end{scope} " x y | 38 -> Printf.printf "\\begin{scope}[shift={(%d,%d)}] \\fill[bGcarreDownLeft] (0,2) rectangle (4,4);\\fill[carreDownLeft] (0,2) rectangle (4,4); \\fill[bGcarreDownRight] (2,2) rectangle (4,3);\\fill[carreDownRight] (2,2) rectangle (4,3); \\fill[bGcarreUpLeft] (0,0) rectangle (2,2);\\fill[carreUpLeft] (0,0) rectangle (2,2); \\fill[bGcarreUpRight] (2,0) rectangle (4,2);\\fill[carreUpRight] (2,0) rectangle (4,2); \\fill[bGsignalBas] (0,1.8) rectangle (4,2.2);\\fill[signalBas] (0,1.8) rectangle (4,2.2); \\fill[bGsignalCarres] (1.8,0) rectangle (2.2,3.2) rectangle (4,2.8) ;\\fill[signalCarres] (1.8,0) rectangle (2.2,3.2) rectangle (4,2.8) ; \\draw (0,0) rectangle (4,4); \\end{scope} " x y | 39 -> Printf.printf "\\begin{scope}[shift={(%d,%d)}] \\fill[bGcarreDownRight] (0,2) rectangle (4,4);\\fill[carreDownRight] (0,2) rectangle (4,4); \\fill[bGcarreDownLeft] (0,3) rectangle (2,4);\\fill[carreDownLeft] (0,3) rectangle (2,4); \\fill[bGcarreUpRight] (0,0) rectangle (4,2);\\fill[carreUpRight] (0,0) rectangle (4,2); \\fill[bGsignalBas] (0,1.8) rectangle (4,2.2);\\fill[signalBas] (0,1.8) rectangle (4,2.2); \\fill[bGsignalCarres] (0,2.8) rectangle (2.2,3.2) rectangle (1.8,4);\\fill[signalCarres] (0,2.8) rectangle (2.2,3.2) rectangle (1.8,4); \\draw (0,0) rectangle (4,4); \\end{scope} " x y | _ -> raise Tuile_inexistante let taille = 5 let taille_grille = (taille+1)*(taille+1)-taille-1 let offset=1 let _ = Printf.printf " \\documentclass{standalone} \\usepackage{tikz,ifthen} \\usetikzlibrary{decorations.pathmorphing,decorations.pathreplacing,arrows,automata,patterns,positioning} \\input texcommands.tex \\begin{document} \\scalebox{0.4}{ \\begin{tikzpicture}[scale=0.25] \\clip[draw,decorate,decoration={random steps,segment length=3pt,amplitude=1pt}] (-3.5,-3.5) rectangle +(%d,%d);\n" (taille_grille*3) (taille*taille*4+4*offset+1) let _ = for colonne=1 to taille do (* chaque colonne de carres *) let base_x = (colonne*colonne+colonne)/2 in for carre=1 to colonne do (* pour chaque carre *) let base_y = (colonne+1)*(carre-1) in (* coté gauche *) for i=1 to carre-1 do print_tuile (base_x+i,base_y+i) 11; done; for i=1 to carre-1 do for j=i+1 to colonne do print_tuile (base_x+i,base_y+j) 2; done; done; for i=2 to carre-1 do for j=1 to i-1 do print_tuile (base_x+i,base_y+j) 9; done; done; (* milieu *) for i=1 to carre-1 do print_tuile (base_x+carre,base_y+i) 10; done; for i=carre+1 to colonne do print_tuile (base_x+carre,base_y+i) 3; done; print_tuile (base_x+carre,base_y+carre) 12; (* coté droit *) for i=carre+1 to colonne do print_tuile (base_x+i,base_y+i) 4; done; for i=carre+1 to colonne do for j=i+1 to colonne do print_tuile (base_x+i,base_y+j) 1; done; done; for i=carre+1 to colonne do for j=1 to i-1 do print_tuile (base_x+i,base_y+j) 8; done; done; (* interstices normaux *) if carre<>1 then ( for j=1 to colonne do print_tuile (base_x+colonne+1,base_y+j) 17; done; if base_y < (colonne-1)*(colonne-1) then ( print_tuile (base_x,base_y) 6; ) else ( for j=1 to colonne do print_tuile (base_x,base_y+j) 35; done; print_tuile (base_x,base_y) 37; ) ) else ( for j=1 to colonne do print_tuile (base_x+colonne+1,base_y+j) 24; done ); if carre=2 then ( if colonne=2 then print_tuile (base_x,base_y) 36 else print_tuile (base_x,base_y) 25 ); (* haut de chaque carre *) if carre<>colonne then ( if carre <> 1 then ( for i=1 to carre-1 do print_tuile (base_x+i,base_y+colonne+1) 15; done; print_tuile (base_x+carre,base_y+colonne+1) 18; print_tuile (base_x+carre+1,base_y+colonne+1) 19; for i=carre+2 to colonne do print_tuile (base_x+i,base_y+colonne+1) 16; done; print_tuile (base_x+colonne+1,base_y+colonne+1) 5; ) else ( print_tuile (base_x+carre,base_y+colonne+1) 38; print_tuile (base_x+carre+1,base_y+colonne+1) 39; for i=carre+2 to colonne do print_tuile (base_x+i,base_y+colonne+1) 23; done; print_tuile (base_x+colonne+1,base_y+colonne+1) 26; ) ) (* Tout en haut *) else ( print_tuile (base_x,base_y+colonne+1) 20; for i=1 to carre-1 do print_tuile (base_x+i,base_y+colonne+1) 13; done; if colonne<>1 then ( print_tuile (base_x+carre,base_y+colonne+1) 28; print_tuile (base_x+carre+1,base_y+colonne+1) 21 ) else ( print_tuile (base_x+carre,base_y+colonne+1) 14; print_tuile (base_x+carre+1,base_y+colonne+1) 7 ); ) done; (* Tout en bas *) print_tuile (base_x+colonne+1,0) 32; print_tuile (base_x+1,0) 33; for i=2 to colonne do print_tuile (base_x+i,0) 34; done; done; print_tuile (1,0) 30; print_tuile (1,1) 31; print_tuile (1,2) 27 let _ = Printf.printf " \\fill[bGunQuartBas] (5,1.8) rectangle (%d,%d);\\fill[unQuartBas] (5,1.8) rectangle (%d,%d); \\fill[bGcarreBorder] (4.8,2) rectangle (5.2,%d);\\fill[carreBorder] (4.8,2) rectangle (5.2,%d); \\draw[scale=4] (%d,%d) grid +(%d,%d); \\end{tikzpicture}}\\end{document}\n" (4*taille_grille) (-4*offset) (4*taille_grille) (-4*offset) (-4*offset) (-4*offset) (1-4) (-4*offset) (4*taille_grille) (4*taille_grille)