static void Part2(IMessageRule messageRule) { var validMessages = messageRule.GetPossibleMatches(); var result = validMessages.Intersect(_messages).Count(); Console.WriteLine(result); }
static void Part2(IMessageRule messageRule42, IMessageRule messageRule31) { var validMessages42 = messageRule42.GetPossibleMatches(); var validMessages31 = messageRule31.GetPossibleMatches(); var result = 0; foreach (var message in _messages) { var rule42Matches = validMessages42.Select(x => Regex.Matches(message, x).Count()).Sum(); var rule31Matches = validMessages31.Select(x => Regex.Matches(message, x).Count()).Sum(); if (rule31Matches >= 1 && rule42Matches > rule31Matches) { result++; } } Console.WriteLine(result); }
protected List <string> ConcatResult(List <string> result, IMessageRule rule) { if (result.Count() == 0) { return(rule.GetPossibleMatches()); } var newResult = new List <string>(); foreach (var item in result) { foreach (var match in rule.GetPossibleMatches()) { newResult.Add(item + match); } } return(newResult); }
/// <summary> /// Get message rules /// </summary> /// <param name="theVersion"></param> /// <param name="theMessageType"></param> /// <param name="theTriggerEvent"></param> /// <returns></returns> public IMessageRule[] getMessageRules(string theVersion, string theMessageType, string theTriggerEvent) { IMessageRule[] result = new IMessageRule[0]; if (originalContext != null) { result = originalContext.getMessageRules(theVersion, theMessageType, theTriggerEvent); } foreach (ISpecificMessageRule rule in messageRules) { // Add the rule if it applies bool flag1 = rule.GetVersions().Contains("*") || rule.GetVersions().Contains(theVersion); bool flag2 = rule.GetMessageTypes().Contains("*") || rule.GetMessageTypes().Contains(theMessageType); bool flag3 = rule.GetTriggerEvents().Contains("*") || rule.GetTriggerEvents().Contains(theTriggerEvent); if (flag1 && flag2 && flag3) { List <IMessageRule> rules = new List <IMessageRule>(result); rules.Add(rule); result = rules.ToArray(); } } return(result); }
/// <summary> /// Get message rules /// </summary> /// <param name="theVersion"></param> /// <param name="theMessageType"></param> /// <param name="theTriggerEvent"></param> /// <returns></returns> public IMessageRule[] getMessageRules(string theVersion, string theMessageType, string theTriggerEvent) { IMessageRule[] result = new IMessageRule[0]; if (originalContext != null) result = originalContext.getMessageRules(theVersion, theMessageType, theTriggerEvent); foreach (ISpecificMessageRule rule in messageRules) { // Add the rule if it applies bool flag1 = rule.GetVersions().Contains("*") || rule.GetVersions().Contains(theVersion); bool flag2 = rule.GetMessageTypes().Contains("*") || rule.GetMessageTypes().Contains(theMessageType); bool flag3 = rule.GetTriggerEvents().Contains("*") || rule.GetTriggerEvents().Contains(theTriggerEvent); if (flag1 && flag2 && flag3) { List<IMessageRule> rules = new List<IMessageRule>(result); rules.Add(rule); result = rules.ToArray(); } } return result; }