public void IsToitoiTest() { var tiles = Tiles34.Parse(man: "333", pin: "44555", sou: "111333"); IsTrue(new Toitoi().IsConditionMet(Hand(tiles))); tiles = Tiles34.Parse(pin: "777888999", sou: "777", honors: "44"); IsTrue(new Toitoi().IsConditionMet(Hand(tiles))); var tiles_ = TileIds.Parse(man: "333", pin: "44555", sou: "111333"); var winTile = TileId.Parse(pin: "5"); var melds = new List <Meld> { MakeMeld(MeldType.PON, sou: "111"), MakeMeld(MeldType.PON, sou: "333") }; var result = EstimateHandValue(tiles_, winTile, melds); AreEqual(null, result.Error); AreEqual(2, result.Han); AreEqual(40, result.Fu); AreEqual(1, result.Yaku.Count); tiles_ = TileIds.Parse(pin: "777888999", sou: "777", honors: "44"); winTile = TileId.Parse(pin: "9"); melds = new List <Meld> { MakeMeld(MeldType.PON, sou: "777") }; result = EstimateHandValue(tiles_, winTile, melds); AreEqual(null, result.Error); AreEqual(2, result.Han); AreEqual(40, result.Fu); AreEqual(1, result.Yaku.Count); }
public void IsHonrotoTest() { var tiles = Tiles34.Parse(man: "111", sou: "111999", honors: "11222"); IsTrue(new Honroto().IsConditionMet(Hand(tiles))); tiles = Tiles34.Parse(man: "1199", pin: "11", honors: "22334466"); IsTrue(new Honroto().IsConditionMet(Hand(tiles))); var tiles_ = TileIds.Parse(man: "111", sou: "111999", honors: "11222"); var winTile = TileId.Parse(honors: "2"); var melds = new List <Meld> { MakeMeld(MeldType.PON, sou: "111") }; var result = EstimateHandValue(tiles_, winTile, melds); AreEqual(null, result.Error); AreEqual(4, result.Han); AreEqual(50, result.Fu); AreEqual(2, result.Yaku.Count); tiles_ = TileIds.Parse(man: "1199", pin: "11", honors: "22334466"); winTile = TileId.Parse(man: "1"); result = EstimateHandValue(tiles_, winTile); AreEqual(4, result.Han); AreEqual(25, result.Fu); }
public void IsSanshokuTest() { var tiles = Tiles34.Parse(man: "123", pin: "12345677", sou: "123"); IsTrue(new Sanshoku().IsConditionMet(Hand(tiles))); tiles = Tiles34.Parse(man: "23455", pin: "123", sou: "123456"); IsFalse(new Sanshoku().IsConditionMet(Hand(tiles))); var tiles_ = TileIds.Parse(man: "12399", pin: "123", sou: "123456"); var winTile = TileId.Parse(man: "2"); var result = EstimateHandValue(tiles_, winTile); AreEqual(null, result.Error); AreEqual(2, result.Han); AreEqual(40, result.Fu); AreEqual(1, result.Yaku.Count); var melds = new List <Meld> { MakeMeld(MeldType.CHI, sou: "123") }; result = EstimateHandValue(tiles_, winTile, melds); AreEqual(null, result.Error); AreEqual(1, result.Han); AreEqual(30, result.Fu); AreEqual(1, result.Yaku.Count); }
public void IsJunchanTest() { var tiles = Tiles34.Parse(man: "123789", pin: "12399", sou: "789"); IsTrue(new Junchan().IsConditionMet(Hand(tiles))); tiles = Tiles34.Parse(man: "111999", sou: "111", honors: "22333"); IsFalse(new Junchan().IsConditionMet(Hand(tiles))); tiles = Tiles34.Parse(man: "111999", pin: "11999", sou: "111999"); IsFalse(new Junchan().IsConditionMet(Hand(tiles))); var tiles_ = TileIds.Parse(man: "123789", pin: "12399", sou: "789"); var winTile = TileId.Parse(man: "2"); var result = EstimateHandValue(tiles_, winTile); AreEqual(null, result.Error); AreEqual(3, result.Han); AreEqual(40, result.Fu); AreEqual(1, result.Yaku.Count); var melds = new List <Meld> { MakeMeld(MeldType.CHI, sou: "789") }; result = EstimateHandValue(tiles_, winTile, melds); AreEqual(null, result.Error); AreEqual(2, result.Han); AreEqual(30, result.Fu); AreEqual(1, result.Yaku.Count); }
public void IsIttsuTest() { var tiles = Tiles34.Parse(man: "123456789", sou: "123", honors: "22"); IsTrue(new Ittsu().IsConditionMet(Hand(tiles))); tiles = Tiles34.Parse(man: "112233456789", honors: "22"); IsTrue(new Ittsu().IsConditionMet(Hand(tiles))); tiles = Tiles34.Parse(man: "122334567789", honors: "11"); IsFalse(new Ittsu().IsConditionMet(Hand(tiles))); var tiles_ = TileIds.Parse(man: "123456789", sou: "123", honors: "22"); var winTile = TileId.Parse(sou: "3"); var result = EstimateHandValue(tiles_, winTile); AreEqual(null, result.Error); AreEqual(2, result.Han); AreEqual(40, result.Fu); AreEqual(1, result.Yaku.Count); var melds = new List <Meld> { MakeMeld(MeldType.CHI, man: "123") }; result = EstimateHandValue(tiles_, winTile, melds); AreEqual(null, result.Error); AreEqual(1, result.Han); AreEqual(30, result.Fu); AreEqual(1, result.Yaku.Count); }
public void IsRyanpeikouTest() { var tiles = Tiles34.Parse(man: "22", pin: "223344", sou: "112233"); IsTrue(new Ryanpeikou().IsConditionMet(Hand(tiles, 1))); tiles = Tiles34.Parse(man: "22", sou: "111122223333"); IsTrue(new Ryanpeikou().IsConditionMet(Hand(tiles, 1))); tiles = Tiles34.Parse(man: "123", pin: "23444", sou: "112233"); IsFalse(new Ryanpeikou().IsConditionMet(Hand(tiles))); var tiles_ = TileIds.Parse(man: "33", pin: "223344", sou: "112233"); var winTile = TileId.Parse(pin: "3"); var result = EstimateHandValue(tiles_, winTile); AreEqual(null, result.Error); AreEqual(3, result.Han); AreEqual(40, result.Fu); AreEqual(1, result.Yaku.Count); var melds = new List <Meld> { MakeMeld(MeldType.CHI, sou: "123") }; result = EstimateHandValue(tiles_, winTile, melds); AreNotEqual(null, result.Error); }
public void IsEastTest() { var(playerWind, roundWind) = (EAST, WEST); var tiles = Tiles34.Parse(man: "23422", sou: "234567", honors: "111"); IsTrue(new YakuhaiEast().IsConditionMet(Hand(tiles), new object[] { playerWind, roundWind })); var tiles_ = TileIds.Parse(man: "23422", sou: "234567", honors: "111"); var winTile = TileId.Parse(honors: "1"); var result = EstimateHandValue(tiles_, winTile, config: new HandConfig( isTsumo: false, isRiichi: false, playerWind: playerWind, roundWind: roundWind)); AreEqual(null, result.Error); AreEqual(1, result.Han); AreEqual(40, result.Fu); AreEqual(1, result.Yaku.Count); roundWind = EAST; result = EstimateHandValue(tiles_, winTile, config: new HandConfig( isTsumo: false, isRiichi: false, playerWind: playerWind, roundWind: roundWind)); AreEqual(null, result.Error); AreEqual(2, result.Han); AreEqual(40, result.Fu); AreEqual(2, result.Yaku.Count); }
//Tilesの各intをバイナリにしたものが右から3桁ずつ並ぶ //[0,1,2,3,4]=>0b100_011_010_001_000 private static int ToMeld(Tiles34 tiles, int d) { var result = 0; for (var i = 0; i < 9; i++) { result |= tiles[d + i] << i * 3; } return(result); }
private static void Init(Tiles34 tiles) { tiles_ = tiles; numberMelds_ = 0; numberTatsu_ = 0; numberPairs_ = 0; numberJidahai_ = 0; numberCharacters_ = 0; numberIsolatedTiles_ = 0; minShanten_ = 8; }
public void OneLineStringToTilesSet() { var initialString = "789m456p555s11222z"; var tiles = Tiles34.Parse(str: initialString); AreEqual(34, tiles.Count); var newString = tiles.ToOneLineString(); AreEqual(initialString, newString); }
public void SecondOneSuitHandDividing() { var tiles34 = Tiles34.Parse(sou: "111123666789", honors: "11"); var result = DivideHand(tiles34); AreEqual(1, result.Count); CollectionAssert.AreEqual(new List <string> { "111s", "123s", "666s", "789s", "11z" }, ToString(result[0])); }
public void HandWithPairsDividing() { var tiles34 = Tiles34.Parse(man: "23444", pin: "344556", sou: "333"); var result = DivideHand(tiles34); AreEqual(1, result.Count); CollectionAssert.AreEqual(new List <string> { "234m", "44m", "345p", "456p", "333s" }, ToString(result[0])); }
public void SecondSimpleHandDividing() { var tiles34 = Tiles34.Parse(man: "123", pin: "123", sou: "123", honors: "11222"); var result = DivideHand(tiles34); AreEqual(1, result.Count); CollectionAssert.AreEqual(new List <string> { "123m", "123p", "123s", "11z", "222z" }, ToString(result[0])); }
public void SimpleHandDividingTest() { var tiles34 = Tiles34.Parse(man: "234567", sou: "23455", honors: "777"); var result = DivideHand(tiles34); AreEqual(1, result.Count); CollectionAssert.AreEqual(new List <string> { "234m", "567m", "234s", "55s", "777z" }, ToString(result[0])); }
public void OneSuitHandDividingTest() { var tiles34 = Tiles34.Parse(man: "11122233388899"); var result = DivideHand(tiles34); AreEqual(2, result.Count); CollectionAssert.AreEqual(new List <string> { "111m", "222m", "333m", "888m", "99m" }, ToString(result[0])); CollectionAssert.AreEqual(new List <string> { "123m", "123m", "123m", "888m", "99m" }, ToString(result[1])); }
public void ChiitoitsuLikeHandDividing() { var tiles34 = Tiles34.Parse(man: "112233", pin: "99", sou: "445566"); var result = DivideHand(tiles34); AreEqual(2, result.Count); CollectionAssert.AreEqual(new List <string> { "11m", "22m", "33m", "99p", "44s", "55s", "66s" }, ToString(result[0])); CollectionAssert.AreEqual(new List <string> { "123m", "123m", "99p", "456s", "456s" }, ToString(result[1])); }
public void IsDaisuushiTest() { var tiles = Tiles34.Parse(sou: "22", honors: "111222333444"); IsTrue(new DaiSuushi().IsConditionMet(Hand(tiles))); var tiles_ = TileIds.Parse(sou: "22", honors: "111222333444"); var winTile = TileId.Parse(honors: "4"); var result = EstimateHandValue(tiles_, winTile); AreEqual(null, result.Error); AreEqual(26, result.Han); AreEqual(60, result.Fu); AreEqual(1, result.Yaku.Count); }
public void IsRyuisouTest() { var tiles = Tiles34.Parse(sou: "22334466888", honors: "666"); IsTrue(new Ryuuiisou().IsConditionMet(Hand(tiles))); var tiles_ = TileIds.Parse(sou: "22334466888", honors: "666"); var winTile = TileId.Parse(honors: "6"); var result = EstimateHandValue(tiles_, winTile); AreEqual(null, result.Error); AreEqual(13, result.Han); AreEqual(40, result.Fu); AreEqual(1, result.Yaku.Count); }
public void IsDaisangenTest() { var tiles = Tiles34.Parse(man: "22", sou: "123", honors: "555666777"); IsTrue(new Daisangen().IsConditionMet(Hand(tiles))); var tiles_ = TileIds.Parse(man: "22", sou: "123", honors: "555666777"); var winTile = TileId.Parse(honors: "7"); var result = EstimateHandValue(tiles_, winTile); AreEqual(null, result.Error); AreEqual(13, result.Han); AreEqual(50, result.Fu); AreEqual(1, result.Yaku.Count); }
public void IsChinrotoTest() { var tiles = Tiles34.Parse(man: "111999", pin: "99", sou: "111999"); IsTrue(new Chinroutou().IsConditionMet(Hand(tiles))); var tiles_ = TileIds.Parse(man: "111999", pin: "99", sou: "111222"); var winTile = TileId.Parse(pin: "9"); var result = EstimateHandValue(tiles_, winTile); AreEqual(null, result.Error); AreEqual(26, result.Han); AreEqual(60, result.Fu); AreEqual(1, result.Yaku.Count); }
public void IsChunTest() { var tiles = Tiles34.Parse(man: "23422", sou: "234567", honors: "777"); IsTrue(new Chun().IsConditionMet(Hand(tiles))); var tiles_ = TileIds.Parse(man: "23422", sou: "234567", honors: "777"); var winTile = TileId.Parse(honors: "7"); var result = EstimateHandValue(tiles_, winTile, config: new HandConfig(isTsumo: false, isRiichi: false)); AreEqual(null, result.Error); AreEqual(1, result.Han); AreEqual(40, result.Fu); AreEqual(1, result.Yaku.Count); }
public void ThirdOneSuitHandDividing() { var tiles34 = Tiles34.Parse(pin: "234777888999", honors: "22"); var melds = new List <Meld> { MakeMeld(MeldType.CHI, pin: "789"), MakeMeld(MeldType.CHI, pin: "234") }; var result = DivideHand(tiles34, melds); AreEqual(1, result.Count); CollectionAssert.AreEqual(new List <string> { "234p", "789p", "789p", "789p", "22z" }, ToString(result[0])); }
public void IsChitoitsuHandTest() { var tiles = Tiles34.Parse(man: "113355", pin: "11", sou: "113355"); IsTrue(new Chiitoitsu().IsConditionMet(Hand(tiles))); tiles = Tiles34.Parse(man: "2299", pin: "1199", sou: "2299", honors: "44"); IsTrue(new Chiitoitsu().IsConditionMet(Hand(tiles))); var tiles_ = TileIds.Parse(man: "113355", pin: "11", sou: "113355"); var winTile = TileId.Parse(pin: "1"); var result = EstimateHandValue(tiles_, winTile); AreEqual(null, result.Error); AreEqual(2, result.Han); AreEqual(25, result.Fu); AreEqual(1, result.Yaku.Count); }
public void IsTanyaoTest() { var tiles = Tiles34.Parse(man: "234567", pin: "22", sou: "234567"); IsTrue(new Tanyao().IsConditionMet(Hand(tiles))); tiles = Tiles34.Parse(man: "234567", pin: "22", sou: "123456"); IsFalse(new Tanyao().IsConditionMet(Hand(tiles))); tiles = Tiles34.Parse(man: "234567", sou: "234567", honors: "22"); IsFalse(new Tanyao().IsConditionMet(Hand(tiles))); var tiles_ = TileIds.Parse(man: "234567", pin: "22", sou: "234567"); var winTile = TileId.Parse(man: "7"); var result = EstimateHandValue(tiles_, winTile, config: new HandConfig(isTsumo: false, isRiichi: true)); AreEqual(null, result.Error); AreEqual(3, result.Han); AreEqual(30, result.Fu); AreEqual(3, result.Yaku.Count); tiles_ = TileIds.Parse(man: "234567", pin: "22", sou: "234567"); winTile = TileId.Parse(man: "7"); var melds = new List <Meld> { MakeMeld(MeldType.CHI, sou: "234") }; result = EstimateHandValue( tiles_, winTile, melds, config: new HandConfig(options: new OptionalRules(hasOpenTanyao: true))); AreEqual(null, result.Error); AreEqual(1, result.Han); AreEqual(30, result.Fu); AreEqual(1, result.Yaku.Count); tiles_ = TileIds.Parse(man: "234567", pin: "22", sou: "234567"); winTile = TileId.Parse(man: "7"); melds = new List <Meld> { MakeMeld(MeldType.CHI, sou: "234") }; result = EstimateHandValue( tiles_, winTile, melds, config: new HandConfig(options: new OptionalRules(hasOpenTanyao: false))); AreNotEqual(null, result.Error); }
public void IsSanankouTest() { var tiles = Tiles34.Parse(man: "333", pin: "44555", sou: "111444"); var winTile = TileId.Parse(sou: "4"); var melds = new List <Meld> { MakeMeld(MeldType.PON, sou: "111"), MakeMeld(MeldType.PON, sou: "444") }; IsFalse(new Sanankou().IsConditionMet(Hand(tiles), new object[] { winTile, melds, false })); melds = new List <Meld> { MakeMeld(MeldType.PON, sou: "111") }; IsFalse(new Sanankou().IsConditionMet(Hand(tiles), new object[] { winTile, melds, false })); IsTrue(new Sanankou().IsConditionMet(Hand(tiles), new object[] { winTile, melds, true })); tiles = Tiles34.Parse(pin: "444789999", honors: "22333"); winTile = TileId.Parse(pin: "9"); IsTrue(new Sanankou().IsConditionMet(Hand(tiles), new object[] { winTile, new List <Meld>(), false })); melds = new List <Meld> { MakeMeld(MeldType.CHI, pin: "456") }; tiles = Tiles34.Parse(pin: "222456666777", honors: "77"); winTile = TileId.Parse(pin: "6"); IsFalse(new Sanankou().IsConditionMet(Hand(tiles), new object[] { winTile, melds, false })); var tiles_ = TileIds.Parse(man: "333", pin: "44555", sou: "123444"); melds = new List <Meld> { MakeMeld(MeldType.CHI, sou: "123") }; winTile = TileId.Parse(pin: "5"); var result = EstimateHandValue(tiles_, winTile, melds, config: new HandConfig(isTsumo: true)); AreEqual(null, result.Error); AreEqual(2, result.Han); AreEqual(40, result.Fu); AreEqual(1, result.Yaku.Count); }
private static TileKinds FindPairs(Tiles34 tiles34, int firstIndex = 0, int secondIndex = 33) { var pairIndices = new TileKinds(); for (var x = firstIndex; x <= secondIndex; x++) { //字牌の刻子は無視する(途中で分断して対子にはできない) if (HONOR_INDICES.Contains(x) && tiles34[x] != 2) { continue; } if (tiles34[x] >= 2) { pairIndices.Add(new TileKind(x)); } } return(pairIndices); }
public void IsTsuisouTest() { var tiles = Tiles34.Parse(honors: "11122233366677"); IsTrue(new Tsuuiisou().IsConditionMet(Hand(tiles))); tiles = Tiles34.Parse(honors: "11223344556677"); IsTrue(new Tsuuiisou().IsConditionMet(Hand(tiles))); tiles = Tiles34.Parse(honors: "1133445577", pin: "88", sou: "11"); IsFalse(new Tsuuiisou().IsConditionMet(Hand(tiles))); var tiles_ = TileIds.Parse(honors: "11223344556677"); var winTile = TileId.Parse(honors: "7"); var result = EstimateHandValue(tiles_, winTile); AreEqual(null, result.Error); AreEqual(13, result.Han); AreEqual(25, result.Fu); AreEqual(1, result.Yaku.Count); }
public void IsSanshokuDoukouTest() { var tiles = Tiles34.Parse(man: "111", pin: "11145677", sou: "111"); IsTrue(new SanshokuDoukou().IsConditionMet(Hand(tiles))); tiles = Tiles34.Parse(man: "222", pin: "33344455", sou: "111"); IsFalse(new SanshokuDoukou().IsConditionMet(Hand(tiles))); var tiles_ = TileIds.Parse(man: "222", pin: "22245699", sou: "222"); var winTile = TileId.Parse(pin: "9"); var melds = new List <Meld> { MakeMeld(MeldType.PON, sou: "222") }; var result = EstimateHandValue(tiles_, winTile, melds); AreEqual(null, result.Error); AreEqual(2, result.Han); AreEqual(40, result.Fu); AreEqual(1, result.Yaku.Count); }
public void FindIsolatedTilesTest() { var hand = Tiles34.Parse(man: "25", pin: "15678", sou: "1369", honors: "124"); var isoTiles = hand.FindIsolatedTileIndices(); IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(man: "1").Value)); IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(man: "2").Value)); IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(man: "3").Value)); IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(man: "4").Value)); IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(man: "5").Value)); IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(man: "6").Value)); IsTrue(isoTiles.Select(t => t.Value).Contains(StringToTileKind(man: "7").Value)); IsTrue(isoTiles.Select(t => t.Value).Contains(StringToTileKind(man: "8").Value)); IsTrue(isoTiles.Select(t => t.Value).Contains(StringToTileKind(man: "9").Value)); IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(pin: "1").Value)); IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(pin: "2").Value)); IsTrue(isoTiles.Select(t => t.Value).Contains(StringToTileKind(pin: "3").Value)); IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(pin: "4").Value)); IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(pin: "5").Value)); IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(pin: "6").Value)); IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(pin: "7").Value)); IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(pin: "8").Value)); IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(pin: "9").Value)); IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(sou: "1").Value)); IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(sou: "2").Value)); IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(sou: "3").Value)); IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(sou: "4").Value)); IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(sou: "5").Value)); IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(sou: "6").Value)); IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(sou: "7").Value)); IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(sou: "8").Value)); IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(sou: "9").Value)); IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(honors: "1").Value)); IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(honors: "2").Value)); IsTrue(isoTiles.Select(t => t.Value).Contains(StringToTileKind(honors: "3").Value)); IsFalse(isoTiles.Select(t => t.Value).Contains(StringToTileKind(honors: "4").Value)); IsTrue(isoTiles.Select(t => t.Value).Contains(StringToTileKind(honors: "5").Value)); IsTrue(isoTiles.Select(t => t.Value).Contains(StringToTileKind(honors: "6").Value)); IsTrue(isoTiles.Select(t => t.Value).Contains(StringToTileKind(honors: "7").Value)); }
public void IsStrictlyIsolatedTilesTest() { var hand = Tiles34.Parse(man: "25", pin: "15678", sou: "1399", honors: "1224"); IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(man: "1"))); IsTrue(hand.IsTileStrictlyIsolated(StringToTileKind(man: "2"))); IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(man: "3"))); IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(man: "4"))); IsTrue(hand.IsTileStrictlyIsolated(StringToTileKind(man: "5"))); IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(man: "6"))); IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(man: "7"))); IsTrue(hand.IsTileStrictlyIsolated(StringToTileKind(man: "8"))); IsTrue(hand.IsTileStrictlyIsolated(StringToTileKind(man: "9"))); IsTrue(hand.IsTileStrictlyIsolated(StringToTileKind(pin: "1"))); IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(pin: "2"))); IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(pin: "3"))); IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(pin: "4"))); IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(pin: "5"))); IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(pin: "6"))); IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(pin: "7"))); IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(pin: "8"))); IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(pin: "9"))); IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(sou: "1"))); IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(sou: "2"))); IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(sou: "3"))); IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(sou: "4"))); IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(sou: "5"))); IsTrue(hand.IsTileStrictlyIsolated(StringToTileKind(sou: "6"))); IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(sou: "7"))); IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(sou: "8"))); IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(sou: "9"))); IsTrue(hand.IsTileStrictlyIsolated(StringToTileKind(honors: "1"))); IsFalse(hand.IsTileStrictlyIsolated(StringToTileKind(honors: "2"))); IsTrue(hand.IsTileStrictlyIsolated(StringToTileKind(honors: "3"))); IsTrue(hand.IsTileStrictlyIsolated(StringToTileKind(honors: "4"))); IsTrue(hand.IsTileStrictlyIsolated(StringToTileKind(honors: "5"))); IsTrue(hand.IsTileStrictlyIsolated(StringToTileKind(honors: "6"))); IsTrue(hand.IsTileStrictlyIsolated(StringToTileKind(honors: "7"))); }