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)}."); }