Example #1
0
        int Iterate(string input, int iterations)
        {
            var mtx     = Mtx.FromString(".#./..#/###");
            var ruleset = new RuleSet(input);

            for (var i = 0; i < iterations; i++)
            {
                mtx = ruleset.Apply(mtx);
            }
            return(mtx.Count());
        }
Example #2
0
        public RuleSet(string input)
        {
            rules2 = new Dictionary <int, Mtx>();
            rules3 = new Dictionary <int, Mtx>();

            foreach (var line in input.Split('\n'))
            {
                var parts = Regex.Split(line, " => ");
                var left  = parts[0];
                var right = parts[1];
                var rules =
                    left.Length == 5 ? rules2 :
                    left.Length == 11 ? rules3 :
                    throw new Exception();
                foreach (var mtx in Variations(Mtx.FromString(left)))
                {
                    rules[mtx.CodeNumber] = Mtx.FromString(right);
                }
            }
        }