override public List <core.Puzzle> GetPuzzlesWithState(Level level, params PuzzleSolvedState[] states) { return(QueryWithState(level.Ref, states) .Select( p => new core.Puzzle(level, PuzzleState.FromCompactString(p.InitialConfig))) .ToList()); }
public void TestCompactString() { var str = "abcd"; var ps = PuzzleState.FromCompactString(str); Assert.AreEqual(ps.Count, 4, "State has 4 pieces"); Assert.AreEqual(ps.numColors, 4, "State has 4 colors"); Assert.IsFalse(ps.sided, "state is sided"); var ps1 = ps.Flip(new Move(0, Side.Right)); Assert.AreEqual("dcba", ps1.ToCompactString(), "Flipped compact representation matches"); var sps = PuzzleState.FromCompactString("$abcd"); Assert.AreEqual(sps.Count, 4, "State has 4 pieces"); Assert.AreEqual(sps.numColors, 4, "State has 4 colors"); Assert.IsTrue(sps.sided, "state is sided"); var sps2 = sps.Flip(new Move(2, Side.Left)); // new expected state: CBAd Assert.AreEqual(sps2.ColorIndex(0), 2, "piece 0 has color index 2"); Assert.IsTrue(sps2.Rotated(0), "piece 0 is rotated"); Assert.AreEqual(sps2.ColorIndex(1), 1, "piece 1 has color index 1"); Assert.IsTrue(sps2.Rotated(1), "piece 1 is rotated"); Assert.AreEqual(sps2.ColorIndex(2), 0, "piece 2 has color index 0"); Assert.IsTrue(sps2.Rotated(2), "piece 2 is rotated"); Assert.AreEqual(sps2.ColorIndex(3), 3, "piece 3 has color index 3"); Assert.IsTrue(!sps2.Rotated(3), "piece 3 is NOT rotated"); Assert.AreEqual("$CBAd", sps2.ToCompactString(), "Compact string matches expected"); }
// fake puzzle & level data, will not be initialized anyway private Puzzle GenDummyPuzzle(Level.LevelType type, string solved, string initial) { var solvedState = PuzzleState.FromCompactString(solved); var initialState = PuzzleState.FromCompactString(initial); var level = new Level(type, solvedState, null, null, new int[1] { 1 }, 1, 0); return(new Puzzle(level, initialState)); }