.
..
2007_ap2_tp_note_sujet.pdf (download)
entiers.adb (download) (view)
sudoku.adb (download) (view)
sudoku_a_trous.adb (download) (view)
sudoku_cor.ps (download)
test.sudoku (download)
test2.sudoku (download)
test3.sudoku (download)

with Ada.Text_Io, Ada.Integer_Text_Io;
use  Ada.Text_Io, Ada.Integer_Text_Io;

procedure Sudoku_A_trous is
   --------------- begin définitions d'une grille ----------------
   subtype Symbole is Integer range 0..9;
   type Grille is array(1..9, 1..9) of Symbole;
   type Tbl9   is array(Symbole'Range) of Symbole;
   type TblSol is array(Symbole'Range) of Boolean;

   procedure Get(G : in out Grille) is
   begin
      for X in Grille'Range(1) loop
         for Y in Grille'Range(2) loop
            Get(G(X, Y));
         end loop;
      end loop;
   end;
   --------------- end   définitions d'une grille ----------------

   --------------- begin définitions des Piles -------------------
   type Pile is record
      Head : Integer;
      Data : Tbl9;
   end record;

   PileVide : constant Pile := (0, (others => 0));

   function Sommet(P : in Pile) return Symbole is
   begin
      return P.Data(P.Head);
   end;

   procedure Empiler(P : in out Pile; V : in Symbole) is
   begin
      P.Head := P.Head + 1;
      P.Data(P.Head) := V;
   end;

   procedure Depiler(P : in out Pile) is
   begin
      P.Head := P.Head - 1;
   end;

   function Vide(P : in Pile) return Boolean is
   begin
      return P.Head = 0;
   end;

   procedure Put(P : in Pile) is
      Pp : Pile := P;
   begin
      if not Vide(Pp) then
         Depiler(Pp);
         Put(Pp);
         Put(Sommet(P), 2);
      end if;
   end;
   --------------- end   définitions des Piles -------------------


   --------------- begin vos réponses ici...   -------------------
   -------------------------------------------------------
   -------------------------------------------------------
   -- Question 1
   procedure Put(G : in Grille) is
   begin
      null;
   end;

   -- Question 2
   function Intersection(P1, P2 : in Pile) return Pile is
   begin
      return PileVide;
   end;

   -- Question 3
   procedure RemplirPile(Sol : in TblSol; P : out Pile) is
   begin
      P := PileVide;
   end;

   -- Question 4
   function TrouverSolCol(G : in Grille; X : in Integer) return Pile is
   begin
      return PileVide;
   end;

   -- Question 5
   function TrouverSolLig(G : in Grille; Y : in Integer) return Pile is
   begin
      return PileVide;
   end;

   -- Question 6
   function TrouverSolReg(G : in Grille; X, Y : in Integer) return Pile is
   begin
      return PileVide;
   end;

   -- Question 7
   function TrouverSol(G : in Grille; X, Y : in Integer) return Pile is
   begin
      return PileVide;
   end;

   -- Question 8
   procedure TrouverPremiereCaseVide(G : in Grille; X, Y : out Integer) is
   begin
      X := 0;
      Y := 0;
   end;

   -- Question 9
   procedure Solve(G : in Grille; Solved : in out Boolean; GSolved : in out Grille) is
   begin
      null;
   end;

   -- Question 10
   -- ?
   --------------- end   vos réponses ici...   -------------------

   --   G       : Grille;
   --   Gsolved : Grille;
   --   Solved  : Boolean := false;
   P, P2 : Pile;
begin
   P := PileVide;
   Empiler(P, 1); Empiler(P, 2);    Empiler(P, 5);    Empiler(P, 9);
   P2 := PileVide;
   Empiler(P2, 2);    Empiler(P2, 3); Empiler(P2, 5);    Empiler(P2, 8);
   Put("P :  ");
   Put(P); New_Line;
   Put("P2 : ");
   Put(P2); New_Line;
   Put("P inter P2 : ");
   Put(Intersection(P, P2)); New_Line;
   Put("Intersection normale : 2 5"); New_Line;

   --   à décommenter pour tester le sudoku
   --   Get(G);
   --   Solve(G, Solved, Gsolved);
   --   if (Solved) then
   --      Put(Gsolved);
   --   else
   --      Put("no solution found !");
   --   end if;
end;
 
Webmaster : pierrefrancois.leon@laposte.net

Valid XHTML 1.0 Strict Valid CSS!