public MegaminxState(MegaminxPuzzle p) : base(p) { _puzzle = p; _image = ArrayExtension.New <int>(12, 11); for (var i = 0; i < _image.Length; i++) { for (var j = 0; j < _image[0].Length; j++) { _image[i][j] = i; } } _normalizedState = this; }
public override LinkedHashMap <string, PuzzleState> GetSuccessorsByName() { var successors = new LinkedHashMap <string, PuzzleState>(); string[] prettyDir = { null, "", "2", "2'", "'" }; foreach (Face face in Enum.GetValues(typeof(Face))) { for (var dir = 1; dir <= 4; dir++) { var move = face.ToString(); move += prettyDir[dir]; var imageCopy = CloneImage(_image); Turn(imageCopy, face, dir); successors[move] = new MegaminxState(imageCopy, _puzzle); } } var pochmannFaceNames = new Dictionary <string, Face> { ["R"] = Face.Dbr, ["D"] = Face.D }; string[] prettyPochmannDir = { null, "+", "++", "--", "-" }; foreach (var pochmannFaceName in pochmannFaceNames.Keys) { for (var dir = 1; dir < 5; dir++) { var move = pochmannFaceName + prettyPochmannDir[dir]; var imageCopy = CloneImage(_image); BigTurn(imageCopy, pochmannFaceNames[pochmannFaceName], dir); successors[move] = new MegaminxState(imageCopy, _puzzle); } } return(successors); }
public override PuzzleState GetNormalized() { return(_normalizedState ?? (_normalizedState = new MegaminxState(Normalize(_image), _puzzle))); }