コード例 #1
0
ファイル: DeckCompare.cs プロジェクト: lycerius/DeckAlchemist
        public static float Compare(IMtgDeck deck1, IMtgDeck deck2)
        {
            var deck1Space = FeatureSpaceFor(deck1);
            var deck2Space = FeatureSpaceFor(deck2);

            return(VectorCompare(deck1Space, deck2Space));
        }
コード例 #2
0
 public static MongoMtgDeck FromMtgDeck(IMtgDeck deck)
 {
     return(new MongoMtgDeck
     {
         Name = deck.Name,
         Cards = deck.Cards,
         Meta = deck.Meta
     });
 }
コード例 #3
0
        public string CreateUniqueIdForDeck(IMtgDeck deck)
        {
            var orderedCards = deck.Cards.Values.OrderBy(card => card.Name);
            var builder      = new StringBuilder();

            foreach (var card in orderedCards)
            {
                builder.Append(card.Name);
            }
            var bytes  = Encoding.UTF8.GetBytes(builder.ToString());
            var hasher = new SHA256Managed();
            var id     = hasher.ComputeHash(bytes);

            return(Convert.ToBase64String(id));
        }
コード例 #4
0
ファイル: DeckCompare.cs プロジェクト: lycerius/DeckAlchemist
        public static Vector2[] FeatureSpaceFor(IMtgDeck deck)
        {
            var space = new Vector2[deck.Cards.Count];

            int i = 0;

            foreach (var key in deck.Cards.Keys)
            {
                var card = deck.Cards[key];

                var features = new Vector2(card.FeatureIndex, card.Count);

                space[i] = features;
                i++;
            }

            return(space);
        }
コード例 #5
0
 bool DifferencesExist(IMtgDeck deck1, IMtgDeck deck2)
 {
     return(deck1.Name != deck2.Name ||
            System.Math.Abs(deck1.Meta - deck2.Meta) > 0.001 ||
            CardDifferencesExist(deck1.Cards, deck2.Cards));
 }