public bool IsApplicable(CellStateArea cellNeighbors) { return(Operator switch { "not" => !RightCondition.IsApplicable(cellNeighbors), "and" => LeftCondition.IsApplicable(cellNeighbors) && RightCondition.IsApplicable(cellNeighbors), "or" => LeftCondition.IsApplicable(cellNeighbors) || RightCondition.IsApplicable(cellNeighbors), "xor" => LeftCondition.IsApplicable(cellNeighbors) ^ RightCondition.IsApplicable(cellNeighbors), _ => false });
private static sbyte?ApplyMooreRules(CellStateArea neighbors, IEnumerable <MooreRule> rules) { foreach (var rule in rules) { var ruleResult = rule.TryApply(neighbors); if (ruleResult != null) { return(ruleResult.Value); } } return(null); }
public bool IsApplicable(CellStateArea cellNeighbors) { for (var i = 0; i < StaticData.MoorAreaSize; i++) { if (cellNeighbors[i] != ConditionArea[i] && ConditionArea[i] != StaticData.AnyState) { return(false); } } return(true); }
public bool IsApplicable(CellStateArea cellNeighbors) { var sum = 0; for (var i = 0; i < StaticData.MoorAreaSize; i++) { if (CellsToSum[i]) { sum += cellNeighbors[i]; } } return(sum == RequiredSum); }
public DirectCondition(object model) { var directModel = JsonSerializer.Deserialize <DirectConditionModel>(model.ToString()); ConditionArea = new CellStateArea(directModel.Condition); }
public DirectCondition(CellStateArea conditionArea) { ConditionArea = conditionArea; }