public void Test14Tiles() { var comparer = new ArrangementComparer(14); AssertIsWorse(comparer, new Arrangement(0, 1, 2), new Arrangement(0, 3, 3)); AssertIsWorse(comparer, new Arrangement(0, 2, 2), new Arrangement(0, 1, 2)); AssertIsWorse(comparer, new Arrangement(2, 0, 0), new Arrangement(1, 1, 1)); }
private static void AssertIsWorse(ArrangementComparer comparer, Arrangement a, Arrangement b) { Assert.IsTrue(comparer.IsWorseThan(a, b), $"{a} should be worse than {b}"); Assert.IsFalse(comparer.IsWorseThan(b, a), $"{b} should not be worse than {a}"); }
public void Test8Tiles() { var comparer = new ArrangementComparer(8); AssertIsWorse(comparer, new Arrangement(2, 0, 0), new Arrangement(2, 1, 3)); }
public void Test12Tiles() { var comparer = new ArrangementComparer(12); AssertIsWorse(comparer, new Arrangement(0, 4, 11), new Arrangement(0, 4, 12)); }
/// <summary> /// Returns all possible arrangements for the given hand. /// </summary> public IEnumerable<Arrangement> Analyze() { var comparer = new ArrangementComparer(_concealed, _meldCount); var arrangement = new Arrangement(0, _meldCount, _meldCount * 3); _usedMelds = _meldCount; _jantouValue = 0; Analyze(arrangement, 0, 0); var arrangements = _arrangements.Where(a => !_arrangements.Any(other => comparer.IsWorseThan(a, other))).OrderBy(a => a.Id); var compacter = new ArrangementGroupCompacter(); return compacter.GetCompacted(arrangements); }
private static IEnumerable<string> CreateArrangementCsvLines(int tileCount) { var arrangements = CreateAllArrangements(tileCount).ToList(); var comparer = new ArrangementComparer(tileCount); yield return ";" + string.Join(";", arrangements); foreach (var a in arrangements) { var sb = new StringBuilder(); sb.Append(a); sb.Append(";"); foreach (var b in arrangements) { var worse = comparer.IsWorseThan(a, b); var better = comparer.IsWorseThan(b, a); if (worse && better) { sb.Append("x;"); } else if(better) { sb.Append("b;"); } else if (worse) { sb.Append("w;"); } else { sb.Append("o;"); } } yield return sb.ToString(); } }