Esempio n. 1
0
        /// <summary>
        ///     Fills the possible Ips list, based on the mask
        /// </summary>
        public void GenerateIps()
        {
            var matches = MaskRegex.Matches(Mask);

            PossibleIps.Clear();

            for (var j = 0; j < 255; j++)
            {
                if (matches.Count > 1)
                {
                    for (var i = 0; i < 255; i++)
                    {
                        if (matches.Count > 2)
                        {
                            for (var k = 0; k < 255; k++)
                            {
                                PossibleIps.Add(string.Format(Mask, j, i, k));
                            }
                        }
                        else
                        {
                            PossibleIps.Add(string.Format(Mask, j, i));
                        }
                    }
                }
                else
                {
                    PossibleIps.Add(string.Format(Mask, j));
                }
            }
        }
Esempio n. 2
0
        public override long Initialize(IEnumerable <string> initializationProgram)
        {
            var currentMask = string.Empty;
            var memory      = new Dictionary <int, long>();

            foreach (var command in initializationProgram)
            {
                var mem = MemRegex.Match(command);
                if (mem.Success)
                {
                    var memAddress  = int.Parse(mem.Groups[1].Value);
                    var value       = int.Parse(mem.Groups[2].Value);
                    var maskedValue = ApplyMask(value, currentMask);

                    if (memory.ContainsKey(memAddress))
                    {
                        memory[memAddress] = maskedValue;
                    }
                    else
                    {
                        memory.Add(memAddress, maskedValue);
                    }
                }
                else
                {
                    var mask = MaskRegex.Match(command);
                    if (mask.Success)
                    {
                        currentMask = mask.Groups[1].Value;
                    }
                }
            }

            var sum = memory.Aggregate(0L, (currentSum, memCell) => currentSum + memCell.Value);

            return(sum);
        }