void PlayRingGameSessionWithSeatPermutations(int rngSeed) { List <PlayerData> initialPlacement = new List <PlayerData>(_sessionPlayers); List <List <int> > permuts = EnumAlgos.GetPermut(_sessionPlayers.Count); foreach (List <int> permut in permuts) { string permutText = ""; for (int i = 0; i < permut.Count; ++i) { _sessionPlayers[i] = initialPlacement[permut[i]]; permutText += " " + permut[i].ToString(); } if (IsLoggingEnabled) { _gameLog.WriteLine(">SeatPermutation Positions=\'{0}\'", permutText.Substring(1)); _gameLog.Flush(); } Props pm = new Props(); pm.Set("pkr.ForgetAll", "true"); foreach (PlayerData sessionPlayer in _sessionPlayers) { sessionPlayer.iplayer.OnSessionEvent(pm); } PlaySimpleSession(rngSeed); } }
public void Test_GetPermut() { int expCount = 1; for (int n = 1; n < 7; ++n) { expCount *= n; List <List <int> > permuts = EnumAlgos.GetPermut(n); VerifyPermut(permuts, n, expCount); } }
public void SortSuitesCodeGenerator() { List <List <int> > perms = EnumAlgos.GetPermut(4); for (int i = 0; i < perms.Count; ++i) { Console.Write("{"); for (int j = 0; j < 4; ++j) { if (j != 0) { Console.Write(","); } Console.Write(" {0}", perms[i][j]); } Console.WriteLine("}}, // {0,2}", i); } Generate(perms, perms, ""); }
/// <summary> /// Generates all possible hands containing given suites, /// normalizes and verifies them. /// </summary> private void TestPermutations(uint s3, uint s2, uint s1, uint s0) { uint[] arr = new uint[] { s0, s1, s2, s3 }; Array.Sort(arr); CardSet expected = FromSuits(arr[0], arr[1], arr[2], arr[3]); List <List <int> > perms = EnumAlgos.GetPermut(4); for (int i = 0; i < perms.Count; ++i) { // Console.WriteLine("Permutation: {0}", i); NormSuit sn = new NormSuit(); CardSet orig = FromSuits(arr[perms[i][0]], arr[perms[i][1]], arr[perms[i][2]], arr[perms[i][3]]); CardSet converted = sn.Convert(orig); Assert.AreEqual(expected, converted); // Make sure result is consistent. converted = sn.Convert(orig); Assert.AreEqual(expected, converted); // Make sure self is converted to self with a new normalizers // (because it is already sorted). NormSuit sn2 = new NormSuit(); converted = sn2.Convert(converted); Assert.AreEqual(expected, converted); } }