// Sorted combinations public ushort UDSliceCoordS() { List <byte> arr = new List <byte>(4); int i, j, s, x = 0; foreach (Cubie e in edges) { if (UDSlice.Contains(e.pos)) { arr.Add(e.pos); } } for (i = 3; i > 0; i--) { s = 0; for (j = i; j >= 0; j--) { if (arr[j] > arr[i]) { s++; } } x = (x + s) * i; } return((ushort)(UDSliceCoord() * 24 + x)); }
// Combinations public ushort UDSliceCoord() { int k = -1, i = 0, s = 0; foreach (Cubie e in edges) { if (UDSlice.Contains(e.pos)) { k += 1; } else if (k != -1) { s += Tools.nChooseK(i, k); } i += 1; } return((ushort)s); }