/// <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)); } } }
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); }