コード例 #1
0
ファイル: Mask.cs プロジェクト: MetaColon/MinesweeperKi
        public IEnumerable <Coordinate> FindUnknownPointIntersections(KnownField field)
        {
            if (Values.Count(i => i == MaskValue.Unknown) != 1)
            {
                throw new Exception("Invalid UnknownPoints count!");
            }

            for (var x = 0; x <= field.SizeX - SizeX; x++)
            {
                for (var y = 0; y <= field.SizeY - SizeY; y++)
                {
                    var xF = -1;
                    var yF = -1;
                    for (var xI = 0; xI < SizeX; xI++)
                    {
                        for (var yI = 0; yI < SizeY; yI++)
                        {
                            var maskValue  = Values [yI * SizeX + xI];
                            var fieldValue = field.Get(x + xI, y + yI);
                            if (fieldValue == null)
                            {
                                throw new Exception("Invalid fieldValue!");
                            }
                            if (!Fits(maskValue, fieldValue.Value, field.GetRemainingCount(x + xI, y + yI)))
                            {
                                goto cont;
                            }

                            if (maskValue != MaskValue.Unknown)
                            {
                                continue;
                            }
                            xF = x + xI;
                            yF = y + yI;
                        }
                    }

                    Debug.WriteLine($"{Name} matched at {xF} / {yF}");
                    yield return(C(xF, yF));

                    cont :;
                }
            }
        }
コード例 #2
0
ファイル: MaskTests.cs プロジェクト: MetaColon/MinesweeperKi
        public void SpeicificNullPointIntersectionTest1()
        {
            var field = new KnownField(3, 3);

            field.Set(0, 0, KnownProperty.Unknown);
            field.Set(0, 1, KnownProperty.Unknown);
            field.Set(0, 2, KnownProperty.Unknown);
            field.Set(1, 0, (KnownProperty)1);
            field.Set(1, 1, (KnownProperty)3);
            field.Set(1, 2, KnownProperty.Flagged);
            field.Set(2, 0, KnownProperty.Empty);
            field.Set(2, 1, (KnownProperty)2);
            field.Set(2, 2, KnownProperty.Flagged);

            var masks   = EdgeMasks.AllMasks;
            var matches = masks.SelectMany(mask => mask.FindUnknownPointIntersections(field));

            Assert.AreEqual(0, matches.Count());
        }
コード例 #3
0
ファイル: MaskTests.cs プロジェクト: MetaColon/MinesweeperKi
        public void GeneralNullPointIntersectionTest()
        {
            var field = new KnownField(3, 3);

            field.Set(0, 0, KnownProperty.Unknown);
            field.Set(0, 1, KnownProperty.Unknown);
            field.Set(0, 2, KnownProperty.Unknown);
            field.Set(1, 0, KnownProperty.Unknown);
            field.Set(1, 1, KnownProperty.Unknown);
            field.Set(1, 2, KnownProperty.Unknown);
            field.Set(2, 0, (KnownProperty)2);
            field.Set(2, 1, (KnownProperty)2);
            field.Set(2, 2, (KnownProperty)1);

            var mask    = EdgeMasks.LeftTop;
            var matches = mask.FindUnknownPointIntersections(field);

            Assert.AreEqual(1, matches.Count());
        }
コード例 #4
0
ファイル: CertSubject.cs プロジェクト: ridhouan/teamlab.v6.5
 public string Get(KnownField field)
 {
     return Get(NameMap[(int) field]);
 }
コード例 #5
0
 public static string GetStorageValueForField(KnownField field)
 {
     return(NSString.FromHandle(global::ApiDefinition.Messaging.IntPtr_objc_msgSend_UInt64(class_ptr, Selector.GetHandle("getStorageValueForField:"), (UInt64)field)));
 }
コード例 #6
0
 public string Get(KnownField field)
 {
     return(Get(NameMap[(int)field]));
 }