Example #1
0
        public object Part2()
        {
            var     mem  = new Dictionary <ulong, ulong>();
            Bitmask mask = null;

            foreach (var i in Instructions)
            {
                if (i.Type == InstructionType.SetMask)
                {
                    mask = (Bitmask)i.Value;
                }
                else if (i.Type == InstructionType.SetMemory)
                {
                    var a       = ((ulong index, ulong value))i.Value;
                    var indices = mask.MaskV2(a.index);
                    foreach (var i2 in indices)
                    {
                        if (mem.ContainsKey(i2))
                        {
                            mem[i2] = a.value;
                        }
                        else
                        {
                            mem.Add(i2, a.value);
                        }
                    }
                }
            }
            var sum = (ulong)0;

            foreach (var m in mem.Values)
            {
                sum += m;
            }
            return(sum);
        }