public void TestCircularOK() { MovableCircularList <int> movable = new MovableCircularList <int>() { 1, 2, 3, 4 }; Assert.AreEqual(1, movable[movable.Count]); }
public void TestMovableSetOK() { MovableCircularList <int> m1 = new MovableCircularList <int>() { 1, 2, 3, 4 }; m1[2] = 5; Assert.AreEqual(5, m1[2]); }
public Knot(List <int> code) { GaussCode = new MovableCircularList <int>(code); if (!IsGaussCodeCorrect()) { throw new ArgumentException("Gauss Code is not valid"); } RemapGaussCode(); this.IsSolved = false; }
public void TestMovable2OK() { MovableCircularList <int> movable = new MovableCircularList <int>() { 1, 2, 3, 4 }; movable.Move(0, 6); Assert.AreEqual(2, movable[0]); Assert.AreEqual(3, movable[1]); Assert.AreEqual(1, movable[2]); Assert.AreEqual(4, movable[3]); }
private void RemapGaussCode() { //remap gauss code to keep consistency with names MovableCircularList <int> kGauss = new MovableCircularList <int>(GaussCode); int indexCross = 1; List <int> avoidPosition = new List <int>(); for (int i = 0; i < kGauss.Count; i++) { if (!avoidPosition.Contains(i)) { int index = GaussCode.IndexOf(-GaussCode[i]); int sign = GaussCode[i] < 0 ? -1 : 1; kGauss[i] = sign * indexCross; kGauss[index] = -kGauss[i]; avoidPosition.Add(index); avoidPosition.Add(i); indexCross++; } } GaussCode = kGauss; }
public void TestMovableEqualsOK() { MovableCircularList <int> m1 = new MovableCircularList <int>() { 1, 2, 3, 4 }; MovableCircularList <int> m2 = new MovableCircularList <int>() { 2, 3, 4, 1 }; MovableCircularList <int> m3 = new MovableCircularList <int>() { 3, 4, 1, 2 }; MovableCircularList <int> m4 = new MovableCircularList <int>() { 4, 1, 2, 3 }; Assert.AreEqual(m1, m2); Assert.AreEqual(m2, m3); Assert.AreEqual(m3, m4); }
private bool IsValidTangle(Tangle t) { MovableCircularList <int> crosses = new MovableCircularList <int>(); foreach (int c in t.Crosses) { crosses.Add(this.GaussCode.IndexOf(c)); crosses.Add(this.GaussCode.IndexOf(-c)); } crosses.Sort(); int leaps = 0; for (int i = 0; i < crosses.Count - 1; i++) { if (Tools.Mod(crosses[i] + 1, this.GaussCode.Count) != crosses[i + 1]) { leaps++; } } return(leaps < 2); }
public Knot() { GaussCode = new MovableCircularList <int>(); this.IsSolved = false; }