Ejemplo n.º 1
0
 private void EvaluateDifficulty()
 {
     if (RecursionDepth > Common.DifficultyUpperBoundMetrics[Common.Difficulty.Hard])
     {
         _difficulty = Common.Difficulty.Samurai;
     }
     else
     {
         if (RecursionDepth >
             Common.DifficultyUpperBoundMetrics[Common.Difficulty.Medium] &&
             RecursionDepth <= Common.DifficultyUpperBoundMetrics[Common.Difficulty.Hard])
         {
             _difficulty = Common.Difficulty.Hard;
         }
         else
         {
             if (RecursionDepth >
                 Common.DifficultyUpperBoundMetrics[Common.Difficulty.Easy] &&
                 RecursionDepth <=
                 Common.DifficultyUpperBoundMetrics[Common.Difficulty.Medium])
             {
                 _difficulty = Common.Difficulty.Medium;
             }
             else
             {
                 _difficulty = Common.Difficulty.Easy;
             }
         }
     }
 }
Ejemplo n.º 2
0
 /// <summary>
 /// applies deletions rules on the basis of difficulty level
 /// </summary>
 /// <param name="difficulty"></param>
 /// <param name="index"></param>
 /// <param name="board"></param>
 public void MakeItDifficultBy(Common.Difficulty difficulty, int[] index, ref int[,] board)
 {
     if (difficulty == Common.Difficulty.Easy || difficulty == Common.Difficulty.Medium)
     {
         ExecuteRules(new[] { DeletionRules.RowRule, DeletionRules.ColumnRule, DeletionRules.DiagonalRule }, index, ref board);
     }
     else
     {
         ExecuteRules(new[] { DeletionRules.DiagonalRule }, index, ref board);
     }
 }
Ejemplo n.º 3
0
 public static IGenerator GetGenerator(int squareDimension, Common.Difficulty difficulty)
 {
     if (squareDimension == 9)
     {
         return(new Generator9X9(difficulty));
     }
     else
     {
         throw new Exception("This grid cannot be solved currently");
     }
 }
Ejemplo n.º 4
0
        /// <summary>
        /// generates random set of indexes, which will be used to delete items from sudoku
        /// </summary>
        /// <param name="difficulty"></param>
        /// <returns></returns>
        private IEnumerable <int[]> IndexesTobeDeleted(Common.Difficulty difficulty)
        {
            HashSet <int> set;
            var           indexes = new List <int[]>();

            switch (difficulty)
            {
            case Common.Difficulty.Easy:
                set = GenerateNumberSet(55 / 3);
                break;

            case Common.Difficulty.Medium:
                set = GenerateNumberSet(60 / 3);
                break;

            case Common.Difficulty.Hard:
                set = GenerateNumberSet(65 / 2);
                break;

            case Common.Difficulty.Samurai:
                set = GenerateNumberSet(75 / 2);
                break;

            default:
                throw new Exception("difficulty not specified...");
            }

            foreach (var setItem in set)
            {
                var splits = setItem.ToString().ToCharArray();

                if (splits.Length == 2)
                {
                    var rIndex = int.Parse(splits[0].ToString());
                    var cIndex = int.Parse(splits[1].ToString());
                    indexes.Add(new[] { rIndex, cIndex });
                }
                else
                {
                    indexes.Add(new[] { 0, int.Parse(splits[0].ToString()) });
                }
            }

            return(indexes);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// generates sudoku with specified difficulty level
        /// </summary>
        /// <param name="squareDimension"></param>
        /// <param name="difficulty"></param>
        /// <returns></returns>

        public Generator9X9(Common.Difficulty difficulty)
        {
            _difficulty = difficulty;
        }
Ejemplo n.º 6
0
        private Common.Difficulty difficulty; //Difficulté de l'IA

        public IA(String n, List <Carte> m, int score, Common.Difficulty d) : base(n, m, score)
        {
            this.difficulty = d;
        }