示例#1
0
        public PuzzleState Clone()
        {
            var valueLookup = new Dictionary <byte, PuzzleSpace>(16);
            var newBoard    = new byte[4, 4];

            for (byte i = 0; i < 4; i++)
            {
                for (byte j = 0; j < 4; j++)
                {
                    var num = Board[i, j];
                    newBoard[i, j]   = num;
                    valueLookup[num] = new PuzzleSpace(i, j);
                }
            }
            return(new PuzzleState(newBoard, valueLookup));
        }
示例#2
0
        public PuzzleState Clone()
        {
            Dictionary <int, PuzzleSpace> valueLookup = new Dictionary <int, PuzzleSpace>(16);

            int[,] newBoard = new int[4, 4];
            for (int i = 0; i < 4; i++)
            {
                for (int j = 0; j < 4; j++)
                {
                    int num = Board[i, j];
                    newBoard[i, j]   = num;
                    valueLookup[num] = new PuzzleSpace(i, j);
                }
            }

            return(new PuzzleState(newBoard, valueLookup));
        }
示例#3
0
        public PuzzleState Right()
        {
            PuzzleSpace oldVoidLocation = GetSpace(0);

            if (oldVoidLocation.Col == 3)
            {
                return(null);
            }

            PuzzleState newState        = Clone();
            PuzzleSpace newVoidLocation = new PuzzleSpace(oldVoidLocation.Row, oldVoidLocation.Col + 1);

            int valToBeSwapped = newState.Board[newVoidLocation.Row, newVoidLocation.Col];

            newState.Board[newVoidLocation.Row, newVoidLocation.Col] = 0;
            newState.Board[oldVoidLocation.Row, oldVoidLocation.Col] = valToBeSwapped;
            newState._valueLookup[0] = newVoidLocation;
            newState._valueLookup[valToBeSwapped] = oldVoidLocation;
            return(newState);
        }
示例#4
0
        public PuzzleState(string stateAsString)
        {
            // example stateAsString:
            // ((1 5 3 7) (4 9 2 11) (8 13 10 14) (12 15 0 6) (3 2))

            Board = new byte[4,4];

            var parts = stateAsString.Split(new []{") ("}, StringSplitOptions.None);

            for (byte i = 0; i < 4; i++)
            {
                var part = parts[i].TrimStart(new[] { '(', ' ' }).TrimEnd(new[] { ')', ' ' });
                var nums = part.Split(' ');
                for (byte j = 0; j < 4; j++)
                {
                    var num = byte.Parse(nums[j]);
                    Board[i, j] = num;
                    _valueLookup[num] = new PuzzleSpace(i, j);
                }
            }
        }
示例#5
0
        public PuzzleState(string stateAsString)
        {
            // example stateAsString:
            // ((1 5 3 7) (4 9 2 11) (8 13 10 14) (12 15 0 6) (3 2))

            Board = new byte[4, 4];

            var parts = stateAsString.Split(new [] { ") (" }, StringSplitOptions.None);

            for (byte i = 0; i < 4; i++)
            {
                var part = parts[i].TrimStart(new[] { '(', ' ' }).TrimEnd(new[] { ')', ' ' });
                var nums = part.Split(' ');
                for (byte j = 0; j < 4; j++)
                {
                    var num = byte.Parse(nums[j]);
                    Board[i, j]       = num;
                    _valueLookup[num] = new PuzzleSpace(i, j);
                }
            }
        }
示例#6
0
        public PuzzleState(string stateAsString)
        {
            // example stateAsString:
            // ((1 5 3 7) (4 9 2 11) (8 13 10 14) (12 15 0 6) (3 2))

            Board        = new int[4, 4];
            _valueLookup = new Dictionary <int, PuzzleSpace>();

            string[] parts = stateAsString.Split(new[] { ") (" }, StringSplitOptions.None);

            for (int i = 0; i < 4; i++)
            {
                string   part = parts[i].TrimStart(new[] { '(', ' ' }).TrimEnd(new[] { ')', ' ' });
                string[] nums = part.Split();

                for (int j = 0; j < 4; j++)
                {
                    int num = int.Parse(nums[j]);
                    Board[i, j]       = num;
                    _valueLookup[num] = new PuzzleSpace(i, j);
                }
            }
        }
示例#7
0
 public PuzzleState Clone()
 {
     var valueLookup = new Dictionary<byte, PuzzleSpace>(16);
     var newBoard = new byte[4, 4];
     for (byte i = 0; i < 4; i++)
     {
         for (byte j = 0; j < 4; j++)
         {
             var num = Board[i, j];
             newBoard[i, j] = num;
             valueLookup[num] = new PuzzleSpace(i, j);
         }
     }
     return new PuzzleState(newBoard, valueLookup);
 }