コード例 #1
0
        public void TestParseMaskOperation()
        {
            const string input    = "mask = XXXXXXXXXXXXXXXXXXXXXXXXXXXXX1XXXX0X";
            var          computer = BitMaskParser.Parse(input);

            var operation     = Assert.Single(computer.Operations);
            var maskOperation = Assert.IsType <MaskOperation>(operation);

            Assert.Equal("XXXXXXXXXXXXXXXXXXXXXXXXXXXXX1XXXX0X", maskOperation.MaskValue);
        }
コード例 #2
0
        public void SolvePuzzle1()
        {
            var input = new FileReader()
                        .GetResource("AdventOfCode2020.Tests.Day14.PuzzleInput.txt");

            var computer = BitMaskParser.Parse(input);
            var memory   = computer.RunOperations();
            var sum      = memory.GetValues().Sum();

            Assert.Equal(13865835758282L, sum);
        }
コード例 #3
0
        public void TestParseMemoryOperation()
        {
            const string input    = "mem[8] = 11";
            var          computer = BitMaskParser.Parse(input);

            var operation = Assert.Single(computer.Operations);

            var(address, value) = Assert.IsType <MemoryOperation>(operation);
            Assert.Equal(11L, value);
            Assert.Equal(8, address);
        }
コード例 #4
0
        public void Example2()
        {
            const string input = @"mask = 000000000000000000000000000000X1001X
mem[42] = 100
mask = 00000000000000000000000000000000X0XX
mem[26] = 1";

            var computer = BitMaskParser.Parse(input);
            var memory   = computer.RunOperations2();
            var sum      = memory.GetValues().Sum();

            Assert.Equal(208L, sum);
        }
コード例 #5
0
        public void Example1()
        {
            const string input = @"mask = XXXXXXXXXXXXXXXXXXXXXXXXXXXXX1XXXX0X
mem[8] = 11
mem[7] = 101
mem[8] = 0";

            var computer = BitMaskParser.Parse(input);
            var memory   = computer.RunOperations();
            var sum      = memory.GetValues().Sum();

            Assert.Equal(165L, sum);
        }