コード例 #1
0
 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
     });
コード例 #2
0
ファイル: CAHelper.cs プロジェクト: Kapibarabanka/CellWorld
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        public DirectCondition(object model)
        {
            var directModel = JsonSerializer.Deserialize <DirectConditionModel>(model.ToString());

            ConditionArea = new CellStateArea(directModel.Condition);
        }
コード例 #6
0
 public DirectCondition(CellStateArea conditionArea)
 {
     ConditionArea = conditionArea;
 }