예제 #1
0
        /**
         * Does the computation
         */
        protected override void SolveRabbitInstance(IGH_DataAccess DA)
        {
            //Get the evolution rules of the cell
            Boolean rule111_state = false;

            DA.GetData <Boolean>(0, ref rule111_state);
            Boolean rule110_state = false;

            DA.GetData <Boolean>(1, ref rule110_state);
            Boolean rule101_state = false;

            DA.GetData <Boolean>(2, ref rule101_state);
            Boolean rule100_state = false;

            DA.GetData <Boolean>(3, ref rule100_state);
            Boolean rule011_state = false;

            DA.GetData <Boolean>(4, ref rule011_state);
            Boolean rule010_state = false;

            DA.GetData <Boolean>(5, ref rule010_state);
            Boolean rule001_state = false;

            DA.GetData <Boolean>(6, ref rule001_state);
            Boolean rule000_state = false;

            DA.GetData <Boolean>(7, ref rule000_state);

            ElementaryRule rule111 = new ElementaryRule(GH_ALIVE_STATE, GH_ALIVE_STATE, GH_ALIVE_STATE, (rule111_state)? GH_ALIVE_STATE : GH_DEAD_STATE);
            ElementaryRule rule110 = new ElementaryRule(GH_ALIVE_STATE, GH_ALIVE_STATE, GH_DEAD_STATE, (rule110_state) ? GH_ALIVE_STATE : GH_DEAD_STATE);
            ElementaryRule rule101 = new ElementaryRule(GH_ALIVE_STATE, GH_DEAD_STATE, GH_ALIVE_STATE, (rule101_state) ? GH_ALIVE_STATE : GH_DEAD_STATE);
            ElementaryRule rule100 = new ElementaryRule(GH_ALIVE_STATE, GH_DEAD_STATE, GH_DEAD_STATE, (rule100_state) ? GH_ALIVE_STATE : GH_DEAD_STATE);
            ElementaryRule rule011 = new ElementaryRule(GH_DEAD_STATE, GH_ALIVE_STATE, GH_ALIVE_STATE, (rule011_state) ? GH_ALIVE_STATE : GH_DEAD_STATE);
            ElementaryRule rule010 = new ElementaryRule(GH_DEAD_STATE, GH_ALIVE_STATE, GH_DEAD_STATE, (rule010_state) ? GH_ALIVE_STATE : GH_DEAD_STATE);
            ElementaryRule rule001 = new ElementaryRule(GH_DEAD_STATE, GH_DEAD_STATE, GH_ALIVE_STATE, (rule001_state) ? GH_ALIVE_STATE : GH_DEAD_STATE);
            ElementaryRule rule000 = new ElementaryRule(GH_DEAD_STATE, GH_DEAD_STATE, GH_DEAD_STATE, (rule000_state) ? GH_ALIVE_STATE : GH_DEAD_STATE);

            List <CellularRule> rules = new List <CellularRule>();

            rules.Add(rule111);
            rules.Add(rule110);
            rules.Add(rule101);
            rules.Add(rule100);
            rules.Add(rule011);
            rules.Add(rule010);
            rules.Add(rule001);
            rules.Add(rule000);



            ElementaryCell prototype = new ElementaryCell(-1, GH_ALIVE_STATE, GH_DEAD_STATE, rules);

            prototype.setIsPrototype(true);

            //set the output parameters
            DA.SetData(0, prototype);
        }
        public void ElementaryRuleTest()
        {
            ElementaryRule rule30 = new ElementaryRule(30);

            Assert.AreEqual(false, rule30.Next(false, false, false), "Failed for bit 0");
            Assert.AreEqual(true, rule30.Next(false, false, true), "Failed for bit 1");
            Assert.AreEqual(true, rule30.Next(false, true, false), "Failed for bit 2");
            Assert.AreEqual(true, rule30.Next(false, true, true), "Failed for bit 3");
            Assert.AreEqual(true, rule30.Next(true, false, false), "Failed for bit 4");
            Assert.AreEqual(false, rule30.Next(true, false, true), "Failed for bit 5");
            Assert.AreEqual(false, rule30.Next(true, true, false), "Failed for bit 6");
            Assert.AreEqual(false, rule30.Next(true, true, true), "Failed for bit 7");
        }