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)); }
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)); }
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); }
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); } } }
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); } } }
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); } } }
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); }