/// <summary> /// Constructeur par copie /// /// Duplique complètement une grille de sudoku en évitant le partage mémoire. /// </summary> /// <param name="sudo">Grille de sudoku à copier</param> public Sudoku(Sudoku sudo) { Lignes = new List <Ligne>(); Colonnes = new List <Colonne>(); Blocs = new List <Bloc>(); Grille = new Cellule[9, 9]; Groupes = new List <Groupe>(); foreach (Ligne copy in sudo.Lignes) { Ligne lgn = new Ligne(copy); lgn.Clear(); Lignes.Add(lgn); } foreach (var copy in sudo.Colonnes) { Colonne col = new Colonne(copy); col.Clear(); Colonnes.Add(col); } foreach (var copy in sudo.Blocs) { Bloc blo = new Bloc(copy); blo.Clear(); Blocs.Add(blo); } Groupes.AddRange(Lignes); Groupes.AddRange(Colonnes); Groupes.AddRange(Blocs); foreach (Cellule cel in sudo.Grille) { Cellule cl = new Cellule(cel, Lignes.ElementAt(cel.Ligne.Numéro), Colonnes.ElementAt(cel.Colonne.Numéro), Blocs.ElementAt(GetNuméroBloc(cel.Ligne.Numéro, cel.Colonne.Numéro))); Grille[cel.Ligne.Numéro, cel.Colonne.Numéro] = cl; Lignes[cel.Ligne.Numéro].Add(cl); Colonnes[cel.Colonne.Numéro].Add(cl); Blocs[GetNuméroBloc(cel.Ligne.Numéro, cel.Colonne.Numéro)].Add(cl); } }
public Bloc(Bloc blo) : base(blo) { }