예제 #1
0
 /// <summary>
 /// Decodes a deck from it's encoded string. Can display deck at https://playartifact.com/d/{url}
 /// </summary>
 /// <param name="encodedDeckString">The base64 encoded string of the deck</param>
 /// <returns></returns>
 public async Task <DecodedDeck> DecodeDeckAsync(string encodedDeckString)
 {
     if (string.IsNullOrEmpty(encodedDeckString))
     {
         return(null);
     }
     return(await DeckDecoder.DecodeAsync(encodedDeckString));
 }
예제 #2
0
 /// <summary>
 /// Decodes a deck from it's encoded string. Can display deck at https://playartifact.com/d/{url}
 /// </summary>
 /// <param name="encodedDeckString">The base64 encoded string of the deck</param>
 /// <returns></returns>
 public DecodedDeck DecodeDeck(string encodedDeckString)
 {
     if (string.IsNullOrEmpty(encodedDeckString))
     {
         return(null);
     }
     return(DeckDecoder.Decode(encodedDeckString));
 }
예제 #3
0
        private static long Puzzle(bool recursive)
        {
            var match = DeckDecoder.Match(Input.Load("Puzzles.Input.input22.txt"));

            var(deck0, deck1) = Play(
                match.Groups[2].Captures.Select(c => byte.Parse(c.Value)).ToArray(),
                match.Groups[4].Captures.Select(c => byte.Parse(c.Value)).ToArray(),
                recursive);

            var winningDeck = deck0.Any() ? deck0 : deck1;

            return(winningDeck.AsEnumerable().Reverse().Select((n, i) => ((int)n) * (i + 1)).Sum());
        }