/// <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)); }
/// <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)); }
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()); }