public static void Part2(string[] data)
        {
            Dictionary <long, long> memory = new Dictionary <long, long>();
            string mask = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";

            for (int i = 0; i < data.Length; i++)
            {
                if (data[i].Substring(0, 4) == "mask")
                {
                    mask = Parser.GetMask(data[i]);
                }
                else
                {
                    (long memSlot, long value) = Parser.GetMem(data[i]);

                    BinaryNum addr     = new BinaryNum(memSlot);
                    string    currMask = addr.AddrMask(mask);

                    AddressCombos = new List <string>();
                    GetAddrCombos(
                        currMask.ToCharArray(),
                        Array.IndexOf(currMask.ToCharArray(), 'X')
                        );

                    foreach (var address in AddressCombos)
                    {
                        memory[Convert.ToInt64(address, 2)] = value;
                    }
                }
            }

            Console.WriteLine($"The total of the memory slots is: {memory.Sum(addr => addr.Value)}.");
        }
        public static void Part1(string[] data)
        {
            Dictionary <long, long> memory = new Dictionary <long, long>();

            string mask = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";

            for (int i = 0; i < data.Length; i++)
            {
                if (data[i].Substring(0, 4) == "mask")
                {
                    mask = Parser.GetMask(data[i]);
                }
                else
                {
                    (long memSlot, long value) = Parser.GetMem(data[i]);
                    BinaryNum num = new BinaryNum(value);
                    memory[memSlot] = num.MemMask(mask);
                }
            }

            Console.WriteLine($"The total of the memory slots is: {memory.Sum(addr => addr.Value)}.");
        }