public void Test_ConvertToBinary_Positive()
        {
            var binary = new BinaryNum(5);

            binary.ConvertToBinary();
            Assert.AreEqual("101", binary.BinaryNumber);
        }
Exemple #2
0
        static void Main(string[] args)
        {
            BinaryNum a = CalcOperation.Sum;

            a += CalcOperation.Mult;
            a(2.4, 35.6);
        }
        public void Test_NumberOfOnes_Positive()
        {
            var binary = new BinaryNum(5);

            binary.ConvertToBinary();
            Assert.AreEqual(2, binary.NumberOfOnes());
        }
        public void Test_NumberOfOnes_Negative()
        {
            var binary = new BinaryNum(-5);

            binary.ConvertToBinary();
            Assert.AreEqual(31, binary.NumberOfOnes());
        }
        public void Test_ConvertToBinary_Zero()
        {
            var binary = new BinaryNum(0);

            binary.ConvertToBinary();
            Assert.AreEqual("0", binary.BinaryNumber);
        }
        public void Test_ConvertToBinary_Negative()
        {
            var binary = new BinaryNum(-5);

            binary.ConvertToBinary();
            Assert.AreEqual("11111111111111111111111111111011", binary.BinaryNumber);
        }
Exemple #7
0
        public void BinaryNumberMask_WithSampleInput_ShouldReturn73()
        {
            string    mask   = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX1XXXX0X";
            BinaryNum num    = new BinaryNum(int.Parse("11"));
            long      result = num.MemMask(mask);

            Assert.Equal(73, result);
        }
Exemple #8
0
        public void Part2_WithSampleInput_ShouldReturn208()
        {
            string sampleInput = @"mask = 000000000000000000000000000000X1001X
                mem[42] = 100
                mask = 00000000000000000000000000000000X0XX
                mem[26] = 1";

            string[] program = sampleInput.Split(Environment.NewLine,
                                                 StringSplitOptions.TrimEntries |
                                                 StringSplitOptions.RemoveEmptyEntries
                                                 );
            Dictionary <long, long> memory = new Dictionary <long, long>();
            string mask = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";

            for (int i = 0; i < program.Length; i++)
            {
                if (program[i].Substring(0, 4) == "mask")
                {
                    mask = program[i].Split('=', StringSplitOptions.TrimEntries)[1];
                }
                else
                {
                    long memSlot = long.Parse(new Regex("^mem\\[([\\d]+)\\] ").Match(program[i]).Groups[1].ToString());
                    long value   = long.Parse(program[i].Split('=', StringSplitOptions.TrimEntries)[1]);

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

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

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

            long total = 0;

            foreach (long key in memory.Keys)
            {
                total += memory[key];
            }

            Assert.Equal(208, total);
        }
Exemple #9
0
        public void Part1_WithSampleInput_ShouldReturn165()
        {
            string sampleInput = @"mask = XXXXXXXXXXXXXXXXXXXXXXXXXXXXX1XXXX0X
                mem[8] = 11
                mem[7] = 101
                mem[8] = 0";

            string[] program = sampleInput.Split(Environment.NewLine,
                                                 StringSplitOptions.TrimEntries |
                                                 StringSplitOptions.RemoveEmptyEntries
                                                 );
            Dictionary <long, long> memory = new Dictionary <long, long>();
            string mask = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";

            for (int i = 0; i < program.Length; i++)
            {
                if (program[i].Substring(0, 4) == "mask")
                {
                    mask = program[i].Split('=', StringSplitOptions.TrimEntries)[1];
                }
                else
                {
                    long      memSlot = long.Parse(new Regex("^mem\\[([\\d]+)\\] ").Match(program[i]).Groups[1].ToString());
                    long      value   = long.Parse(program[i].Split('=', StringSplitOptions.TrimEntries)[1]);
                    BinaryNum num     = new BinaryNum(value);
                    long      result  = num.MemMask(mask);
                    memory[memSlot] = result;
                }
            }

            long total = 0;

            foreach (long key in memory.Keys)
            {
                total += memory[key];
            }

            Assert.Equal(165, total);
        }