Example #1
0
        public object Part1()
        {
            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 newValue = mask.Mask(a.value);
                    if (mem.ContainsKey(a.index))
                    {
                        mem[a.index] = newValue;
                    }
                    else
                    {
                        mem.Add(a.index, newValue);
                    }
                }
            }
            var sum = (ulong)0;

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