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));
 }
Example #5
0
 /// <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);
 }
Example #6
0
 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();
   }
 }