コード例 #1
0
        public static BigInteger DecodeBadges(List <Badge> badges)
        {
            BigInteger finalInt       = 0;
            var        resultInt      = new List <int>();
            var        e2HttpProtocol = new E2HttpProtocol();

            for (int i = 0; i < 10; ++i)
            {
                var panelPos = e2HttpProtocol.PanelPositions[i];

                var selectedBadges = new List <Badge>();
                foreach (var badge in badges)
                {
                    if (badge.Position.X >= panelPos.X && badge.Position.X <= panelPos.X + 4 &&
                        badge.Position.Y >= panelPos.Y && badge.Position.Y <= panelPos.Y + 10)
                    {
                        var x             = badge.Position.X - panelPos.X;
                        var y             = badge.Position.Y - panelPos.Y;
                        var selectedBadge = new Badge();
                        selectedBadge.Position  = new Position(x, y);
                        selectedBadge.BadgeType = badge.BadgeType;
                        selectedBadges.Add(selectedBadge);
                    }
                }


                BadgeElement selectedBadgeElement = null;
                foreach (var badgeElement in e2HttpProtocol.BadgeElements)
                {
                    if (badgeElement.AllocatedBadges.Count != selectedBadges.Count)
                    {
                        continue;
                    }

                    bool found = true;
                    foreach (var selectedBadge in selectedBadges)
                    {
                        if (!badgeElement.AllocatedBadges.Any(s =>
                                                              s.Position.X == selectedBadge.Position.X && s.Position.Y == selectedBadge.Position.Y &&
                                                              s.BadgeType == selectedBadge.BadgeType))
                        {
                            found = false;
                            break;
                        }
                    }

                    if (found)
                    {
                        selectedBadgeElement = badgeElement;
                        break;
                    }
                }

                var index = e2HttpProtocol.BadgeElements.ToList().IndexOf(selectedBadgeElement);
                resultInt.Add(index);
            }

            Console.WriteLine(string.Join(" ", resultInt));

            for (int i = 0; i < 10; ++i)
            {
                finalInt += resultInt[i] * BigInteger.Pow(54, 10 - i - 1);
            }

            return(finalInt);
        }
コード例 #2
0
        public void InitializeBadgeElements()
        {
            for (int i = 0; i < 54; ++i)
            {
                BadgeElements[i] = new BadgeElement();
            }

            Badge badge = null;

            // 0 - 7
            BadgeElements[0] = new BadgeElement();

            badge = new Badge {
                Position = new Position(2, 2), BadgeType = BadgeType.Small
            };
            BadgeElements[1].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(1, 3), BadgeType = BadgeType.Small
            };
            BadgeElements[2].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(0, 4), BadgeType = BadgeType.Small
            };
            BadgeElements[3].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(0, 6), BadgeType = BadgeType.Small
            };
            BadgeElements[4].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(0, 8), BadgeType = BadgeType.Small
            };
            BadgeElements[5].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(1, 9), BadgeType = BadgeType.Small
            };
            BadgeElements[6].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(2, 10), BadgeType = BadgeType.Small
            };
            BadgeElements[7].AllocatedBadges.Add(badge);

            // 8 - 19
            badge = new Badge {
                Position = new Position(3, 9), BadgeType = BadgeType.Small
            };
            BadgeElements[8].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(4, 8), BadgeType = BadgeType.Small
            };
            BadgeElements[9].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(4, 6), BadgeType = BadgeType.Small
            };
            BadgeElements[10].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(4, 4), BadgeType = BadgeType.Small
            };
            BadgeElements[11].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(3, 3), BadgeType = BadgeType.Small
            };
            BadgeElements[12].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(2, 4), BadgeType = BadgeType.Small
            };
            BadgeElements[13].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(1, 5), BadgeType = BadgeType.Small
            };
            BadgeElements[14].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(1, 7), BadgeType = BadgeType.Small
            };
            BadgeElements[15].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(2, 8), BadgeType = BadgeType.Small
            };
            BadgeElements[16].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(3, 7), BadgeType = BadgeType.Small
            };
            BadgeElements[17].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(3, 5), BadgeType = BadgeType.Small
            };
            BadgeElements[18].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(2, 6), BadgeType = BadgeType.Small
            };
            BadgeElements[19].AllocatedBadges.Add(badge);

            // median

            badge = new Badge {
                Position = new Position(1, 3), BadgeType = BadgeType.Median
            };
            BadgeElements[20].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(0, 4), BadgeType = BadgeType.Median
            };
            BadgeElements[21].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(0, 6), BadgeType = BadgeType.Median
            };
            BadgeElements[22].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(1, 7), BadgeType = BadgeType.Median
            };
            BadgeElements[23].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(2, 6), BadgeType = BadgeType.Median
            };
            BadgeElements[24].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(2, 4), BadgeType = BadgeType.Median
            };
            BadgeElements[25].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(1, 5), BadgeType = BadgeType.Median
            };
            BadgeElements[26].AllocatedBadges.Add(badge);

            // large
            badge = new Badge {
                Position = new Position(0, 4), BadgeType = BadgeType.Large
            };
            BadgeElements[27].AllocatedBadges.Add(badge);

            // 28 - 33
            badge = new Badge {
                Position = new Position(2, 2), BadgeType = BadgeType.Small
            };
            BadgeElements[28].AllocatedBadges.Add(badge);
            badge = new Badge {
                Position = new Position(2, 10), BadgeType = BadgeType.Small
            };
            BadgeElements[28].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(0, 4), BadgeType = BadgeType.Small
            };
            BadgeElements[29].AllocatedBadges.Add(badge);
            badge = new Badge {
                Position = new Position(4, 8), BadgeType = BadgeType.Small
            };
            BadgeElements[29].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(0, 8), BadgeType = BadgeType.Small
            };
            BadgeElements[30].AllocatedBadges.Add(badge);
            badge = new Badge {
                Position = new Position(4, 4), BadgeType = BadgeType.Small
            };
            BadgeElements[30].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(2, 2), BadgeType = BadgeType.Small
            };
            BadgeElements[31].AllocatedBadges.Add(badge);
            badge = new Badge {
                Position = new Position(0, 8), BadgeType = BadgeType.Small
            };
            BadgeElements[31].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(3, 3), BadgeType = BadgeType.Small
            };
            BadgeElements[32].AllocatedBadges.Add(badge);
            badge = new Badge {
                Position = new Position(1, 9), BadgeType = BadgeType.Small
            };
            BadgeElements[32].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(4, 4), BadgeType = BadgeType.Small
            };
            BadgeElements[33].AllocatedBadges.Add(badge);
            badge = new Badge {
                Position = new Position(2, 10), BadgeType = BadgeType.Small
            };
            BadgeElements[33].AllocatedBadges.Add(badge);

            // 34 - 39
            badge = new Badge {
                Position = new Position(2, 2), BadgeType = BadgeType.Small
            };
            BadgeElements[34].AllocatedBadges.Add(badge);
            badge = new Badge {
                Position = new Position(4, 8), BadgeType = BadgeType.Small
            };
            BadgeElements[34].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(1, 3), BadgeType = BadgeType.Small
            };
            BadgeElements[35].AllocatedBadges.Add(badge);
            badge = new Badge {
                Position = new Position(3, 9), BadgeType = BadgeType.Small
            };
            BadgeElements[35].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(0, 4), BadgeType = BadgeType.Small
            };
            BadgeElements[36].AllocatedBadges.Add(badge);
            badge = new Badge {
                Position = new Position(2, 10), BadgeType = BadgeType.Small
            };
            BadgeElements[36].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(0, 4), BadgeType = BadgeType.Small
            };
            BadgeElements[37].AllocatedBadges.Add(badge);
            badge = new Badge {
                Position = new Position(4, 4), BadgeType = BadgeType.Small
            };
            BadgeElements[37].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(0, 6), BadgeType = BadgeType.Small
            };
            BadgeElements[38].AllocatedBadges.Add(badge);
            badge = new Badge {
                Position = new Position(4, 6), BadgeType = BadgeType.Small
            };
            BadgeElements[38].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(0, 8), BadgeType = BadgeType.Small
            };
            BadgeElements[39].AllocatedBadges.Add(badge);
            badge = new Badge {
                Position = new Position(4, 8), BadgeType = BadgeType.Small
            };
            BadgeElements[39].AllocatedBadges.Add(badge);

            // 40 - 45
            badge = new Badge {
                Position = new Position(2, 2), BadgeType = BadgeType.Small
            };
            BadgeElements[40].AllocatedBadges.Add(badge);
            badge = new Badge {
                Position = new Position(1, 9), BadgeType = BadgeType.Small
            };
            BadgeElements[40].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(2, 2), BadgeType = BadgeType.Small
            };
            BadgeElements[41].AllocatedBadges.Add(badge);
            badge = new Badge {
                Position = new Position(3, 9), BadgeType = BadgeType.Small
            };
            BadgeElements[41].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(0, 4), BadgeType = BadgeType.Small
            };
            BadgeElements[42].AllocatedBadges.Add(badge);
            badge = new Badge {
                Position = new Position(3, 9), BadgeType = BadgeType.Small
            };
            BadgeElements[42].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(0, 4), BadgeType = BadgeType.Small
            };
            BadgeElements[43].AllocatedBadges.Add(badge);
            badge = new Badge {
                Position = new Position(4, 6), BadgeType = BadgeType.Small
            };
            BadgeElements[43].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(0, 8), BadgeType = BadgeType.Small
            };
            BadgeElements[44].AllocatedBadges.Add(badge);
            badge = new Badge {
                Position = new Position(4, 6), BadgeType = BadgeType.Small
            };
            BadgeElements[44].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(0, 8), BadgeType = BadgeType.Small
            };
            BadgeElements[45].AllocatedBadges.Add(badge);
            badge = new Badge {
                Position = new Position(3, 3), BadgeType = BadgeType.Small
            };
            BadgeElements[45].AllocatedBadges.Add(badge);

            // 40 - 45
            badge = new Badge {
                Position = new Position(3, 3), BadgeType = BadgeType.Small
            };
            BadgeElements[46].AllocatedBadges.Add(badge);
            badge = new Badge {
                Position = new Position(2, 10), BadgeType = BadgeType.Small
            };
            BadgeElements[46].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(1, 3), BadgeType = BadgeType.Small
            };
            BadgeElements[47].AllocatedBadges.Add(badge);
            badge = new Badge {
                Position = new Position(2, 10), BadgeType = BadgeType.Small
            };
            BadgeElements[47].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(1, 3), BadgeType = BadgeType.Small
            };
            BadgeElements[48].AllocatedBadges.Add(badge);
            badge = new Badge {
                Position = new Position(4, 8), BadgeType = BadgeType.Small
            };
            BadgeElements[48].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(0, 6), BadgeType = BadgeType.Small
            };
            BadgeElements[49].AllocatedBadges.Add(badge);
            badge = new Badge {
                Position = new Position(4, 8), BadgeType = BadgeType.Small
            };
            BadgeElements[49].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(0, 6), BadgeType = BadgeType.Small
            };
            BadgeElements[50].AllocatedBadges.Add(badge);
            badge = new Badge {
                Position = new Position(4, 4), BadgeType = BadgeType.Small
            };
            BadgeElements[50].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(4, 4), BadgeType = BadgeType.Small
            };
            BadgeElements[51].AllocatedBadges.Add(badge);
            badge = new Badge {
                Position = new Position(1, 9), BadgeType = BadgeType.Small
            };
            BadgeElements[51].AllocatedBadges.Add(badge);

            // 52, 53
            badge = new Badge {
                Position = new Position(2, 2), BadgeType = BadgeType.Small
            };
            BadgeElements[52].AllocatedBadges.Add(badge);
            badge = new Badge {
                Position = new Position(0, 8), BadgeType = BadgeType.Small
            };
            BadgeElements[52].AllocatedBadges.Add(badge);
            badge = new Badge {
                Position = new Position(4, 8), BadgeType = BadgeType.Small
            };
            BadgeElements[52].AllocatedBadges.Add(badge);

            badge = new Badge {
                Position = new Position(0, 4), BadgeType = BadgeType.Small
            };
            BadgeElements[53].AllocatedBadges.Add(badge);
            badge = new Badge {
                Position = new Position(4, 4), BadgeType = BadgeType.Small
            };
            BadgeElements[53].AllocatedBadges.Add(badge);
            badge = new Badge {
                Position = new Position(2, 10), BadgeType = BadgeType.Small
            };
            BadgeElements[53].AllocatedBadges.Add(badge);
        }